From nobody Tue Oct 28 01:48:53 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1516211180187635.2073006167188; Wed, 17 Jan 2018 09:46:20 -0800 (PST) Received: from localhost ([::1]:51070 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebrn1-0004Oo-51 for importer@patchew.org; Wed, 17 Jan 2018 12:46:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46968) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebrij-0000RN-Gc for qemu-devel@nongnu.org; Wed, 17 Jan 2018 12:41:54 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebrii-0008Hh-EM for qemu-devel@nongnu.org; Wed, 17 Jan 2018 12:41:53 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35360) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ebrii-0008Gd-5U; Wed, 17 Jan 2018 12:41:52 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2EFD8486A1; Wed, 17 Jan 2018 17:41:51 +0000 (UTC) Received: from t460s.redhat.com (ovpn-117-185.ams2.redhat.com [10.36.117.185]) by smtp.corp.redhat.com (Postfix) with ESMTP id EED3762462; Wed, 17 Jan 2018 17:41:47 +0000 (UTC) From: David Hildenbrand To: qemu-s390x@nongnu.org, qemu-devel@nongnu.org Date: Wed, 17 Jan 2018 18:40:41 +0100 Message-Id: <20180117174047.6382-13-david@redhat.com> In-Reply-To: <20180117174047.6382-1-david@redhat.com> References: <20180117174047.6382-1-david@redhat.com> X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 17 Jan 2018 17:41:51 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v2 12/18] s390x: fix size + content of STSI blocks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Huth , David Hildenbrand , Cornelia Huck , Alexander Graf , Christian Borntraeger , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" All blocks are 4k in size, which is only true for two of them right now. Also some reserved fields were wrong, fix it and convert all reserved fields to u8. This also fixes the LPAR part output in /proc/sysinfo under TCG. (for now, everything was indicated as 0) While at it, introduce typedefs for these structs and use it in KVM code. Not changing misc_helper.c as that will be overhauled soon. Reviewed-by: Thomas Huth Signed-off-by: David Hildenbrand --- target/s390x/cpu.h | 46 ++++++++++++++++++++++++++-------------------- target/s390x/kvm.c | 2 +- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h index b4a88830de..31593a5381 100644 --- a/target/s390x/cpu.h +++ b/target/s390x/cpu.h @@ -436,29 +436,31 @@ static inline void setcc(S390CPU *cpu, uint64_t cc) #define STSI_R1_SEL2_MASK 0x000000000000ffffULL =20 /* Basic Machine Configuration */ -struct sysib_111 { - uint32_t res1[8]; +typedef struct sysib_111 { + uint8_t res1[32]; uint8_t manuf[16]; uint8_t type[4]; uint8_t res2[12]; uint8_t model[16]; uint8_t sequence[16]; uint8_t plant[4]; - uint8_t res3[156]; -}; + uint8_t res3[3996]; +} sysib_111; +QEMU_BUILD_BUG_ON(sizeof(sysib_111) !=3D 4096); =20 /* Basic Machine CPU */ -struct sysib_121 { - uint32_t res1[80]; +typedef struct sysib_121 { + uint8_t res1[80]; uint8_t sequence[16]; uint8_t plant[4]; uint8_t res2[2]; uint16_t cpu_addr; - uint8_t res3[152]; -}; + uint8_t res3[3992]; +} sysib_121; +QEMU_BUILD_BUG_ON(sizeof(sysib_121) !=3D 4096); =20 /* Basic Machine CPUs */ -struct sysib_122 { +typedef struct sysib_122 { uint8_t res1[32]; uint32_t capability; uint16_t total_cpus; @@ -466,21 +468,23 @@ struct sysib_122 { uint16_t standby_cpus; uint16_t reserved_cpus; uint16_t adjustments[2026]; -}; +} sysib_122; +QEMU_BUILD_BUG_ON(sizeof(sysib_122) !=3D 4096); =20 /* LPAR CPU */ -struct sysib_221 { - uint32_t res1[80]; +typedef struct sysib_221 { + uint8_t res1[80]; uint8_t sequence[16]; uint8_t plant[4]; uint16_t cpu_id; uint16_t cpu_addr; - uint8_t res3[152]; -}; + uint8_t res3[3992]; +} sysib_221; +QEMU_BUILD_BUG_ON(sizeof(sysib_221) !=3D 4096); =20 /* LPAR CPUs */ -struct sysib_222 { - uint32_t res1[32]; +typedef struct sysib_222 { + uint8_t res1[32]; uint16_t lpar_num; uint8_t res2; uint8_t lcpuc; @@ -493,11 +497,12 @@ struct sysib_222 { uint8_t res3[16]; uint16_t dedicated_cpus; uint16_t shared_cpus; - uint8_t res4[180]; -}; + uint8_t res4[4020]; +} sysib_222; +QEMU_BUILD_BUG_ON(sizeof(sysib_222) !=3D 4096); =20 /* VM CPUs */ -struct sysib_322 { +typedef struct sysib_322 { uint8_t res1[31]; uint8_t count; struct { @@ -516,7 +521,8 @@ struct sysib_322 { } vm[8]; uint8_t res4[1504]; uint8_t ext_names[8][256]; -}; +} sysib_322; +QEMU_BUILD_BUG_ON(sizeof(sysib_322) !=3D 4096); =20 /* MMU defines */ #define _ASCE_ORIGIN ~0xfffULL /* segment table origin = */ diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index aeec1125e1..54640aabc7 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -1666,7 +1666,7 @@ static int handle_tsch(S390CPU *cpu) =20 static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) { - struct sysib_322 sysib; + sysib_322 sysib; int del; =20 if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { --=20 2.14.3