From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476354862310.72584558357005; Wed, 10 May 2017 21:19:14 -0700 (PDT) Received: from localhost ([::1]:45869 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fZJ-0000aW-Ff for importer@patchew.org; Thu, 11 May 2017 00:19:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUt-0005Hf-Gu for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUq-0001LT-BL for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:39 -0400 Received: from ozlabs.org ([103.22.144.67]:34923) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUp-0001H1-7o; Thu, 11 May 2017 00:14:36 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ1f3Yz9sDb; Thu, 11 May 2017 14:14:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=pfPEi6CAij0RGrMc+MXkGCJvLwoc2b7wxQGnGDhRIgY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=PDJE3zMNAAmdPnEANRg0ZsAqNfcAhLfjLmdH8aIsurpjCW3Y7Ii0bO4afljh2+rlA 2pMPj4nhpDSDk7OpqWvUuzTRa6aU7ROg7WHeEbhUCHe2fJFOKaVsbPcBgln303mSdk RFdirBQEcBqZCVetjJvsdMxswvtZQiRPVbVvmHJs= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:04 +1000 Message-Id: <20170511041426.6488-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 01/23] ppc/pnv: restrict BMC object to the BMC simulator 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: C=C3=A9dric Le Goater Today, when a PowerNV guest runs, it uses the sensor definitions of the BMC simulator to populate the device tree. But an external IPMI BMC could also be used and, in that case, it is not (yet) possible to retrieve the sensor list. Generating the OEM SEL event for shutdown or reboot also does not make sense as it should be generated on the BMC side. This change allows a guest to use an 'ipmi-bmc-extern' backend to the 'isa-ipmi-bt' device and a 'chardev' for transport such as : -chardev socket,id=3Dipmi0,host=3Dlocalhost,port=3D9002,reconnect=3D10 \ -device ipmi-bmc-extern,id=3Dbmc0,chardev=3Dipmi0 \ -device isa-ipmi-bt,bmc=3Dbmc0,irq=3D10 and connect to a BMC simulator, the OpenIPMI ipmi_sim simulator for instance. Signed-off-by: C=C3=A9dric Le Goater Signed-off-by: David Gibson --- hw/ppc/pnv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index d4bcdb0..251baea 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -511,7 +511,7 @@ static void ppc_powernv_reset(void) * This is the internal simulator but it could also be an external * BMC. */ - obj =3D object_resolve_path_type("", TYPE_IPMI_BMC, NULL); + obj =3D object_resolve_path_type("", "ipmi-bmc-sim", NULL); if (obj) { pnv->bmc =3D IPMI_BMC(obj); } --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476197528384.93468789490487; Wed, 10 May 2017 21:16:37 -0700 (PDT) Received: from localhost ([::1]:45859 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fWl-0006fN-2u for importer@patchew.org; Thu, 11 May 2017 00:16:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55927) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUr-0005HP-M3 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUq-0001Le-CU for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:37 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45083) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUp-0001HB-Gp; Thu, 11 May 2017 00:14:36 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ0DHkz9sDB; Thu, 11 May 2017 14:14:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=J+D7RiBWdz4balLwgjq0mAJm5mKTGTgrYUJtKB35Jac=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=OFoeR6ssoOpw6+DDW8ROAPL06CNH33rqF9RLBsSsnm/926aaQJPvyZ/JZxjkuj+At JdiFcfR6Q5AfYQ8QzvVQBzVpJnT7kFHGrE73/yqOSOApJ1pLkq6xpH/feZ9J2HaI3a eAtvwHKsrnjh41hxcSPhSAOmBUBixhlVyOm7mZSw= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:05 +1000 Message-Id: <20170511041426.6488-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 02/23] target/ppc: Emulate LL/SC using cmpxchg helpers 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Nikunj A Dadhania Emulating LL/SC with cmpxchg is not correct, since it can suffer from the ABA problem. However, portable parallel code is written assuming only cmpxchg which means that in practice this is a viable alternative. Signed-off-by: Nikunj A Dadhania Reviewed-by: Richard Henderson Signed-off-by: David Gibson --- target/ppc/translate.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index f40b5a1..50b6d4d 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -73,6 +73,7 @@ static TCGv cpu_cfar; #endif static TCGv cpu_xer, cpu_so, cpu_ov, cpu_ca, cpu_ov32, cpu_ca32; static TCGv cpu_reserve; +static TCGv cpu_reserve_val; static TCGv cpu_fpscr; static TCGv_i32 cpu_access_type; =20 @@ -181,6 +182,9 @@ void ppc_translate_init(void) cpu_reserve =3D tcg_global_mem_new(cpu_env, offsetof(CPUPPCState, reserve_addr), "reserve_addr"); + cpu_reserve_val =3D tcg_global_mem_new(cpu_env, + offsetof(CPUPPCState, reserve_val), + "reserve_val"); =20 cpu_fpscr =3D tcg_global_mem_new(cpu_env, offsetof(CPUPPCState, fpscr), "fpscr"); @@ -3023,7 +3027,7 @@ static void gen_##name(DisasContext *ctx) = \ } \ tcg_gen_qemu_ld_tl(gpr, t0, ctx->mem_idx, memop); \ tcg_gen_mov_tl(cpu_reserve, t0); \ - tcg_gen_st_tl(gpr, cpu_env, offsetof(CPUPPCState, reserve_val)); \ + tcg_gen_mov_tl(cpu_reserve_val, gpr); \ tcg_temp_free(t0); \ } =20 @@ -3155,14 +3159,27 @@ static void gen_conditional_store(DisasContext *ctx= , TCGv EA, static void gen_conditional_store(DisasContext *ctx, TCGv EA, int reg, int memop) { - TCGLabel *l1; + TCGLabel *l1 =3D gen_new_label(); + TCGLabel *l2 =3D gen_new_label(); + TCGv t0; =20 - tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so); - l1 =3D gen_new_label(); tcg_gen_brcond_tl(TCG_COND_NE, EA, cpu_reserve, l1); - tcg_gen_ori_i32(cpu_crf[0], cpu_crf[0], CRF_EQ); - tcg_gen_qemu_st_tl(cpu_gpr[reg], EA, ctx->mem_idx, memop); + + t0 =3D tcg_temp_new(); + tcg_gen_atomic_cmpxchg_tl(t0, cpu_reserve, cpu_reserve_val, + cpu_gpr[reg], ctx->mem_idx, + DEF_MEMOP(memop) | MO_ALIGN); + tcg_gen_setcond_tl(TCG_COND_EQ, t0, t0, cpu_reserve_val); + tcg_gen_shli_tl(t0, t0, CRF_EQ_BIT); + tcg_gen_or_tl(t0, t0, cpu_so); + tcg_gen_trunc_tl_i32(cpu_crf[0], t0); + tcg_temp_free(t0); + tcg_gen_br(l2); + gen_set_label(l1); + tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so); + + gen_set_label(l2); tcg_gen_movi_tl(cpu_reserve, -1); } #endif --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476195713789.9206988863195; Wed, 10 May 2017 21:16:35 -0700 (PDT) Received: from localhost ([::1]:45860 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fWj-0006fT-Pk for importer@patchew.org; Thu, 11 May 2017 00:16:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUr-0005HN-Db for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUq-0001LO-Az for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:37 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:40907) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUp-0001HD-Il; Thu, 11 May 2017 00:14:36 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ3Vg1z9sDG; Thu, 11 May 2017 14:14:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=3sPX0lD/s/bxtB0rSwADCxNOw1OXWqanCwRmEkaICTI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H9I6rbS3cylQ1JEq8jUBc4v5HH4OCWfZ+vY9J8h/USMtJFSO/UnMF0Cuq4SJtFh3T YEByZE50zd67rAraguUrb6pfgr+Tn/Y+XDXMDsJjJnDT1VL0bFWfEb2Dk1BHKtKzyx wNHk6n+evyK5w/iQKTwYbKxix++yZFlBDwlZM7uU= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:06 +1000 Message-Id: <20170511041426.6488-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 03/23] cputlb: handle first atomic write to the page 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Nikunj A Dadhania In case where the conditional write is the first write to the page, TLB_NOTDIRTY will be set and stop_the_world is triggered. Handle this as a special case and set the dirty bit. After that fall through to the actual atomic instruction below. Signed-off-by: Nikunj A Dadhania Reviewed-by: Richard Henderson Signed-off-by: David Gibson --- cputlb.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/cputlb.c b/cputlb.c index f5d056c..743776a 100644 --- a/cputlb.c +++ b/cputlb.c @@ -930,7 +930,13 @@ static void *atomic_mmu_lookup(CPUArchState *env, targ= et_ulong addr, tlb_addr =3D tlbe->addr_write; } =20 - /* Notice an IO access, or a notdirty page. */ + /* Check notdirty */ + if (unlikely(tlb_addr & TLB_NOTDIRTY)) { + tlb_set_dirty(ENV_GET_CPU(env), addr); + tlb_addr =3D tlb_addr & ~TLB_NOTDIRTY; + } + + /* Notice an IO access */ if (unlikely(tlb_addr & ~TARGET_PAGE_MASK)) { /* There's really nothing that can be done to support this apart from stop-the-world. */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476195691820.2421566966476; Wed, 10 May 2017 21:16:35 -0700 (PDT) Received: from localhost ([::1]:45858 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fWj-0006el-JN for importer@patchew.org; Thu, 11 May 2017 00:16:33 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55920) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUr-0005HO-Dd for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUq-0001Lf-Cm for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:37 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45717) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUp-0001HA-FH; Thu, 11 May 2017 00:14:36 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ4sVZz9sDC; Thu, 11 May 2017 14:14:29 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=R1oc5Qa5kkvgSsMi6F8oqcqqyGrMXtz0LhhO7QKngII=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dhN6fNzbLwFiljo2cuZc1x9NC6noku7+bnv9RlJ3TvjSoghadiW9YazbcmkNn53u1 Lff4c5qJz2RyNA5FdT94GqAicGJpTI9BQJPrvDSUFM6CiU64zmDC4UVHlZ/LYiOWLd xKH9bMQci50OVPdd9BAS05gsU+q4atxnYikY8acQ= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:07 +1000 Message-Id: <20170511041426.6488-5-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 04/23] target/ppc: Generate fence operations 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Nikunj A Dadhania Signed-off-by: Nikunj A Dadhania Reviewed-by: Richard Henderson Signed-off-by: David Gibson --- target/ppc/translate.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 50b6d4d..4a1f24a 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -2971,6 +2971,7 @@ static void gen_stswx(DisasContext *ctx) /* eieio */ static void gen_eieio(DisasContext *ctx) { + tcg_gen_mb(TCG_MO_LD_ST | TCG_BAR_SC); } =20 #if !defined(CONFIG_USER_ONLY) @@ -3008,6 +3009,7 @@ static void gen_isync(DisasContext *ctx) if (!ctx->pr) { gen_check_tlb_flush(ctx, false); } + tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC); gen_stop_exception(ctx); } =20 @@ -3028,6 +3030,7 @@ static void gen_##name(DisasContext *ctx) = \ tcg_gen_qemu_ld_tl(gpr, t0, ctx->mem_idx, memop); \ tcg_gen_mov_tl(cpu_reserve, t0); \ tcg_gen_mov_tl(cpu_reserve_val, gpr); \ + tcg_gen_mb(TCG_MO_ALL | TCG_BAR_LDAQ); \ tcg_temp_free(t0); \ } =20 @@ -3177,6 +3180,10 @@ static void gen_conditional_store(DisasContext *ctx,= TCGv EA, tcg_gen_br(l2); =20 gen_set_label(l1); + + /* Address mismatch implies failure. But we still need to provide the + memory barrier semantics of the instruction. */ + tcg_gen_mb(TCG_MO_ALL | TCG_BAR_STRL); tcg_gen_trunc_tl_i32(cpu_crf[0], cpu_so); =20 gen_set_label(l2); @@ -3308,6 +3315,7 @@ static void gen_sync(DisasContext *ctx) if (((l =3D=3D 2) || !(ctx->insns_flags & PPC_64B)) && !ctx->pr) { gen_check_tlb_flush(ctx, true); } + tcg_gen_mb(TCG_MO_ALL | TCG_BAR_SC); } =20 /* wait */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476373846309.9568305087299; Wed, 10 May 2017 21:19:33 -0700 (PDT) Received: from localhost ([::1]:45871 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fZc-0000po-AW for importer@patchew.org; Thu, 11 May 2017 00:19:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56048) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUv-0005Iv-DP for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUu-0001RP-7Y for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:41 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:43899) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001Ml-QR; Thu, 11 May 2017 00:14:40 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR12VPz9sND; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=2t28DsIgBNOdKKPbEVZhSPBkwnbHhw76eB68XkNDyps=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mOBCLI+tphSBXHS+KfqvrTWVGANey+YWKrcrRax6y9dyAo+vu1Ac2P4hQwsy+wyLn +SrOcN958Dt2QvtlNJxVxO3CN5ZllwU8V5vvWg9c1+kvJhWVYWZ8A8509UxU9Irkfu yZ3bV5892gQMQ0gie223b1g9zy4gMmG2EM57sNp8= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:08 +1000 Message-Id: <20170511041426.6488-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 05/23] cpus: Fix CPU unplug for MTTCG 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Bharata B Rao Ensure that the unplugged CPU thread is destroyed and the waiting thread is notified about it. This is needed for CPU unplug to work correctly in MTTCG mode. Signed-off-by: Bharata B Rao Signed-off-by: Nikunj A Dadhania Signed-off-by: David Gibson --- cpus.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpus.c b/cpus.c index 740b8dc..79f780b 100644 --- a/cpus.c +++ b/cpus.c @@ -1483,6 +1483,12 @@ static void *qemu_tcg_cpu_thread_fn(void *arg) /* Ignore everything else? */ break; } + } else if (cpu->unplug) { + qemu_tcg_destroy_vcpu(cpu); + cpu->created =3D false; + qemu_cond_signal(&qemu_cpu_cond); + qemu_mutex_unlock_iothread(); + return NULL; } =20 atomic_mb_set(&cpu->exit_request, 0); --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476541292216.15387433430328; Wed, 10 May 2017 21:22:21 -0700 (PDT) Received: from localhost ([::1]:45888 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fcJ-0003G0-TQ for importer@patchew.org; Thu, 11 May 2017 00:22:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56037) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUu-0005II-Vr for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUt-0001R1-QF for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from ozlabs.org ([103.22.144.67]:46953) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001MW-CQ; Thu, 11 May 2017 00:14:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR0D0Wz9sNH; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=Fl+o8gJQ0DSFAddkSQlY6LCptOnr4ltrX8+JkjEFcQw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K2fBypw9WcLS3ZHBCqyD1YcYAMgc8Um2lEht8aiYOE3cwsF6SamJNEVwariCYPq9V 02M2Rq8tfizt/4K8IB4sBUaYZV0QAdU372V3ZjA5Eb/J3NYpLu4kIiyBCp5Z2wROBF gGE2P+dBiZQFckCXVjGbMpOkQaa3pJLRipE1CA2g= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:09 +1000 Message-Id: <20170511041426.6488-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 06/23] tcg: enable MTTCG by default for PPC64 on x86 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Nikunj A Dadhania This enables the multi-threaded system emulation by default for PPC64 guests using the x86_64 TCG back-end. Signed-off-by: Nikunj A Dadhania Reviewed-by: Alex Benn=C3=A9e Signed-off-by: David Gibson --- configure | 2 ++ target/ppc/cpu.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/configure b/configure index 7c020c0..84c37d4 100755 --- a/configure +++ b/configure @@ -6110,12 +6110,14 @@ case "$target_name" in ppc64) TARGET_BASE_ARCH=3Dppc TARGET_ABI_DIR=3Dppc + mttcg=3Dyes gdb_xml_files=3D"power64-core.xml power-fpu.xml power-altivec.xml powe= r-spe.xml power-vsx.xml" ;; ppc64le) TARGET_ARCH=3Dppc64 TARGET_BASE_ARCH=3Dppc TARGET_ABI_DIR=3Dppc + mttcg=3Dyes gdb_xml_files=3D"power64-core.xml power-fpu.xml power-altivec.xml powe= r-spe.xml power-vsx.xml" ;; ppc64abi32) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index e0ff041..ece535d 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -30,6 +30,8 @@ #define TARGET_LONG_BITS 64 #define TARGET_PAGE_BITS 12 =20 +#define TCG_GUEST_DEFAULT_MO 0 + /* Note that the official physical address space bits is 62-M where M is implementation dependent. I've not looked up M for the set of cpus we emulate at the system level. */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476507793821.974918536819; Wed, 10 May 2017 21:21:47 -0700 (PDT) Received: from localhost ([::1]:45886 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fbm-0002kV-4w for importer@patchew.org; Thu, 11 May 2017 00:21:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56035) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUu-0005I1-Su for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUt-0001R3-PW for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from ozlabs.org ([103.22.144.67]:47959) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001MT-DF; Thu, 11 May 2017 00:14:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR1pssz9sNB; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=qJLO5tI7K79Oh90gWUtA0RZtazh9f3m4BzFV5nVnCUw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=m6g5OuLyoSanm5VxS299j8DRG5g/OYKGWDHeqMeXecLM/a5d+t2B9iafy02l3XzTr WA0K5l5URGW0cEzTUOKo4svtTKKpvAcBtP2rQ/p2K2n+1GuYpRTrjJ5LaRV0rSJyhP Jq0vDUuJhMsl3jCdQ3f9Ky6xWOCKWaJj8M/hfYuk= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:10 +1000 Message-Id: <20170511041426.6488-8-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 07/23] target/ppc: do not reset reserve_addr in exec_enter 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Nikunj A Dadhania In case when atomic operation is not supported, exit_atomic is called and we stop the world and execute the atomic operation. This results in a following call chain: tcg_gen_atomic_cmpxchg_tl() -> gen_helper_exit_atomic() -> HELPER(exit_atomic) -> cpu_loop_exit_atomic() -> EXCP_ATOMIC -> qemu_tcg_cpu_thread_fn() =3D> case EXCP_ATOMIC -> cpu_exec_step_atomic() -> cpu_step_atomic() -> cc->cpu_exec_enter() =3D ppc_cpu_exec_enter() Sets env->reserve_addr =3D -1; But by the time it return back, the reservation is erased and the code fails, this continues forever and the lock is never taken. Instead set this in powerpc_excp() Now that ppc_cpu_exec_enter() doesn't have anything meaningful to do, let us get rid of the function. Signed-off-by: Nikunj A Dadhania Signed-off-by: David Gibson --- target/ppc/excp_helper.c | 3 +++ target/ppc/translate_init.c | 9 --------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index f4ee7aa..a6bcb47 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -728,6 +728,9 @@ static inline void powerpc_excp(PowerPCCPU *cpu, int ex= cp_model, int excp) cs->exception_index =3D POWERPC_EXCP_NONE; env->error_code =3D 0; =20 + /* Reset the reservation */ + env->reserve_addr =3D -1; + /* Any interrupt is context synchronizing, check if TCG TLB * needs a delayed flush on ppc64 */ diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index e82e3e6..9b048cd 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -10436,14 +10436,6 @@ static bool ppc_cpu_has_work(CPUState *cs) return msr_ee && (cs->interrupt_request & CPU_INTERRUPT_HARD); } =20 -static void ppc_cpu_exec_enter(CPUState *cs) -{ - PowerPCCPU *cpu =3D POWERPC_CPU(cs); - CPUPPCState *env =3D &cpu->env; - - env->reserve_addr =3D -1; -} - /* CPUClass::reset() */ static void ppc_cpu_reset(CPUState *s) { @@ -10660,7 +10652,6 @@ static void ppc_cpu_class_init(ObjectClass *oc, voi= d *data) cc->get_phys_page_debug =3D ppc_cpu_get_phys_page_debug; cc->vmsd =3D &vmstate_ppc_cpu; #endif - cc->cpu_exec_enter =3D ppc_cpu_exec_enter; #if defined(CONFIG_SOFTMMU) cc->write_elf64_note =3D ppc64_cpu_write_elf64_note; cc->write_elf32_note =3D ppc32_cpu_write_elf32_note; --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476660390332.0953459210466; Wed, 10 May 2017 21:24:20 -0700 (PDT) Received: from localhost ([::1]:45898 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8feF-0005Kb-3J for importer@patchew.org; Thu, 11 May 2017 00:24:19 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUu-0005Hy-Qe for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUt-0001RB-RQ for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from ozlabs.org ([103.22.144.67]:53421) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001MU-Ev; Thu, 11 May 2017 00:14:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ6TmPz9sNJ; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=GIzkDWlQtVJba/lHWxZWHDzqq4IA+DPEOeJ6UKg9tjA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VzOHpIYj2JUdABcil1wMWcsZJ3qSoy+YOe4x/W9+ZZ0o2bVT0ydgXAP/Sp6QMm5HX VyPVlyB8bnTGAWvEns6CjCNIKXyuNqRHj3eh97AY4sQGnwFWqKB9uKm2Pj2WMWsOqV H7g1q2DOAae8ZxlkJS+H41cc2clLo0wMP6W1i94o= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:11 +1000 Message-Id: <20170511041426.6488-9-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 08/23] ppc/xics: Fix stale irq->status bits after get 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sam Bobroff ics_get_kvm_state() "or"s set bits into irq->status but does not mask out clear bits. Correct this by initializing the IRQ status to zero before adding bits to it. Signed-off-by: Sam Bobroff Signed-off-by: David Gibson --- hw/intc/xics_kvm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 42e0e0e..03c1fc7 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -213,6 +213,7 @@ static void ics_get_kvm_state(ICSState *ics) irq->priority =3D irq->saved_priority; } =20 + irq->status =3D 0; if (state & KVM_XICS_PENDING) { if (state & KVM_XICS_LEVEL_SENSITIVE) { irq->status |=3D XICS_STATUS_ASSERTED; --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476522254150.4420076226669; Wed, 10 May 2017 21:22:02 -0700 (PDT) Received: from localhost ([::1]:45887 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fc0-0002xD-Lm for importer@patchew.org; Thu, 11 May 2017 00:22:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56029) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUu-0005Hx-QA for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUt-0001QU-Ei for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from ozlabs.org ([103.22.144.67]:60303) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001MQ-3f; Thu, 11 May 2017 00:14:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrQ5qNTz9s7v; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476070; bh=JUvLE93jB80kcnTHUs6DyQ9aoQDa7W1xHN4e4W9oTvs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mtFd5kdGevWJ46VjRzrZyQKnk9a9ussppxUByqOSFmH14IGW97NyzxRPyvYUXvUey nnJjn6u4o8P2cBkrx1utJFEVhDis4eywETL1YYa3rmdI7FtZMvpfrCmB36NKCNKEAp GiLID6YKWU7rEqBjEZ8Eucthd2zrSkCm5me6dMOU= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:12 +1000 Message-Id: <20170511041426.6488-10-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 09/23] ppc/xics: preserve P and Q bits for KVM IRQs 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sam Bobroff Kernel commit 17d48610ae0f ("KVM: PPC: Book 3S: XICS: Implement ICS P/Q states") added new bits to the state used by KVM IRQs. Currently, QEMU does not preserve these bits, so migrating (or otherwise saving and restoring) the guest state causes the P and Q bits to be cleared. Clearing the P bit has no effect, because the kernel will set it based on other data, but the loss of a set Q bit will cause a lost interrupt. This patch preserves the P and Q bits, correcting the problem. Signed-off-by: Sam Bobroff Signed-off-by: David Gibson --- hw/intc/xics_kvm.c | 12 ++++++++++++ include/hw/ppc/xics.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/hw/intc/xics_kvm.c b/hw/intc/xics_kvm.c index 03c1fc7..dd93531 100644 --- a/hw/intc/xics_kvm.c +++ b/hw/intc/xics_kvm.c @@ -229,6 +229,12 @@ static void ics_get_kvm_state(ICSState *ics) | XICS_STATUS_REJECTED; } } + if (state & KVM_XICS_PRESENTED) { + irq->status |=3D XICS_STATUS_PRESENTED; + } + if (state & KVM_XICS_QUEUED) { + irq->status |=3D XICS_STATUS_QUEUED; + } } } =20 @@ -266,6 +272,12 @@ static int ics_set_kvm_state(ICSState *ics, int versio= n_id) state |=3D KVM_XICS_PENDING; } } + if (irq->status & XICS_STATUS_PRESENTED) { + state |=3D KVM_XICS_PRESENTED; + } + if (irq->status & XICS_STATUS_QUEUED) { + state |=3D KVM_XICS_QUEUED; + } =20 ret =3D ioctl(kernel_xics_fd, KVM_SET_DEVICE_ATTR, &attr); if (ret !=3D 0) { diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h index c215dc7..68525c8 100644 --- a/include/hw/ppc/xics.h +++ b/include/hw/ppc/xics.h @@ -144,6 +144,8 @@ struct ICSIRQState { #define XICS_STATUS_SENT 0x2 #define XICS_STATUS_REJECTED 0x4 #define XICS_STATUS_MASKED_PENDING 0x8 +#define XICS_STATUS_PRESENTED 0x10 +#define XICS_STATUS_QUEUED 0x20 uint8_t status; /* (flags & XICS_FLAGS_IRQ_MASK) =3D=3D 0 means the interrupt is not alloc= ated */ #define XICS_FLAGS_IRQ_LSI 0x1 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476719771460.6678475940829; Wed, 10 May 2017 21:25:19 -0700 (PDT) Received: from localhost ([::1]:45901 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8ffC-0006AW-GF for importer@patchew.org; Thu, 11 May 2017 00:25:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56285) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV0-0005PH-AZ for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001Vy-91 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:46 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:39719) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001Rk-Md; Thu, 11 May 2017 00:14:43 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR6qy5z9sNY; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=gxFtrl1WyVcVeM0tInL0wcuvUJUeCAG6UE0nhUnt8V8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Peal/uaLpfN22tp2WhVDnFQtfeUlPdmzqEbt4+rAznagcV0VwxXfl7ss9+qrsV06X BoKkIGIp2j25bzGLV48vvaRKC5qN00+B2htIUMsHlmAdtI5CpQhuv4x8HnhPpvnRKI 2RnrQAO2Cp0WUoyPe7Z8IgkKrAFDMa8LOx2y3Yh4= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:13 +1000 Message-Id: <20170511041426.6488-11-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 10/23] Add QemuMacDrivers as submodule 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland The QemuMacDrivers project provides virtualisation drivers for PPC MacOS guests. Signed-off-by: Mark Cave-Ayland Signed-off-by: David Gibson --- .gitmodules | 3 +++ pc-bios/README | 3 +++ roms/QemuMacDrivers | 1 + 3 files changed, 7 insertions(+) create mode 160000 roms/QemuMacDrivers diff --git a/.gitmodules b/.gitmodules index ca323b4..5b0c212 100644 --- a/.gitmodules +++ b/.gitmodules @@ -34,3 +34,6 @@ [submodule "roms/skiboot"] path =3D roms/skiboot url =3D git://git.qemu.org/skiboot.git +[submodule "roms/QemuMacDrivers"] + path =3D roms/QemuMacDrivers + url =3D git://git.qemu.org/QemuMacDrivers.git diff --git a/pc-bios/README b/pc-bios/README index dcead36..ebc699d 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -47,3 +47,6 @@ (OpenPower Abstraction Layer) firmware for OpenPOWER systems. It can run an hypervisor OS or simply a host OS on the "baremetal" platform, also known as the PowerNV (Non-Virtualized) platform. + +- QemuMacDrivers (https://github.com/ozbenh/QemuMacDrivers) is a project to + provide virtualised drivers for PPC MacOS guests. diff --git a/roms/QemuMacDrivers b/roms/QemuMacDrivers new file mode 160000 index 0000000..d4e7d7a --- /dev/null +++ b/roms/QemuMacDrivers @@ -0,0 +1 @@ +Subproject commit d4e7d7ac663fcb55f1b93575445fcbca372f17a7 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494477162573767.5914739046851; Wed, 10 May 2017 21:32:42 -0700 (PDT) Received: from localhost ([::1]:45953 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fmJ-0003yb-J4 for importer@patchew.org; Thu, 11 May 2017 00:32:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56373) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV2-0005TA-AG for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001WI-Ed for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:48 -0400 Received: from ozlabs.org ([103.22.144.67]:42265) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001SK-Lt; Thu, 11 May 2017 00:14:43 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS0kpBz9sNR; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=3hAI6gCSZ3KhUrQF+FJpeR9DEYHF0T+Gm8Gj/3BQZWM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eAv4s8f4SnyODc9wooBP1zU2Pne4Lyo/ZlotBEiCiS8KlObtxhi3gL6YTVUPU6wM1 OEJpxK4AlY5vu/QC2cG8SbGkd4OsrCqdET4qZgbd7jCvrjkwVpV7Rm0Blv2UTiTb8+ eoKa/MJzQ64lQPearhE9vMTWjbt5eJWJpxWuGeBU= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:14 +1000 Message-Id: <20170511041426.6488-12-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 11/23] Add QemuMacDrivers qemu_vga.ndrv revision d4e7d7a built as submodule 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Signed-off-by: David Gibson --- Makefile | 3 ++- pc-bios/qemu_vga.ndrv | Bin 0 -> 14752 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 pc-bios/qemu_vga.ndrv diff --git a/Makefile b/Makefile index 31d41a7..c830d7a 100644 --- a/Makefile +++ b/Makefile @@ -552,7 +552,8 @@ multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.= bin \ s390-ccw.img \ spapr-rtas.bin slof.bin skiboot.lid \ palcode-clipper \ -u-boot.e500 +u-boot.e500 \ +qemu_vga.ndrv else BLOBS=3D endif diff --git a/pc-bios/qemu_vga.ndrv b/pc-bios/qemu_vga.ndrv new file mode 100644 index 0000000000000000000000000000000000000000..6e02f74d61e01c87cf50b10e174= a6626bee13677 GIT binary patch literal 14752 zcmc&*e{fsHonQU1B+DjoT9>2ywvbuQLw zJ6CG=3DcGfWFj)k@=3DvGq!9Ybc<^dqab4oqt%lUD*jbBs_}7^-7|9B%#D&qtQfe7PsOT^RNt)Yev9nw|jLY zI$nr#hvLylTq#6%kAxCgTz@PQRbq+pTa=3D=3D>^g|Tar(Y`IQ z)sd0Sp)I#7{@_3)7BqCa_Unb624bOv!h7AZzE^OSl}>1tp=3Dq5mRt)Wq%)@$z6y0`i zB_4=3D{qNF`{L`Om0+>@>Ffa>Q?G3P6vnV9Jr`15IIf@i!)-Y>iZzM(qIPaK&@e>iPo zjt7>eXH~T}sXnqSIlZ4n)i<_!+g|$KbFJW zUo+qj>9p;N0k@C(rjC7-Or1HO)QzrgwP4&!#XQj+Y7p#W!_L#lZ!~Wi{ zb+KyIXKz*OEy>h@-zPN_+bAz({i?(A#9`QMoyMf;304PNNz+H!^69skYmbRF?ODoN z_H?mUYUlRdpFW$lFKpZP+e#n!d0Cz`zuuEhA4T~CJfFcctxd8`C_gO^S{9?c5#{|T zUyHIA<-G?R7@J+f81Xy3gt_)DVaoxYwj<0+JbGB;e&So+!OXhPG(Ji7CPccfN#=3Dlz zzofAk;{`N`MmZcJEx4?3|7h>r=3D;_)^U!T4EHo9v1MJ4qJHjx@`sViMm^_JGd;Ux9auF_!>lgxoAHw`U{zyJZ7Wa zD(HQtx3ja*?;l{__jUXNt~bh%h4Gt^J$^~<=3DvP!~2`!1o8#59#fdJQkz=3DkX~PO znV9E3QRlivyQNkk`CcW+ua=3D}+Dev@g~7LG=3DA$slLYe zl8a+yPh!k=3DEyY|e#CVF+7=3DIe_)wNpEY1$(Q=3DV5<$HR&G%%^{6k=3Dclt&6gEz1FoI-m<$p zytWrQymng$`2VB!2&-%NMdPw%G^!$l$G-5RPK|Z8`$8kKC9zrHb^=3D$^?h7iiWots< zd>H>gyDuD-En_i(3j?RM`?jKAEG}>^j19N@;^VSqBp`6KM{dmUh;qL?XgaM~m}?q5 zqmKD+TO(WgHi&u)cnrvvkR}Wfc{sZ}BF(12B9^nnxI%G@woC`Th*91fU zXLA(B3D`m-f5me`JSWAI$K7`IS7Gj#{m zi{`A@W4sr@Blf4=3D7Ul(?8DGRc!jjP6Cg2>HoBWe-L9GrG=3DlAPZkF2D)U1#S+`k3&`dHGr~-Vb6w z^=3D@ByL8?a(Vx}rJ#gYf>m@V}d=3DnvY$@}zAHb6-Qbr>rqXIb`aEkCFrbX6ryc@UiyS z=3D7j}$|2#f+2tF=3Dk`S><+t|tW_Cd#)`@1D=3D_FGt{XqV~!7j|6+FK2w#<(jTannqXf5Syn{sg<7LvgSjJcd44$e^CL~(mJa&H&p6S11sf?KC+ zuR?Bi9I<>z`##$w&w%z(*6Cr@Jk}ylu;F~usajZ-YB4>a`fB>2pO>H?8S@Vz2lVl? ziDBO|%s+dP`Gs8eM$F&6yMdn%t}c}8aB;e&%4D#WeI4c=3Dh0d?uhxsoi)93Vos zhCawC79OW^p-zo57xO=3Dzw!@4Z>WzZ6Kz6GEt_fkk)yrPnaVeYS(dX-y)~BNuv?nsL z#04G=3DYwf;!-(u`u>=3DmiGkLX-mJ#fl)GqtzPVGlXQ?AUucFeVLL4cangYPVCnJm~n^ zz%g6Lz!~!8zbwXGLQ1F4_0lvjXHU`I1-;V-NpuC4ig$Ytt7 zKK3-(Lhy#z$Zo+Io@loMM>4`UdE81$sO#~Q*;Q5}i+w##TAL^|)VbZRFWp#8lx^he7L}B0eQ+OPEiOJ%4_N z@*u<*hWHcYd2ItTlRhZ!pkFoeI7gvgjP^0ipN)ND{(IX%c(-aby{cNwMxKhs#1cO9X;1pU$1}PWK9cbP7i4zM z!hcBCeJN%JSb*~(j#+WL3P_TdVC-zpE5#|ck4Cg@#vP!)a({tbTWCjF}QkO_MO z=3D~8V#JK|=3DBE{*rFir2{3k<%omAA(;EmVc)wefDi3U(TP!ohr{+{pt5b{Fzp_<;nLb z#y(y|z8P&BGq+8p(=3D)YMITw+f2VO5Gr<3npeC-j>xwW?uatx_;T&B7b^11juw9t=3D- zIX@x!#63dhd_($3OxI@DQ4;xCl;>xVZJjpnZg__7>&cE&KgF8ld1m=3DDJ?W30DUg-+ z$U{vH=3D?k>y(4K{Q72Qjr?wERu=3DZ<0A|C(g{2EqM}_9B-4Y`UIVN$2Pv2Cw9km8wND z`lFZbP~-{ZZHQAIR=3D%M?E{aVpas$>5Xp!#lbWohalkU*l@uYoea<-oDf0P&J>}$Lq z%iT}va{r{#hrKl;_pf`>e>#dh)R-qjZgZu!-LRe-3fGhA{Tc9uTxBx1#!SDF1L<^5 zCdb5lnM^;Tae8d}@D1+{bL^$DkjVo%o$%v7;rA8~c>N0H<_%T8`vV8-|O(CGqwcV{s!fRz|nc_1j-Wd8p?CvJu`O$WYhUMfO`Yn zPYb$N3cAbb3EsYnareP@%+uT10`%iNgO>);pT=3D4;V^J;>W#jnXV&lhN4;tr*#UuAQaM{#y7V|A+Uit2q+bcU)pPWRjLB4=3D+~)DnjYh832R+`fzx$Np}X` zZCZmo=3DnM`Vvvv$93hpLNrh%VYuWtt*E;c)d`EgI=3D+<`Un9-YzfJb~C>qt;>%nP3jJ z){?wGg*!!@2SBghyUp4`YXRj&UX_FoWN@9%juhEA0pA-{?=3Dod|G<2-;SjDb8A$obOa=3Dv#?0 zVsLsmLz8k5ls$reos8e~+O@5N^3Jd%AE9_yK1{wMnBmEVnpNUhTxmWa?7nd@9WLhtzHydl(jb$q2s>J=3DnF!*Q%E~87A zwwbkPce7UQ2_{e6P4Ua|Lm{h~Vl>Y4{{^1r&1JCHj9729hMEj|q@1pw_E8VBHxf-g zcg~J3$U$?!$Ist`zAec2TD2qK(X+3 z24@x3x;9E@Zc#UjI)01c?N+`1$tM@neco@QG}ps?uK&>I`s6vHh4brsln03N8{Sm5 z{K~*wXLD-Kl0=3DS!yJ?h9@v_1#QQ)f_ZFw9vA4;c-grflsDpc2Fm5k(`bXODZevOIWsrU)4S5Y6Mo9`boIey zN%gsvNtxp6B>1WWUx?zMzsiR0-^4cE|168* zw+iy_PPJZ~+3Q#WeJKXya)0Qn*d7P}qTf3t_}d(4FTol5IzxE{^j0V8H=3D~XGpZZbx zG8uaQ*V8QTcO~Q6n)iMY{9S#1C4Z-b_yg@Bya)6>TA#Ty49EA=3D`IYoQ?+H;m@($y; zmh3r5{3e2a6GiCgzuOpMVdniA@}W$e6Z<;isAU7ufZpcCsUt>z!+FX3pshnayfUet zyf)c(3cOBM93p?BSdBg0z^kc-=3Djix-OSM?Oi#a>_dn=3DO_N9e4B{r5HT?#W5=3D1uy&X zdGvA9ehK|NTUUm0k076GU_bCO`w`gcvE4!VTqowoTEU+40DdQ}BpFby)2yt@#dw+a zsuQ5`G(aQTY8m%q!k+4qW9z)F%L5S1n(Yl|&2YNam{Jb!j)^g4beyp4KDg z?pOI;>6;z<(C)=3DMVX4npGsag_K7jc;_4(4Bbhd+>dq{3P?-6<9Jm36+`}>Uey<{15 zew=3D8^n!cv7uk(CT4cM=3DPzUX(=3D7RV>hOmO=3D=3DJOkc*Wz0OgAGQ$VFyK!1b%r5yr%@dvKXH1N_es>*_YmHqBBNQ1~>uuCEzq( zBmObqNx*}E`v6#CR)Q$_%#6UiG&F;7GOqt{~q8cfCGSCfI+}Izzu*#Kow)Q^MI28^s|9?+qVH@fH1&;SD5bw zBmt1Q0`pfO!a3gr{2YM(PS9{p1F%y#A&;{kIs`pR7b=3D$l7Glg90Q6UJ1aJsC^XkSd zgT9S__0?1xPALCGPseR*`ZhG(aZ49fiu{>O9BI3}ncnIR`^WF(FG}Ben=3D(9FdQ=3DfY zV0a`L+qyLrj1bA(tGrTRIJi0zRBmbvI+=3DKNIyACH8Ve%Pza(yc_61-7r zOs;SW>IdKB_*CG)x4jO~1ZWqyP2#DFXSkrA!C&gxtIN_83WxDQK~}5u4t}o2U$)OxSBLQl zK(2agR2iY#Jg>h+!DTDah4=3D8%ddX`BJ>HU!jQPj=3D{af;Tf+27@p5IYPP``ZsiDY3%tfFWn zmWX>0C&v6SW%Xz*9*O1A0{x4$x?}#ai!@`-{8s9}9*bq34B2lm@+Qal;tk-6K7pYR zS?Gx%a@UPg9HpBYlhUw1{w+M6g{1fhqe(HkKQe|-bmnn{iA%K5n3%E|-_9WP@Q+l) z=3DQV}1eZF3+{BcDD+(H7NJ_3)!wUbDfe*;A`-k z$Na-_{o^M|uSjwKIQA)>0c@G{XV$Q$mLe(8 z)rt_6NI(s=3DO(psNPPQ(RkTyp~M}pYLq%an^v{V|6ldgiwWhEn5Rko_@cH|acPx9F^ok^+LhT#xMU{>QWDJni1%j=3DnlM5Mvc7Q)en sM1umzbH?y-7-u#x?AL2jC=3DP~U*d}QVABJ&7MuX5B@0M|k|F`G=3D0B)l1CIA2c literal 0 HcmV?d00001 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476358307951.0520473324011; Wed, 10 May 2017 21:19:18 -0700 (PDT) Received: from localhost ([::1]:45870 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fZM-0000dW-VC for importer@patchew.org; Thu, 11 May 2017 00:19:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56040) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUv-0005IV-3P for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUt-0001Qq-MM for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:40 -0400 Received: from ozlabs.org ([103.22.144.67]:59925) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001Me-AN; Thu, 11 May 2017 00:14:39 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR42WSz9sNP; Thu, 11 May 2017 14:14:30 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=veXFXwP7rMjbCHBsixXZXYZqkQYcNXEFVhWYRYc6ls0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gt0n2Wpf01UJQ80Cxty2FdidsUvXmmHhEz53cNg+UD6GWMbTR50lmrcUH9RD3Tzec RtLotasiOjuJW4SphydsRLp6EhMTpz//qtXt34W3WKiiAq07kbdbHDNEEkJGTzAvdJ maQ7tbyQS3RXFc2Tf8zGMMuydO4lRpmWep+Cchmk= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:15 +1000 Message-Id: <20170511041426.6488-13-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 12/23] ppc: add qemu_vga.ndrv ROM to fw_cfg interface for OldWorld Macs 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Signed-off-by: David Gibson --- hw/ppc/mac_oldworld.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 5df94e2..97bb854 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -53,6 +53,8 @@ #define CLOCKFREQ 266000000UL #define BUSFREQ 66000000UL =20 +#define NDRV_VGA_FILENAME "qemu_vga.ndrv" + static void fw_cfg_boot_set(void *opaque, const char *boot_device, Error **errp) { @@ -99,7 +101,8 @@ static void ppc_heathrow_init(MachineState *machine) MACIOIDEState *macio_ide; DeviceState *dev; BusState *adb_bus; - int bios_size; + int bios_size, ndrv_size; + uint8_t *ndrv_file; MemoryRegion *pic_mem; MemoryRegion *escc_mem, *escc_bar =3D g_new(MemoryRegion, 1); uint16_t ppc_boot_device; @@ -355,6 +358,19 @@ static void ppc_heathrow_init(MachineState *machine) fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_CLOCKFREQ, CLOCKFREQ); fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ); =20 + /* MacOS NDRV VGA driver */ + filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, NDRV_VGA_FILENAME); + if (filename) { + ndrv_size =3D get_image_size(filename); + if (ndrv_size !=3D -1) { + ndrv_file =3D g_malloc(ndrv_size); + ndrv_size =3D load_image(filename, ndrv_file); + + fw_cfg_add_file(fw_cfg, "ndrv/qemu_vga.ndrv", ndrv_file, ndrv_= size); + } + g_free(filename); + } + qemu_register_boot_set(fw_cfg_boot_set, fw_cfg); } =20 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 149447664769488.58650439863663; Wed, 10 May 2017 21:24:07 -0700 (PDT) Received: from localhost ([::1]:45897 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fe2-00057v-Cj for importer@patchew.org; Thu, 11 May 2017 00:24:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUw-0005Jl-7B for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUu-0001Rn-Dp for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:42 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:57487) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUu-0001Mx-18; Thu, 11 May 2017 00:14:40 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR3MLcz9sNQ; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=vGWrApSXOOVQX3xU4nTI9IVjmskG0We8G+QcDUdAPaw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Wa1KBV1CizSCkxUQXfYeCkhIMnThwAY0MHuPIgm+JmYLnsKBBLxsQ2LfV9fmt0hA9 OeCTraafYxjVdDzgqnD+IxDqUVqxzKiZLkBRgR8jmp6ElqTfsJbl10sy3hNtm8XG0d P5/ggkunhV6oijILz+M8+w4qNx1WBTTm9ftgNPNs= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:16 +1000 Message-Id: <20170511041426.6488-14-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 13/23] ppc: add qemu_vga.ndrv ROM to fw_cfg interface for NewWorld Macs 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Mark Cave-Ayland Signed-off-by: Mark Cave-Ayland Signed-off-by: David Gibson --- hw/ppc/mac_newworld.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 68aaedc..bae1c0a 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -80,6 +80,8 @@ #define CLOCKFREQ (266UL * 1000UL * 1000UL) #define BUSFREQ (100UL * 1000UL * 1000UL) =20 +#define NDRV_VGA_FILENAME "qemu_vga.ndrv" + /* UniN device */ static void unin_write(void *opaque, hwaddr addr, uint64_t value, unsigned size) @@ -160,7 +162,8 @@ static void ppc_core99_init(MachineState *machine) MACIOIDEState *macio_ide; BusState *adb_bus; MacIONVRAMState *nvr; - int bios_size; + int bios_size, ndrv_size; + uint8_t *ndrv_file; MemoryRegion *pic_mem, *escc_mem; MemoryRegion *escc_bar =3D g_new(MemoryRegion, 1); int ppc_boot_device; @@ -494,6 +497,19 @@ static void ppc_core99_init(MachineState *machine) fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_BUSFREQ, BUSFREQ); fw_cfg_add_i32(fw_cfg, FW_CFG_PPC_NVRAM_ADDR, nvram_addr); =20 + /* MacOS NDRV VGA driver */ + filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, NDRV_VGA_FILENAME); + if (filename) { + ndrv_size =3D get_image_size(filename); + if (ndrv_size !=3D -1) { + ndrv_file =3D g_malloc(ndrv_size); + ndrv_size =3D load_image(filename, ndrv_file); + + fw_cfg_add_file(fw_cfg, "ndrv/qemu_vga.ndrv", ndrv_file, ndrv_= size); + } + g_free(filename); + } + qemu_register_boot_set(fw_cfg_boot_set, fw_cfg); } =20 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476682260279.32828889872735; Wed, 10 May 2017 21:24:42 -0700 (PDT) Received: from localhost ([::1]:45899 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fea-0005d9-L1 for importer@patchew.org; Thu, 11 May 2017 00:24:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56074) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUv-0005JR-W1 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUu-0001Re-CQ for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:41 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:58613) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUt-0001Mq-V9; Thu, 11 May 2017 00:14:40 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR2bGHz9sNF; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=6X4UqSCtTmXsER2jsbl0HA+fHGpCBlc9+z1vX9uSVl0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p5YwJ6l0Agrt4L7C0Jk3mW0B/BL35iN2IEaE8vYuZkLsVyPoSpIF0koLUDG/YGydi TeuzFCV1Np/DoSNCPh2iM/AOc/vd1QNirb3cBfqcGtlEhsy9oGJMMjMgXqFmMGBtFy bOQoHE0ax3eh9K5vJD4KD3TcFL8sMXJA2GvHNwDI= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:17 +1000 Message-Id: <20170511041426.6488-15-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 14/23] target/ppc: Set UPRT and GTSE on all cpus in H_REGISTER_PROCESS_TABLE 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh The UPRT and GTSE bits are set when a guest calls H_REGISTER_PROCESS_TABLE to choose determine how address translation is performed. Currently these bits in the LPCR are only set for the cpu which handles the H_CALL, however they need to be set for all cpus for that guest as address translation cannot be performed differently on a per cpu basis. Update the H_CALL handler to set these bits in the LPCR correctly for all cpus of the guest. Note it is the reponsibility of the guest to ensure that any secondary cpus are suspended when the H_CALL is made and thus we can safely update these values here. Signed-off-by: Suraj Jitindar Singh Signed-off-by: David Gibson --- hw/ppc/spapr_hcall.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 9f18f75..0d608d6 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -936,7 +936,7 @@ static target_ulong h_register_process_table(PowerPCCPU= *cpu, target_ulong opcode, target_ulong *args) { - CPUPPCState *env =3D &cpu->env; + CPUState *cs; target_ulong flags =3D args[0]; target_ulong proc_tbl =3D args[1]; target_ulong page_size =3D args[2]; @@ -992,16 +992,12 @@ static target_ulong h_register_process_table(PowerPCC= PU *cpu, spapr_check_setup_free_hpt(spapr, spapr->patb_entry, cproc); =20 spapr->patb_entry =3D cproc; /* Save new process table */ - if ((flags & FLAG_RADIX) || (flags & FLAG_HASH_PROC_TBL)) { - /* Use Process TBL */ - env->spr[SPR_LPCR] |=3D LPCR_UPRT; - } else { - env->spr[SPR_LPCR] &=3D ~LPCR_UPRT; - } - if (flags & FLAG_GTSE) { /* Partition Uses Guest Translation Shootdwn = */ - env->spr[SPR_LPCR] |=3D LPCR_GTSE; - } else { - env->spr[SPR_LPCR] &=3D ~LPCR_GTSE; + + /* Update the UPRT and GTSE bits in the LPCR for all cpus */ + CPU_FOREACH(cs) { + set_spr(cs, SPR_LPCR, LPCR_UPRT | LPCR_GTSE, + ((flags & (FLAG_RADIX | FLAG_HASH_PROC_TBL)) ? LPCR_UPRT := 0) | + ((flags & FLAG_GTSE) ? LPCR_GTSE : 0)); } =20 if (kvm_enabled()) { --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476560235784.0533528196974; Wed, 10 May 2017 21:22:40 -0700 (PDT) Received: from localhost ([::1]:45889 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fcc-0003dh-Oh for importer@patchew.org; Thu, 11 May 2017 00:22:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56229) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUz-0005Nl-2e for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001WS-EI for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:44 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:51889) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001SC-Sf; Thu, 11 May 2017 00:14:43 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS0G0vz9sDF; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=QK+UoOG4kA8QcLfXYYjVcIBrJv0eTlTr4n1If4cXqVY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dYEcF9An6PdQSuMcw5jMuMgaDDmxKe7CujKBbo5N7V7D+DmUOU/YpP1oihQXHHGoL OJvAsyuEdrbdkPWlG+UDIUGhnfxFhGh2a6BjvJTEsSESjYlSfN+vE4GIz4tXyoHHhT 236UfsQrU4FsN16T8ZTba+HF7lPRJw18OkdaEHYA= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:18 +1000 Message-Id: <20170511041426.6488-16-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 15/23] target/ppc: Update tlbie to check privilege level based on GTSE 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh The Guest Translation Shootdown Enable (GTSE) bit in the Logical Partition Control Register (LPCR) can be set to enable a guest to use the tlbie instruction directly to invalidate translations. When the GTSE bit is set then the tlbie instruction is supervisor privileged, otherwise it is hypervisor privileged. Add a guest translation shootdown enable (gtse) field to the diassembly context and use this to check the correct privilege level at code generation time. Signed-off-by: Suraj Jitindar Singh Reviewed-by: David Gibson Signed-off-by: David Gibson --- target/ppc/translate.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 4a1f24a..1ce6ab1 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -218,6 +218,7 @@ struct DisasContext { bool vsx_enabled; bool spe_enabled; bool tm_enabled; + bool gtse; ppc_spr_t *spr_cb; /* Needed to check rights for mfspr/mtspr */ int singlestep_enabled; uint64_t insns_flags; @@ -4538,7 +4539,12 @@ static void gen_tlbie(DisasContext *ctx) GEN_PRIV; #else TCGv_i32 t1; - CHK_HV; + + if (ctx->gtse) { + CHK_SV; /* If gtse is set then tblie is supervisor privileged */ + } else { + CHK_HV; /* Else hypervisor privileged */ + } =20 if (NARROW_MODE(ctx)) { TCGv t0 =3D tcg_temp_new(); @@ -7252,6 +7258,7 @@ void gen_intermediate_code(CPUPPCState *env, struct T= ranslationBlock *tb) ctx.tm_enabled =3D false; } #endif + ctx.gtse =3D !!(env->spr[SPR_LPCR] & LPCR_GTSE); if ((env->flags & POWERPC_FLAG_SE) && msr_se) ctx.singlestep_enabled =3D CPU_SINGLE_STEP; else --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476933457753.4723000396081; Wed, 10 May 2017 21:28:53 -0700 (PDT) Received: from localhost ([::1]:45929 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fie-0001AZ-8N for importer@patchew.org; Thu, 11 May 2017 00:28:52 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUy-0005NI-Ra for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUw-0001VN-Tm for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:44 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:47483) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001RX-EX; Thu, 11 May 2017 00:14:42 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR5mGyz9sNX; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=6ocV+r65EMe8dBBwz7u3kYDpdSHR8XhtBhCaL2IeLX0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dJHfjn8IUgCVdTJwo651pCOODqsvH+lsILxomyOb88MV5zrBs5JYjdCyU3dttSBPl sev+ADm4gQOcsJsWQ/8rH/u1H5ahGPaGcK6apIBJGxoi34KeNVN1cSSOJGhbwgp+xk nvymRzFM39o3NbLXW29JEpu+JJyHpxdOdz2gjZ7Q= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:19 +1000 Message-Id: <20170511041426.6488-17-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 16/23] target/ppc: Change tlbie invalid fields for POWER9 support 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh The tlbie[l] instructions are used to invalidate TLB entries used to cache address translations. In ISAv3.00 (POWER9) more fields were added to the tblie[l] instructions which were previously invalid. We don't care about any of these new fields since we just invalidate the whole world anyway but we need to not cause an illegal instruction exception when the instructions are called. We also don't want to allow an older processor to have these fields set since that would be invalid. Add a new GEN_HANDLER for the ISAv3 instructions with the correct invalid mask. These will only be generated to a POWER9 processor for now based on the instruction flag. Also remove the PPC_MEM_TLBIE instruction flag from the POWER9 processor definition to ensure the old tlbie isn't generated. Signed-off-by: Suraj Jitindar Singh Reviewed-by: David Gibson Signed-off-by: David Gibson --- target/ppc/translate.c | 2 ++ target/ppc/translate_init.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 1ce6ab1..c0cd64d 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -6578,6 +6578,8 @@ GEN_HANDLER(tlbia, 0x1F, 0x12, 0x0B, 0x03FFFC01, PPC_= MEM_TLBIA), * different ISA versions */ GEN_HANDLER(tlbiel, 0x1F, 0x12, 0x08, 0x001F0001, PPC_MEM_TLBIE), GEN_HANDLER(tlbie, 0x1F, 0x12, 0x09, 0x001F0001, PPC_MEM_TLBIE), +GEN_HANDLER_E(tlbiel, 0x1F, 0x12, 0x08, 0x00100001, PPC_NONE, PPC2_ISA300), +GEN_HANDLER_E(tlbie, 0x1F, 0x12, 0x09, 0x00100001, PPC_NONE, PPC2_ISA300), GEN_HANDLER(tlbsync, 0x1F, 0x16, 0x11, 0x03FFF801, PPC_MEM_TLBSYNC), #if defined(TARGET_PPC64) GEN_HANDLER(slbia, 0x1F, 0x12, 0x0F, 0x031FFC01, PPC_SLBI), diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index 9b048cd..fda30b0 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -8960,7 +8960,7 @@ POWERPC_FAMILY(POWER9)(ObjectClass *oc, void *data) PPC_FLOAT_EXT | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | PPC_MEM_SYNC | PPC_MEM_EIEIO | - PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | + PPC_MEM_TLBSYNC | PPC_64B | PPC_64BX | PPC_ALTIVEC | PPC_SEGMENT_64B | PPC_SLBI | PPC_POPCNTB | PPC_POPCNTWD | --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476867867310.99721056955775; Wed, 10 May 2017 21:27:47 -0700 (PDT) Received: from localhost ([::1]:45925 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fha-0000Go-BT for importer@patchew.org; Thu, 11 May 2017 00:27:46 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56342) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV1-0005RX-K7 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001WO-FA for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:47 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:56293) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001RQ-GC; Thu, 11 May 2017 00:14:43 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR5GRtz9sNb; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=5e2CJIZMfNNxegcbq8Bg+re2FFu3WEgmSnQPesx+x7s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TUTMspyiXNfKjk7LMc1hQAwTaPnrEA6EOS83mv+16bWUC25cVuXDcss5WvpyS2VYc YGxahLigtaOGAcL7lB+6/LBv4dRbqgYMPPMKP38cr1+grTuu9Ul5ZVlCRbjRNxuW7g xYxb6Wg0X2NzoYBjoBBjzuuKmuVk26q/Z+qR042M= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:20 +1000 Message-Id: <20170511041426.6488-18-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 17/23] target/ppc: Implement ISA V3.00 radix page fault handler 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh ISA V3.00 introduced a new radix mmu model. Implement the page fault handler for this so we can run a tcg guest in radix mode and perform address translation correctly. In real mode (mmu turned off) addresses are masked to remove the top 4 bits and then are subject to partition scoped translation, since we only support pseries at this stage it is only necessary to perform the masking and then we're done. In virtual mode (mmu turned on) address translation if performed as follows: 1. Use the quadrant to determine the fully qualified address. The fully qualified address is defined as the combination of the effective address, the effective logical partition id (LPID) and the effective process id (PID). Based on the quadrant (EA63:62) we set the pid and lpid like so: quadrant 0: lpid =3D LPIDR, pid =3D PIDR quadrant 1: HV only (not allowed in pseries) quadrant 2: HV only (not allowed in pseries) quadrant 3: lpid =3D LPIDR, pid =3D 0 If we can't get the fully qualified address we raise a segment interrupt. 2. Find the guest radix tree We ask the virtual hypervisor for the partition table which was registered with H_REGISTER_PROC_TBL which points us to the process table in guest memory. We then index this table by pid to get the process table entry which points us to the appropriate radix tree to translate the address. If the process table isn't big enough to contain an entry for the current pid then we raise a storage interrupt. 3. Walk the radix tree Next we walk the radix tree where each level is a table of page directory entries indexed by some number of bits from the effective address, where the number of bits is determined by the table size. We continue to walk the tree (while entries are valid and the table is of minimum size) until we reach a table of page table entries, indicated by having the leaf bit set. The appropriate pte is then checked for sufficient access permissions, the reference and change bits are updated and the real address is calculated from the real page number bits of the pte and the low bits of the effective address. If we can't find an entry or can't access the entry bacause of permissions then we raise a storage interrupt. Signed-off-by: Suraj Jitindar Singh [dwg: Add missing parentheses to macro] Signed-off-by: David Gibson --- target/ppc/Makefile.objs | 1 + target/ppc/cpu.h | 2 + target/ppc/mmu-book3s-v3.c | 6 +- target/ppc/mmu-book3s-v3.h | 5 + target/ppc/mmu-radix64.c | 259 +++++++++++++++++++++++++++++++++++++++++= ++++ target/ppc/mmu-radix64.h | 72 +++++++++++++ 6 files changed, 341 insertions(+), 4 deletions(-) create mode 100644 target/ppc/mmu-radix64.c create mode 100644 target/ppc/mmu-radix64.h diff --git a/target/ppc/Makefile.objs b/target/ppc/Makefile.objs index f963777..f92ba67 100644 --- a/target/ppc/Makefile.objs +++ b/target/ppc/Makefile.objs @@ -4,6 +4,7 @@ obj-y +=3D translate.o ifeq ($(CONFIG_SOFTMMU),y) obj-y +=3D machine.o mmu_helper.o mmu-hash32.o monitor.o arch_dump.o obj-$(TARGET_PPC64) +=3D mmu-hash64.o mmu-book3s-v3.o compat.o +obj-$(TARGET_PPC64) +=3D mmu-radix64.o endif obj-$(CONFIG_KVM) +=3D kvm.o obj-$(call lnot,$(CONFIG_KVM)) +=3D kvm-stub.o diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index ece535d..c0f63f6 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -482,6 +482,8 @@ struct ppc_slb_t { #define DSISR_ISSTORE 0x02000000 /* Not permitted by virtual page class key protection */ #define DSISR_AMR 0x00200000 +/* Unsupported Radix Tree Configuration */ +#define DSISR_R_BADCONFIG 0x00080000 =20 /* SRR1 error code fields */ =20 diff --git a/target/ppc/mmu-book3s-v3.c b/target/ppc/mmu-book3s-v3.c index 005c963..e7798b3 100644 --- a/target/ppc/mmu-book3s-v3.c +++ b/target/ppc/mmu-book3s-v3.c @@ -22,15 +22,13 @@ #include "cpu.h" #include "mmu-hash64.h" #include "mmu-book3s-v3.h" -#include "qemu/error-report.h" +#include "mmu-radix64.h" =20 int ppc64_v3_handle_mmu_fault(PowerPCCPU *cpu, vaddr eaddr, int rwx, int mmu_idx) { if (ppc64_radix_guest(cpu)) { /* Guest uses radix */ - /* TODO - Unsupported */ - error_report("Guest Radix Support Unimplemented"); - exit(1); + return ppc_radix64_handle_mmu_fault(cpu, eaddr, rwx, mmu_idx); } else { /* Guest uses hash */ return ppc_hash64_handle_mmu_fault(cpu, eaddr, rwx, mmu_idx); } diff --git a/target/ppc/mmu-book3s-v3.h b/target/ppc/mmu-book3s-v3.h index 636f6ab..56095da 100644 --- a/target/ppc/mmu-book3s-v3.h +++ b/target/ppc/mmu-book3s-v3.h @@ -25,6 +25,11 @@ /* Partition Table Entry Fields */ #define PATBE1_GR 0x8000000000000000 =20 +/* Process Table Entry */ +struct prtb_entry { + uint64_t prtbe0, prtbe1; +}; + #ifdef TARGET_PPC64 =20 static inline bool ppc64_use_proc_tbl(PowerPCCPU *cpu) diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c new file mode 100644 index 0000000..de18c0b --- /dev/null +++ b/target/ppc/mmu-radix64.c @@ -0,0 +1,259 @@ +/* + * PowerPC Radix MMU mulation helpers for QEMU. + * + * Copyright (c) 2016 Suraj Jitindar Singh, IBM Corporation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "cpu.h" +#include "exec/exec-all.h" +#include "exec/helper-proto.h" +#include "qemu/error-report.h" +#include "sysemu/kvm.h" +#include "kvm_ppc.h" +#include "exec/log.h" +#include "mmu-radix64.h" +#include "mmu-book3s-v3.h" + +static bool ppc_radix64_get_fully_qualified_addr(CPUPPCState *env, vaddr e= addr, + uint64_t *lpid, uint64_t = *pid) +{ + /* We don't have HV support yet and shouldn't get here with it set any= way */ + assert(!msr_hv); + + if (!msr_hv) { /* !MSR[HV] -> Guest */ + switch (eaddr & R_EADDR_QUADRANT) { + case R_EADDR_QUADRANT0: /* Guest application */ + *lpid =3D env->spr[SPR_LPIDR]; + *pid =3D env->spr[SPR_BOOKS_PID]; + break; + case R_EADDR_QUADRANT1: /* Illegal */ + case R_EADDR_QUADRANT2: + return false; + case R_EADDR_QUADRANT3: /* Guest OS */ + *lpid =3D env->spr[SPR_LPIDR]; + *pid =3D 0; /* pid set to 0 -> addresses guest operating syste= m */ + break; + } + } + + return true; +} + +static void ppc_radix64_raise_segi(PowerPCCPU *cpu, int rwx, vaddr eaddr) +{ + CPUState *cs =3D CPU(cpu); + CPUPPCState *env =3D &cpu->env; + + if (rwx =3D=3D 2) { /* Instruction Segment Interrupt */ + cs->exception_index =3D POWERPC_EXCP_ISEG; + } else { /* Data Segment Interrupt */ + cs->exception_index =3D POWERPC_EXCP_DSEG; + env->spr[SPR_DAR] =3D eaddr; + } + env->error_code =3D 0; +} + +static void ppc_radix64_raise_si(PowerPCCPU *cpu, int rwx, vaddr eaddr, + uint32_t cause) +{ + CPUState *cs =3D CPU(cpu); + CPUPPCState *env =3D &cpu->env; + + if (rwx =3D=3D 2) { /* Instruction Storage Interrupt */ + cs->exception_index =3D POWERPC_EXCP_ISI; + env->error_code =3D cause; + } else { /* Data Storage Interrupt */ + cs->exception_index =3D POWERPC_EXCP_DSI; + if (rwx =3D=3D 1) { /* Write -> Store */ + cause |=3D DSISR_ISSTORE; + } + env->spr[SPR_DSISR] =3D cause; + env->spr[SPR_DAR] =3D eaddr; + env->error_code =3D 0; + } +} + + +static bool ppc_radix64_check_prot(PowerPCCPU *cpu, int rwx, uint64_t pte, + int *fault_cause, int *prot) +{ + CPUPPCState *env =3D &cpu->env; + const int need_prot[] =3D { PAGE_READ, PAGE_WRITE, PAGE_EXEC }; + + /* Check Page Attributes (pte58:59) */ + if (((pte & R_PTE_ATT) =3D=3D R_PTE_ATT_NI_IO) && (rwx =3D=3D 2)) { + /* + * Radix PTE entries with the non-idempotent I/O attribute are tre= ated + * as guarded storage + */ + *fault_cause |=3D SRR1_NOEXEC_GUARD; + return true; + } + + /* Determine permissions allowed by Encoded Access Authority */ + if ((pte & R_PTE_EAA_PRIV) && msr_pr) { /* Insufficient Privilege */ + *prot =3D 0; + } else if (msr_pr || (pte & R_PTE_EAA_PRIV)) { + *prot =3D ppc_radix64_get_prot_eaa(pte); + } else { /* !msr_pr && !(pte & R_PTE_EAA_PRIV) */ + *prot =3D ppc_radix64_get_prot_eaa(pte); + *prot &=3D ppc_radix64_get_prot_amr(cpu); /* Least combined permis= sions */ + } + + /* Check if requested access type is allowed */ + if (need_prot[rwx] & ~(*prot)) { /* Page Protected for that Access */ + *fault_cause |=3D DSISR_PROTFAULT; + return true; + } + + return false; +} + +static void ppc_radix64_set_rc(PowerPCCPU *cpu, int rwx, uint64_t pte, + hwaddr pte_addr, int *prot) +{ + CPUState *cs =3D CPU(cpu); + uint64_t npte; + + npte =3D pte | R_PTE_R; /* Always set reference bit */ + + if (rwx =3D=3D 1) { /* Store/Write */ + npte |=3D R_PTE_C; /* Set change bit */ + } else { + /* + * Treat the page as read-only for now, so that a later write + * will pass through this function again to set the C bit. + */ + *prot &=3D ~PAGE_WRITE; + } + + if (pte ^ npte) { /* If pte has changed then write it back */ + stq_phys(cs->as, pte_addr, npte); + } +} + +static uint64_t ppc_radix64_walk_tree(PowerPCCPU *cpu, int rwx, vaddr eadd= r, + uint64_t base_addr, uint64_t nls, + hwaddr *raddr, int *psize, + int *fault_cause, int *prot, + hwaddr *pte_addr) +{ + CPUState *cs =3D CPU(cpu); + uint64_t index, pde; + + if (nls < 5) { /* Directory maps less than 2**5 entries */ + *fault_cause |=3D DSISR_R_BADCONFIG; + return 0; + } + + /* Read page entry from guest address space */ + index =3D eaddr >> (*psize - nls); /* Shift */ + index &=3D ((1UL << nls) - 1); /* Mask */ + pde =3D ldq_phys(cs->as, base_addr + (index * sizeof(pde))); + if (!(pde & R_PTE_VALID)) { /* Invalid Entry */ + *fault_cause |=3D DSISR_NOPTE; + return 0; + } + + *psize -=3D nls; + + /* Check if Leaf Entry -> Page Table Entry -> Stop the Search */ + if (pde & R_PTE_LEAF) { + uint64_t rpn =3D pde & R_PTE_RPN; + uint64_t mask =3D (1UL << *psize) - 1; + + if (ppc_radix64_check_prot(cpu, rwx, pde, fault_cause, prot)) { + return 0; /* Protection Denied Access */ + } + + /* Or high bits of rpn and low bits to ea to form whole real addr = */ + *raddr =3D (rpn & ~mask) | (eaddr & mask); + *pte_addr =3D base_addr + (index * sizeof(pde)); + return pde; + } + + /* Next Level of Radix Tree */ + return ppc_radix64_walk_tree(cpu, rwx, eaddr, pde & R_PDE_NLB, + pde & R_PDE_NLS, raddr, psize, + fault_cause, prot, pte_addr); +} + +int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vaddr eaddr, int rwx, + int mmu_idx) +{ + CPUState *cs =3D CPU(cpu); + CPUPPCState *env =3D &cpu->env; + PPCVirtualHypervisorClass *vhc =3D + PPC_VIRTUAL_HYPERVISOR_GET_CLASS(cpu->vhyp); + hwaddr raddr, pte_addr; + uint64_t lpid =3D 0, pid =3D 0, offset, size, patbe, prtbe0, pte; + int page_size, prot, fault_cause =3D 0; + + assert((rwx =3D=3D 0) || (rwx =3D=3D 1) || (rwx =3D=3D 2)); + assert(!msr_hv); /* For now there is no Radix PowerNV Support */ + assert(cpu->vhyp); + assert(ppc64_use_proc_tbl(cpu)); + + /* Real Mode Access */ + if (((rwx =3D=3D 2) && (msr_ir =3D=3D 0)) || ((rwx !=3D 2) && (msr_dr = =3D=3D 0))) { + /* In real mode top 4 effective addr bits (mostly) ignored */ + raddr =3D eaddr & 0x0FFFFFFFFFFFFFFFULL; + + tlb_set_page(cs, eaddr & TARGET_PAGE_MASK, raddr & TARGET_PAGE_MAS= K, + PAGE_READ | PAGE_WRITE | PAGE_EXEC, mmu_idx, + TARGET_PAGE_SIZE); + return 0; + } + + /* Virtual Mode Access - get the fully qualified address */ + if (!ppc_radix64_get_fully_qualified_addr(env, eaddr, &lpid, &pid)) { + ppc_radix64_raise_segi(cpu, rwx, eaddr); + return 1; + } + + /* Get Process Table */ + patbe =3D vhc->get_patbe(cpu->vhyp); + + /* Index Process Table by PID to Find Corresponding Process Table Entr= y */ + offset =3D pid * sizeof(struct prtb_entry); + size =3D 1ULL << ((patbe & PATBE1_R_PRTS) + 12); + if (offset >=3D size) { + /* offset exceeds size of the process table */ + ppc_radix64_raise_si(cpu, rwx, eaddr, DSISR_NOPTE); + return 1; + } + prtbe0 =3D ldq_phys(cs->as, (patbe & PATBE1_R_PRTB) + offset); + + /* Walk Radix Tree from Process Table Entry to Convert EA to RA */ + page_size =3D PRTBE_R_GET_RTS(prtbe0); + pte =3D ppc_radix64_walk_tree(cpu, rwx, eaddr & R_EADDR_MASK, + prtbe0 & PRTBE_R_RPDB, prtbe0 & PRTBE_R_RP= DS, + &raddr, &page_size, &fault_cause, &prot, + &pte_addr); + if (!pte) { + ppc_radix64_raise_si(cpu, rwx, eaddr, fault_cause); + return 1; + } + + /* Update Reference and Change Bits */ + ppc_radix64_set_rc(cpu, rwx, pte, pte_addr, &prot); + + tlb_set_page(cs, eaddr & TARGET_PAGE_MASK, raddr & TARGET_PAGE_MASK, + prot, mmu_idx, 1UL << page_size); + return 1; +} diff --git a/target/ppc/mmu-radix64.h b/target/ppc/mmu-radix64.h new file mode 100644 index 0000000..1d5c7cf --- /dev/null +++ b/target/ppc/mmu-radix64.h @@ -0,0 +1,72 @@ +#ifndef MMU_RADIX64_H +#define MMU_RADIX64_H + +#ifndef CONFIG_USER_ONLY + +/* Radix Quadrants */ +#define R_EADDR_MASK 0x3FFFFFFFFFFFFFFF +#define R_EADDR_QUADRANT 0xC000000000000000 +#define R_EADDR_QUADRANT0 0x0000000000000000 +#define R_EADDR_QUADRANT1 0x4000000000000000 +#define R_EADDR_QUADRANT2 0x8000000000000000 +#define R_EADDR_QUADRANT3 0xC000000000000000 + +/* Radix Partition Table Entry Fields */ +#define PATBE1_R_PRTB 0x0FFFFFFFFFFFF000 +#define PATBE1_R_PRTS 0x000000000000001F + +/* Radix Process Table Entry Fields */ +#define PRTBE_R_GET_RTS(rts) \ + ((((rts >> 58) & 0x18) | ((rts >> 5) & 0x7)) + 31) +#define PRTBE_R_RPDB 0x0FFFFFFFFFFFFF00 +#define PRTBE_R_RPDS 0x000000000000001F + +/* Radix Page Directory/Table Entry Fields */ +#define R_PTE_VALID 0x8000000000000000 +#define R_PTE_LEAF 0x4000000000000000 +#define R_PTE_SW0 0x2000000000000000 +#define R_PTE_RPN 0x01FFFFFFFFFFF000 +#define R_PTE_SW1 0x0000000000000E00 +#define R_GET_SW(sw) (((sw >> 58) & 0x8) | ((sw >> 9) & 0x7)) +#define R_PTE_R 0x0000000000000100 +#define R_PTE_C 0x0000000000000080 +#define R_PTE_ATT 0x0000000000000030 +#define R_PTE_ATT_NORMAL 0x0000000000000000 +#define R_PTE_ATT_SAO 0x0000000000000010 +#define R_PTE_ATT_NI_IO 0x0000000000000020 +#define R_PTE_ATT_TOLERANT_IO 0x0000000000000030 +#define R_PTE_EAA_PRIV 0x0000000000000008 +#define R_PTE_EAA_R 0x0000000000000004 +#define R_PTE_EAA_RW 0x0000000000000002 +#define R_PTE_EAA_X 0x0000000000000001 +#define R_PDE_NLB PRTBE_R_RPDB +#define R_PDE_NLS PRTBE_R_RPDS + +#ifdef TARGET_PPC64 + +int ppc_radix64_handle_mmu_fault(PowerPCCPU *cpu, vaddr eaddr, int rwx, + int mmu_idx); + +static inline int ppc_radix64_get_prot_eaa(uint64_t pte) +{ + return (pte & R_PTE_EAA_R ? PAGE_READ : 0) | + (pte & R_PTE_EAA_RW ? PAGE_READ | PAGE_WRITE : 0) | + (pte & R_PTE_EAA_X ? PAGE_EXEC : 0); +} + +static inline int ppc_radix64_get_prot_amr(PowerPCCPU *cpu) +{ + CPUPPCState *env =3D &cpu->env; + int amr =3D env->spr[SPR_AMR] >> 62; /* We only care about key0 AMR63:= 62 */ + int iamr =3D env->spr[SPR_IAMR] >> 62; /* We only care about key0 IAMR= 63:62 */ + + return (amr & 0x2 ? 0 : PAGE_WRITE) | /* Access denied if bit is set */ + (amr & 0x1 ? 0 : PAGE_READ) | + (iamr & 0x1 ? 0 : PAGE_EXEC); +} + +#endif /* TARGET_PPC64 */ + +#endif /* CONFIG_USER_ONLY */ + +#endif /* MMU_RADIX64_H */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 149447685661541.67420173694711; Wed, 10 May 2017 21:27:36 -0700 (PDT) Received: from localhost ([::1]:45923 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fhP-00007V-38 for importer@patchew.org; Thu, 11 May 2017 00:27:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUz-0005Ot-W2 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001Vl-26 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:45 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:52439) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001Rb-J8; Thu, 11 May 2017 00:14:42 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR6L8jz9sNT; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=LFLodYMco7+DFmyshus5YnRZNrQW3/wjbRqAaE3fE7o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nQlP5+pS/wR89b4us0pJ4LryO/145Q8p97X5W483unNR0a4qaAzVABE9k1ReHAWCJ e5n+NA5KwpHc+8rD3SUA833CknGsOgUITRtc+/c0+jP6vpwpJDt+ITWYayS3GRma24 Kw8H2n/GeRW/FxCi4Pf88GJnDK4C3jpQBTOfu9eU= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:21 +1000 Message-Id: <20170511041426.6488-19-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 18/23] target/ppc: Enable RADIX mmu mode for pseries TCG guest 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Suraj Jitindar Singh Now that we have added all the infrastructure we can enable a pseries TCG guest to use radix. In order to do this we have to add the appropriate bits to the ibm,arch-vec-5-platform-support vector to represent that we support both hash and radix mmu models. A radix guest can now be booted in pseries tcg mode by specifying: -cpu POWER9 Note that we assume hash, that is we allocate a hpt, until a guest tells us otherwise via a H_REGISTER_PROCESS_TABLE call with radix specified - in which case we free the hpt. If we were right and the guest is hash then there's nothing for us to do. Signed-off-by: Suraj Jitindar Singh Reviewed-by: David Gibson Signed-off-by: David Gibson --- hw/ppc/spapr.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 80d12d0..e2dc77c 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -855,6 +855,8 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, voi= d *fdt) * option vector 5: */ static void spapr_dt_ov5_platform_support(void *fdt, int chosen) { + PowerPCCPU *first_ppc_cpu =3D POWERPC_CPU(first_cpu); + char val[2 * 3] =3D { 24, 0x00, /* Hash/Radix, filled in below. */ 25, 0x00, /* Hash options: Segment Tables =3D=3D no, GTSE =3D=3D n= o. */ @@ -870,8 +872,13 @@ static void spapr_dt_ov5_platform_support(void *fdt, i= nt chosen) val[1] =3D 0x00; /* Hash */ } } else { - /* TODO: TCG case, hash */ - val[1] =3D 0x00; + if (first_ppc_cpu->env.mmu_model & POWERPC_MMU_V3) { + /* V3 MMU supports both hash and radix (with dynamic switching= ) */ + val[1] =3D 0xC0; + } else { + /* Otherwise we can only do hash */ + val[1] =3D 0x00; + } } _FDT(fdt_setprop(fdt, chosen, "ibm,arch-vec-5-platform-support", val, sizeof(val))); @@ -2101,8 +2108,8 @@ static void ppc_spapr_init(MachineState *machine) } =20 spapr_ovec_set(spapr->ov5, OV5_FORM1_AFFINITY); - if (kvmppc_has_cap_mmu_radix()) { - /* KVM always allows GTSE with radix... */ + if (!kvm_enabled() || kvmppc_has_cap_mmu_radix()) { + /* KVM and TCG always allow GTSE with radix... */ spapr_ovec_set(spapr->ov5, OV5_MMU_RADIX_GTSE); } /* ... but not with hash (currently). */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 149447639531998.7589617821667; Wed, 10 May 2017 21:19:55 -0700 (PDT) Received: from localhost ([::1]:45872 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fZx-00017c-WA for importer@patchew.org; Thu, 11 May 2017 00:19:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56178) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUy-0005MU-9x for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUw-0001VI-Qz for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:44 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:43693) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUw-0001RF-CM; Thu, 11 May 2017 00:14:42 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrR4dRXz9sNN; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476071; bh=30sGIHm0RE7NLpfzOEo7pQi1y1wtsPLFGTV2Kuvs5wA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eEOJVUahOet9cwp7qwvQop+xnIuGDYWRW8Qmg3fK3TyOj8l7+wXesJLqM9C1pgwpR ifhPtiPup7sCKMVV/FjUeTfL8f4VP9ojz+72QxXIj5dDdNVbpDJnADJh8DZl6XTkyL 3zk8TxtdhKP1JvCcW7ayDMFZkHQS9aosd4PctWnM= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:22 +1000 Message-Id: <20170511041426.6488-20-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 19/23] ppc: xics: fix compilation with CentOS 6 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, Paolo Bonzini , sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Paolo Bonzini The PowerPCCPU typedef is included twice if a file includes both hw/ppc/xics.h and target/ppc/cpu-qom.h. Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: David Gibson --- include/hw/ppc/xics.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h index 68525c8..05e6acb 100644 --- a/include/hw/ppc/xics.h +++ b/include/hw/ppc/xics.h @@ -29,6 +29,7 @@ #define XICS_H =20 #include "hw/qdev.h" +#include "target/ppc/cpu-qom.h" =20 #define XICS_IPI 0x2 #define XICS_BUID 0x1 @@ -46,7 +47,6 @@ typedef struct ICSStateClass ICSStateClass; typedef struct ICSState ICSState; typedef struct ICSIRQState ICSIRQState; typedef struct XICSFabric XICSFabric; -typedef struct PowerPCCPU PowerPCCPU; =20 #define TYPE_ICP "icp" #define ICP(obj) OBJECT_CHECK(ICPState, (obj), TYPE_ICP) --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494476819640731.2616409984587; Wed, 10 May 2017 21:26:59 -0700 (PDT) Received: from localhost ([::1]:45920 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fgo-0007gV-49 for importer@patchew.org; Thu, 11 May 2017 00:26:58 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fUz-0005O4-7W for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUx-0001XK-S4 for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:45 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:52495) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUx-0001Sb-C4; Thu, 11 May 2017 00:14:43 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS1Gftz9sNK; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=hl1CHNveVTsYHxa8oFoS1rHsEcbzipc2z4tICe5rBxo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H0UjOxqfSJkcFg6a1l7iAE/IRaAioVhFL/yvsPuCl7/unw5yqvnci+7ZVCeRDu++q nTi7bj0NvdiuQKMNmlreVKQfDliHHQw5EhCjifOGRpUmXD7zCbd0P9lJltOOfJxQut aeTl4Yomu4o62/IyTnaN4is4b2SGMV/LwE13BFO8= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:23 +1000 Message-Id: <20170511041426.6488-21-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 20/23] spapr: Don't accidentally advertise HTM support on POWER9 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Logic in spapr_populate_pa_features() enables the bit advertising Hardware Transactional Memory (HTM) in the guest's device tree only when KVM advertises its availability with the KVM_CAP_PPC_HTM feature. However, this assumes that the HTM bit is off in the base template used for the device tree value. That is true for POWER8, but not for POWER9. It looks like that was accidentally changed in 9fb4541 "spapr: Enable ISA 3.0 MMU mode selection via CAS". Fixes: 9fb4541f5803f8d2ba116b12113386e26482ba30 Signed-off-by: David Gibson Reviewed-by: Thomas Huth --- hw/ppc/spapr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index e2dc77c..1b7cada 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -219,7 +219,7 @@ static void spapr_populate_pa_features(CPUPPCState *env= , void *fdt, int offset, /* 16: Vector */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, /* 12 - 17 */ /* 18: Vec. Scalar, 20: Vec. XOR, 22: HTM */ - 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 18 - 23 */ + 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, /* 18 - 23 */ /* 24: Ext. Dec, 26: 64 bit ftrs, 28: PM ftrs */ 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, /* 24 - 29 */ /* 30: MMR, 32: LE atomic, 34: EBB + ext EBB */ --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494477021199268.50813599071364; Wed, 10 May 2017 21:30:21 -0700 (PDT) Received: from localhost ([::1]:45940 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fk2-0002Be-S1 for importer@patchew.org; Thu, 11 May 2017 00:30:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56340) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV1-0005RW-Ja for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fV0-0001aU-9U for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:47 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:50055) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUz-0001Ws-PE; Thu, 11 May 2017 00:14:46 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS5QzFz9sNg; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=bWFEgCbF+iBjHQa+gwPqVmXETPMBKjdEREPmvaGVNQ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nHqnKohsdSDnwgWqFDNY7jdeKs8YZHQ5CWfSfLnLJV7L91jIGofHaZwaQKdXinECq 0r9OGjC2/vRUGoIQ2bR1h8dJFnZBWpgBCFjVViCXQMEe+2vZhHFSQ4Vcfn8EjnJ6sN 38/YINcY+zfKUmRaNWLLEyjBo4FkanxVdjdA6JG4= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:24 +1000 Message-Id: <20170511041426.6488-22-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2401:3900:2:1::2 Subject: [Qemu-devel] [PULL 21/23] target/ppc: Allow workarounds for POWER9 DD1 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" POWER9 DD1 silicon has some bugs which mean it a) isn't really compliant with the ISA v3.00 and b) require a number of special workarounds in the kernel. At the moment, qemu isn't aware of DD1. For TCG we don't really want it to be (why bother emulating buggy silicon). But with KVM, the guest does need to be aware of DD1 so it can apply the necessary workarounds. Meanwhile, the feature negotiation between qemu and the guest strongly favours architected compatibility modes to "raw" CPU modes. In combination with the above, this means the guest sees architected POWER9 mode, and doesn't apply the DD1 workarounds. Well, unless it has yet another workaround to partially ignore what qemu tells it. This patch addresses this by disabling support for compatibility modes when using KVM on a POWER9 DD1 host. Signed-off-by: David Gibson --- target/ppc/cpu-models.h | 1 + target/ppc/kvm.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/target/ppc/cpu-models.h b/target/ppc/cpu-models.h index d587e69..b563c45 100644 --- a/target/ppc/cpu-models.h +++ b/target/ppc/cpu-models.h @@ -561,6 +561,7 @@ enum { CPU_POWERPC_POWER8NVL_BASE =3D 0x004C0000, CPU_POWERPC_POWER8NVL_v10 =3D 0x004C0100, CPU_POWERPC_POWER9_BASE =3D 0x004E0000, + CPU_POWERPC_POWER9_DD1 =3D 0x004E0100, CPU_POWERPC_970_v22 =3D 0x00390202, CPU_POWERPC_970FX_v10 =3D 0x00391100, CPU_POWERPC_970FX_v20 =3D 0x003C0200, diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 8574c36..cb2cf2b 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2380,6 +2380,17 @@ static void kvmppc_host_cpu_class_init(ObjectClass *= oc, void *data) =20 #if defined(TARGET_PPC64) pcc->radix_page_info =3D kvm_get_radix_page_info(); + + if ((pcc->pvr & 0xffffff00) =3D=3D CPU_POWERPC_POWER9_DD1) { + /* + * POWER9 DD1 has some bugs which make it not really ISA 3.00 + * compliant. More importantly, advertising ISA 3.00 + * architected mode may prevent guests from activating + * necessary DD1 workarounds. + */ + pcc->pcr_supported &=3D ~(PCR_COMPAT_3_00 | PCR_COMPAT_2_07 + | PCR_COMPAT_2_06 | PCR_COMPAT_2_05); + } #endif /* defined(TARGET_PPC64) */ } =20 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494477100523890.9121017699317; Wed, 10 May 2017 21:31:40 -0700 (PDT) Received: from localhost ([::1]:45951 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8flL-0003CF-Bq for importer@patchew.org; Thu, 11 May 2017 00:31:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56362) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV2-0005Si-4z for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fV0-0001at-LA for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:48 -0400 Received: from ozlabs.org ([103.22.144.67]:42177) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fV0-0001W4-4p; Thu, 11 May 2017 00:14:46 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS2hpPz9sNc; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=3uxRj6UY9/2j5Hf/sN+g3Op+XC2z9TRo0Lzite0FeS8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZXWrQH040WFsI7eWoNSGufJAntOJfmfqJsIT3j22rmH6fx9z0+9ngcneEYYSu1dmr QDhrvsffWGLqQRMMmz4ek/n5SR4o2dyJHwnCA+HsjfCZ77kHP86tkLj5lYnLAENnaF eAqCS5dOUNnnjXqzNLZAiRoHm4d4VdcyTXSdJfcU= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:25 +1000 Message-Id: <20170511041426.6488-23-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 22/23] pnv: Fix build failures on some host platforms 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: mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This makes some changes to fix build failures on the 'min-glib' docker image, and maybe other platforms with a buildchain that's less tolerant about duplicated typedefs. Signed-off-by: David Gibson --- include/hw/ppc/pnv.h | 3 +-- include/hw/ppc/pnv_lpc.h | 4 ++-- include/hw/ppc/pnv_occ.h | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index c1288f9..9c5437d 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -21,6 +21,7 @@ =20 #include "hw/boards.h" #include "hw/sysbus.h" +#include "hw/ipmi/ipmi.h" #include "hw/ppc/pnv_lpc.h" #include "hw/ppc/pnv_psi.h" #include "hw/ppc/pnv_occ.h" @@ -118,8 +119,6 @@ typedef struct PnvChipClass { #define POWERNV_MACHINE(obj) \ OBJECT_CHECK(PnvMachineState, (obj), TYPE_POWERNV_MACHINE) =20 -typedef struct IPMIBmc IPMIBmc; - typedef struct PnvMachineState { /*< private >*/ MachineState parent_obj; diff --git a/include/hw/ppc/pnv_lpc.h b/include/hw/ppc/pnv_lpc.h index ccf969a..023b4f0 100644 --- a/include/hw/ppc/pnv_lpc.h +++ b/include/hw/ppc/pnv_lpc.h @@ -19,12 +19,12 @@ #ifndef _PPC_PNV_LPC_H #define _PPC_PNV_LPC_H =20 +#include "hw/ppc/pnv_psi.h" + #define TYPE_PNV_LPC "pnv-lpc" #define PNV_LPC(obj) \ OBJECT_CHECK(PnvLpcController, (obj), TYPE_PNV_LPC) =20 -typedef struct PnvPsi PnvPsi; - typedef struct PnvLpcController { DeviceState parent; =20 diff --git a/include/hw/ppc/pnv_occ.h b/include/hw/ppc/pnv_occ.h index f8ec330..82f299d 100644 --- a/include/hw/ppc/pnv_occ.h +++ b/include/hw/ppc/pnv_occ.h @@ -19,11 +19,11 @@ #ifndef _PPC_PNV_OCC_H #define _PPC_PNV_OCC_H =20 +#include "hw/ppc/pnv_psi.h" + #define TYPE_PNV_OCC "pnv-occ" #define PNV_OCC(obj) OBJECT_CHECK(PnvOCC, (obj), TYPE_PNV_OCC) =20 -typedef struct PnvPsi PnvPsi; - typedef struct PnvOCC { DeviceState xd; =20 --=20 2.9.3 From nobody Fri May 3 06:53:34 2024 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.zoho.com; dkim=fail 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 1494477025616492.6923991775818; Wed, 10 May 2017 21:30:25 -0700 (PDT) Received: from localhost ([::1]:45945 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fk8-0002IZ-Dp for importer@patchew.org; Thu, 11 May 2017 00:30:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56363) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d8fV2-0005Sk-5g for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d8fUz-0001Zc-Hl for qemu-devel@nongnu.org; Thu, 11 May 2017 00:14:48 -0400 Received: from ozlabs.org ([103.22.144.67]:47925) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1d8fUz-0001WH-5u; Thu, 11 May 2017 00:14:45 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 3wNfrS4TmZz9sNf; Thu, 11 May 2017 14:14:31 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1494476072; bh=AmZHa1m9QzuwxKEB8dFSCE2Q9fZaCw5CKeO2uI7jwi4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TeZcjG8CRnWQrUyCiLDKYE3yyssmENRpVGLvqR37M2OGRzolflSO1BQ221QlFDa+C Da8UsuC5nMAg6a12Da5LnkgfMqbW2xIUlCZwMVfaTj1x2AE4KH0/2AhxAS+NxUczhc KdC7Ecn+Vxg+DLld7RC8qx+aEmmzkC1OZGrJ3Ycw= From: David Gibson To: peter.maydell@linaro.org Date: Thu, 11 May 2017 14:14:26 +1000 Message-Id: <20170511041426.6488-24-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170511041426.6488-1-david@gibson.dropbear.id.au> References: <20170511041426.6488-1-david@gibson.dropbear.id.au> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 103.22.144.67 Subject: [Qemu-devel] [PULL 23/23] target/ppc: Avoid printing wrong aliases in CPU help text 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 , mdroth@linux.vnet.ibm.com, nikunj@linux.vnet.ibm.com, aik@ozlabs.ru, mark.cave-ayland@ilande.co.uk, agraf@suse.de, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, clg@kaod.org, sjitindarsingh@gmail.com, bharata@linux.vnet.ibm.com, sam.bobroff@au1.ibm.com, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Thomas Huth When running with KVM, we update the "family" CPU alias to point to the right host CPU type, so that it for example possible to use "-cpu POWER8" on a POWER8NVL host. However, the function for printing the list of available CPU models is called earlier than the KVM setup code, so the output of "-cpu help" is wrong in that case. Since it would be somewhat ugly anyway to have different help texts depending on whether "-enable-kvm" has been specified or not, we should better always print the same text, so fix this issue by printing "alias for preferred XXX CPU" instead. Reviewed-by: Eduardo Habkost Signed-off-by: Thomas Huth Signed-off-by: David Gibson --- target/ppc/cpu.h | 1 + target/ppc/kvm.c | 12 ------------ target/ppc/translate_init.c | 27 +++++++++++++++++++++++++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index c0f63f6..401e10e 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1225,6 +1225,7 @@ static inline PowerPCCPU *ppc_env_get_cpu(CPUPPCState= *env) =20 PowerPCCPUClass *ppc_cpu_class_by_pvr(uint32_t pvr); PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr); +PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc); =20 struct PPCVirtualHypervisor { Object parent; diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index cb2cf2b..51249ce 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2424,18 +2424,6 @@ bool kvmppc_has_cap_mmu_hash_v3(void) return cap_mmu_hash_v3; } =20 -static PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc) -{ - ObjectClass *oc =3D OBJECT_CLASS(pcc); - - while (oc && !object_class_is_abstract(oc)) { - oc =3D object_class_get_parent(oc); - } - assert(oc); - - return POWERPC_CPU_CLASS(oc); -} - PowerPCCPUClass *kvm_ppc_get_host_cpu_class(void) { uint32_t host_pvr =3D mfpvr(); diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index fda30b0..56a0ab2 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -10285,6 +10285,18 @@ PowerPCCPU *cpu_ppc_init(const char *cpu_model) return POWERPC_CPU(cpu_generic_init(TYPE_POWERPC_CPU, cpu_model)); } =20 +PowerPCCPUClass *ppc_cpu_get_family_class(PowerPCCPUClass *pcc) +{ + ObjectClass *oc =3D OBJECT_CLASS(pcc); + + while (oc && !object_class_is_abstract(oc)) { + oc =3D object_class_get_parent(oc); + } + assert(oc); + + return POWERPC_CPU_CLASS(oc); +} + /* Sort by PVR, ordering special case "host" last. */ static gint ppc_cpu_list_compare(gconstpointer a, gconstpointer b) { @@ -10316,6 +10328,7 @@ static void ppc_cpu_list_entry(gpointer data, gpoin= ter user_data) ObjectClass *oc =3D data; CPUListState *s =3D user_data; PowerPCCPUClass *pcc =3D POWERPC_CPU_CLASS(oc); + DeviceClass *family =3D DEVICE_CLASS(ppc_cpu_get_family_class(pcc)); const char *typename =3D object_class_get_name(oc); char *name; int i; @@ -10338,8 +10351,18 @@ static void ppc_cpu_list_entry(gpointer data, gpoi= nter user_data) if (alias_oc !=3D oc) { continue; } - (*s->cpu_fprintf)(s->file, "PowerPC %-16s (alias for %s)\n", - alias->alias, name); + /* + * If running with KVM, we might update the family alias later, so + * avoid printing the wrong alias here and use "preferred" instead + */ + if (strcmp(alias->alias, family->desc) =3D=3D 0) { + (*s->cpu_fprintf)(s->file, + "PowerPC %-16s (alias for preferred %s CPU)\= n", + alias->alias, family->desc); + } else { + (*s->cpu_fprintf)(s->file, "PowerPC %-16s (alias for %s)\n", + alias->alias, name); + } } g_free(name); } --=20 2.9.3