From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585026975; cv=none; d=zohomail.com; s=zohoarc; b=dIkpkNyKuS6+FdfBCTg1uS/D8jas/ciugZav4ZA4WndXaC33i6QfPNB3M6z6azcTDwAjHd71DiLNlIuwkPpiw+pWcs8PMVdoQ5ZWyxH3I7RiHLlbtHMobXLfOnMcK95iXys2YJvmQWsPTe1AYGsGJyuTmmUTp/DoNTCHXvZaJ+Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585026975; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=nZi/XifpWVEB9wbJvWu4RtTANrvr23PZ/7wfEvO9X9g=; b=a//PF72B86Wr7TAS/flTTAPngQg+zZ9/jc6WPaF9jrVHvc0jMTevnKdU3m1qf+4YvPz7rDUidgmHXP+fPI9IEvCC7ilxkI6L8t3aPS1inZVp0iZSu8OXlqSVnYisOo6Eivqyha6J0mY4qu7VLMLIctAAXi3zae726m5inFV9JPE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585026975566243.2858825477739; Mon, 23 Mar 2020 22:16:15 -0700 (PDT) Received: from localhost ([::1]:42908 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbvC-0005wO-7c for importer@patchew.org; Tue, 24 Mar 2020 01:16:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36868) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu4-0004Z7-9K for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu3-0001au-3a for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:04 -0400 Received: from ozlabs.org ([203.11.71.1]:38149) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu2-0001Zh-1c; Tue, 24 Mar 2020 01:15:03 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW2ydnz9sQt; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=3li+HUL8pZwLDA6kLng6EhW+vWa7Ark5fqLG2FNEfLk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=V5jCrBSYafRVievJ92CFo+ZFvrctHtsdZXGtrZyngREyw0dvq8gXJdjHbx56+Kd5M zvj638qWCNCA8IzPNBrW4E5oq8sbStGD7G8bL8/AyPaPcxYRFMxclgKgPZNROmSmxY NyfLcOJ02ESCOWrfCodWL0Hw3vLvUKs2VU/hh1f8= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 1/7] ppc/spapr: Set the effective address provided flag in mc error log. Date: Tue, 24 Mar 2020 16:14:50 +1100 Message-Id: <20200324051456.256116-2-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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: 203.11.71.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, qemu-devel@nongnu.org, Nicholas Piggin , groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Mahesh Salgaonkar Per PAPR, it is expected to set effective address provided flag in sub_err_type member of mc extended error log (i.e rtas_event_log_v6_mc.sub_err_type). This somehow got missed in original fwnmi-mce patch series. The current code just updates the effective address but does not set the flag to indicate that it is available. Hence guest fails to extract effective address from mce rtas log. This patch fixes that. Without this patch guest MCE logs fails print DAR value: [ 11.933608] Disabling lock debugging due to kernel taint [ 11.933773] MCE: CPU0: machine check (Severe) Host TLB Multihit [Recover= ed] [ 11.933979] MCE: CPU0: NIP: [c000000000090b34] radix__flush_tlb_range_ps= ize+0x194/0xf00 [ 11.934223] MCE: CPU0: Initiator CPU [ 11.934341] MCE: CPU0: Unknown After the change: [ 22.454149] Disabling lock debugging due to kernel taint [ 22.454316] MCE: CPU0: machine check (Severe) Host TLB Multihit DAR: dea= dbeefdeadbeef [Recovered] [ 22.454605] MCE: CPU0: NIP: [c0000000003e5804] kmem_cache_alloc+0x84/0x3= 30 [ 22.454820] MCE: CPU0: Initiator CPU [ 22.454944] MCE: CPU0: Unknown Signed-off-by: Mahesh Salgaonkar Message-Id: <158451653844.22972.17999316676230071087.stgit@jupiter> Reviewed-by: Nicholas Piggin Signed-off-by: David Gibson --- hw/ppc/spapr_events.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index 323fcef4aa..a4a540f43d 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -243,6 +243,14 @@ struct rtas_event_log_v6_mc { #define RTAS_LOG_V6_MC_TLB_PARITY 1 #define RTAS_LOG_V6_MC_TLB_MULTIHIT 2 #define RTAS_LOG_V6_MC_TLB_INDETERMINATE 3 +/* + * Per PAPR, + * For UE error type, set bit 1 of sub_err_type to indicate effective addr= is + * provided. For other error types (SLB/ERAT/TLB), set bit 0 to indicate + * same. + */ +#define RTAS_LOG_V6_MC_UE_EA_ADDR_PROVIDED 0x40 +#define RTAS_LOG_V6_MC_EA_ADDR_PROVIDED 0x80 uint8_t reserved_1[6]; uint64_t effective_address; uint64_t logical_address; @@ -726,6 +734,22 @@ void spapr_hotplug_req_remove_by_count_indexed(SpaprDr= cType drc_type, RTAS_LOG_V6_HP_ACTION_REMOVE, drc_type, &drc_i= d); } =20 +static void spapr_mc_set_ea_provided_flag(struct mc_extended_log *ext_elog) +{ + switch (ext_elog->mc.error_type) { + case RTAS_LOG_V6_MC_TYPE_UE: + ext_elog->mc.sub_err_type |=3D RTAS_LOG_V6_MC_UE_EA_ADDR_PROVIDED; + break; + case RTAS_LOG_V6_MC_TYPE_SLB: + case RTAS_LOG_V6_MC_TYPE_ERAT: + case RTAS_LOG_V6_MC_TYPE_TLB: + ext_elog->mc.sub_err_type |=3D RTAS_LOG_V6_MC_EA_ADDR_PROVIDED; + break; + default: + break; + } +} + static uint32_t spapr_mce_get_elog_type(PowerPCCPU *cpu, bool recovered, struct mc_extended_log *ext_elog) { @@ -751,6 +775,7 @@ static uint32_t spapr_mce_get_elog_type(PowerPCCPU *cpu= , bool recovered, ext_elog->mc.sub_err_type =3D mc_derror_table[i].error_subtype; if (mc_derror_table[i].dar_valid) { ext_elog->mc.effective_address =3D cpu_to_be64(env->spr[SP= R_DAR]); + spapr_mc_set_ea_provided_flag(ext_elog); } =20 summary |=3D mc_derror_table[i].initiator @@ -769,6 +794,7 @@ static uint32_t spapr_mce_get_elog_type(PowerPCCPU *cpu= , bool recovered, ext_elog->mc.sub_err_type =3D mc_ierror_table[i].error_subtype; if (mc_ierror_table[i].nip_valid) { ext_elog->mc.effective_address =3D cpu_to_be64(env->nip); + spapr_mc_set_ea_provided_flag(ext_elog); } =20 summary |=3D mc_ierror_table[i].initiator --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585027178; cv=none; d=zohomail.com; s=zohoarc; b=fNYVo+mPxARQjsnx04cIdbSAIUZSc2w4LbiXUKiKuzuEx1UceYhMQTXEpu2cQMJPzwbsDFTrKAWQqe44cKLuZOaQkhBMYWtgQzNJPHlLlks3cWPopv1UQtv/crx145w93paaTDsHoS12Xy6LFP/hH7xKTp1L0leb+P1Y1vlibz0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585027178; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=OoBNbZUCNsH47VPkekgVJDAcQYTy26NmIx0FN69Yauw=; b=npNz4kRl4P6KEmOfDDoRMQmkTlRy0ZGEghYINN4SkwmRYXiAbhvvhgy2qtRUc7AotactJJXEbexsAxCW4bSbcDG4Eh7ak8O3WzgP1Et/QYomC3QnN0twk5jZP3EmkQgJFWiosV25oXs6t2FHxEUmfv8Z+IiV4DxvheQq/rYFaiM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585027178090540.2225645713634; Mon, 23 Mar 2020 22:19:38 -0700 (PDT) Received: from localhost ([::1]:42946 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbyS-0001xn-Nu for importer@patchew.org; Tue, 24 Mar 2020 01:19:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36930) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004Zv-09 for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu6-0001dg-TG for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:07 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:48355) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu6-0001Zi-IS; Tue, 24 Mar 2020 01:15:06 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW486Sz9sSL; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=fyHM/yk1VNQZCJUEsX1UnGiM8agi4dpqL7KxP+y+WHE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oHnXJ7ZWgcyMDuaxgHK09TOJ0YBUUf+pbiE5qC631GsHWqi8gGHpWDrvrgNYLDLXR GlwiqFhnk7wdIDlzW4+sZQt70F2xHX5a3SqZUi6Nl8Wl7i/mhLGUPxzuluwWWYmgL9 xj8MpXZi2zMLr8cJ3kZbfvZTrTMlCjdPWaPCvijA= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 2/7] target/ppc: Fix slbia TLB invalidation gap Date: Tue, 24 Mar 2020 16:14:51 +1100 Message-Id: <20200324051456.256116-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, qemu-devel@nongnu.org, Nicholas Piggin , groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin slbia must invalidate TLBs even if it does not remove a valid SLB entry, because slbmte can overwrite valid entries without removing their TLBs. As the architecture says, slbia invalidates all lookaside information, not conditionally based on if it removed valid entries. It does not seem possible for POWER8 or earlier Linux kernels to hit this bug because it never changes its kernel SLB translations, and it should always have valid entries if any accesses are made to userspace regions. However other operating systems which may modify SLB entry 0 or do more fancy things with segments might be affected. When POWER9 slbia support is added in the next patch, this becomes a real problem because some new slbia variants don't invalidate all non-zero entries. Signed-off-by: Nicholas Piggin Message-Id: <20200318044135.851716-1-npiggin@gmail.com> Reviewed-by: C=C3=A9dric Le Goater Reviewed-by: Greg Kurz Signed-off-by: David Gibson --- target/ppc/mmu-hash64.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index 34f6009b1e..373d44de74 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -100,20 +100,29 @@ void helper_slbia(CPUPPCState *env) PowerPCCPU *cpu =3D env_archcpu(env); int n; =20 + /* + * slbia must always flush all TLB (which is equivalent to ERAT in ppc + * architecture). Matching on SLB_ESID_V is not good enough, because s= lbmte + * can overwrite a valid SLB without flushing its lookaside informatio= n. + * + * It would be possible to keep the TLB in synch with the SLB by flush= ing + * when a valid entry is overwritten by slbmte, and therefore slbia wo= uld + * not have to flush unless it evicts a valid SLB entry. However it is + * expected that slbmte is more common than slbia, and slbia is usually + * going to evict valid SLB entries, so that tradeoff is unlikely to b= e a + * good one. + */ + /* XXX: Warning: slbia never invalidates the first segment */ for (n =3D 1; n < cpu->hash64_opts->slb_size; n++) { ppc_slb_t *slb =3D &env->slb[n]; =20 if (slb->esid & SLB_ESID_V) { slb->esid &=3D ~SLB_ESID_V; - /* - * XXX: given the fact that segment size is 256 MB or 1TB, - * and we still don't have a tlb_flush_mask(env, n, mask) - * in QEMU, we just invalidate all TLBs - */ - env->tlb_need_flush |=3D TLB_NEED_LOCAL_FLUSH; } } + + env->tlb_need_flush |=3D TLB_NEED_LOCAL_FLUSH; } =20 static void __helper_slbie(CPUPPCState *env, target_ulong addr, --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585027095; cv=none; d=zohomail.com; s=zohoarc; b=FtnFaA54cXfnW2FicqH4jiIOWxLEemFaoLElgh+2U59lHpTqzFuyVj6GQWE2bR5Li1brsH9nFEEnXIgOBbFXYq4m5MRwZ9ypllQQmQUCLiqc2DkphHm1ALJykBs+Deax9NHJ3AtT116vRBfOzp5sSDKsEkxuUb8nC8H7FuSvExc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585027095; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=8b8njZKaBbT4tSXPJuY1MOHowXx2esotJK/wjCgWkQs=; b=VsRunRSJh3DpF9fHTr2c/YR19wyDs+kCaz0ABbRid0xYWejlYOoe0ExfYxJ6UyxxPMRjO9JxDlyvkGVt0lCxas0ABUtJl1Az3C5uMn8vvScFi22fvoT5YZFxnvmS6DUJJ93W/XlPmbKsyTUou3c21P70QSmACt8NtY0yiirKaSU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585027095323381.9547025520826; Mon, 23 Mar 2020 22:18:15 -0700 (PDT) Received: from localhost ([::1]:42928 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbx7-0000LI-P6 for importer@patchew.org; Tue, 24 Mar 2020 01:18:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36932) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004a5-4E for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu6-0001dR-HR for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:08 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:56749) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu6-0001Zl-6Y; Tue, 24 Mar 2020 01:15:06 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW4pxNz9sSM; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=UFKrhz8pB3NAj66yovnBqPp3W24n/Nc9FYZ0v/RFw60=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=FdfhqH4DIf1+bzA5NYaCd3oyotdPuAWDgcWVrAdciHKm7EGAaCeIdgGMf9JLcj8ws 85Kbcd6WKTJCF4lYfLNT6MGfUysnnSzDw3zdUUYB8AqAVMwD+N6IdetGN6IIVErxK9 JGAY2bSOyIwhaO9R/THYMs4dsCAvPrSef7Q04N08= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 3/7] target/ppc: Fix ISA v3.0 (POWER9) slbia implementation Date: Tue, 24 Mar 2020 16:14:52 +1100 Message-Id: <20200324051456.256116-4-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, qemu-devel@nongnu.org, Nicholas Piggin , groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Nicholas Piggin The new ISA v3.0 slbia variants have not been implemented for TCG, which can lead to crashing when a POWER9 machine boots Linux using the hash MMU, for example ("disable_radix" kernel command line). Add them. Signed-off-by: Nicholas Piggin Message-Id: <20200319064439.1020571-1-npiggin@gmail.com> Reviewed-by: C=C3=A9dric Le Goater [dwg: Fixed compile error for USER_ONLY builds] Signed-off-by: David Gibson --- target/ppc/helper.h | 2 +- target/ppc/mmu-hash64.c | 56 +++++++++++++++++++++++++++++++++++------ target/ppc/translate.c | 5 +++- 3 files changed, 54 insertions(+), 9 deletions(-) diff --git a/target/ppc/helper.h b/target/ppc/helper.h index cfb4c07085..a95c010391 100644 --- a/target/ppc/helper.h +++ b/target/ppc/helper.h @@ -614,7 +614,7 @@ DEF_HELPER_FLAGS_3(store_slb, TCG_CALL_NO_RWG, void, en= v, tl, tl) DEF_HELPER_2(load_slb_esid, tl, env, tl) DEF_HELPER_2(load_slb_vsid, tl, env, tl) DEF_HELPER_2(find_slb_vsid, tl, env, tl) -DEF_HELPER_FLAGS_1(slbia, TCG_CALL_NO_RWG, void, env) +DEF_HELPER_FLAGS_2(slbia, TCG_CALL_NO_RWG, void, env, i32) DEF_HELPER_FLAGS_2(slbie, TCG_CALL_NO_RWG, void, env, tl) DEF_HELPER_FLAGS_2(slbieg, TCG_CALL_NO_RWG, void, env, tl) #endif diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index 373d44de74..e5baabf0e1 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -95,9 +95,10 @@ void dump_slb(PowerPCCPU *cpu) } } =20 -void helper_slbia(CPUPPCState *env) +void helper_slbia(CPUPPCState *env, uint32_t ih) { PowerPCCPU *cpu =3D env_archcpu(env); + int starting_entry; int n; =20 /* @@ -111,18 +112,59 @@ void helper_slbia(CPUPPCState *env) * expected that slbmte is more common than slbia, and slbia is usually * going to evict valid SLB entries, so that tradeoff is unlikely to b= e a * good one. + * + * ISA v2.05 introduced IH field with values 0,1,2,6. These all invali= date + * the same SLB entries (everything but entry 0), but differ in what + * "lookaside information" is invalidated. TCG can ignore this and flu= sh + * everything. + * + * ISA v3.0 introduced additional values 3,4,7, which change what SLBs= are + * invalidated. */ =20 - /* XXX: Warning: slbia never invalidates the first segment */ - for (n =3D 1; n < cpu->hash64_opts->slb_size; n++) { - ppc_slb_t *slb =3D &env->slb[n]; + env->tlb_need_flush |=3D TLB_NEED_LOCAL_FLUSH; + + starting_entry =3D 1; /* default for IH=3D0,1,2,6 */ + + if (env->mmu_model =3D=3D POWERPC_MMU_3_00) { + switch (ih) { + case 0x7: + /* invalidate no SLBs, but all lookaside information */ + return; =20 - if (slb->esid & SLB_ESID_V) { - slb->esid &=3D ~SLB_ESID_V; + case 0x3: + case 0x4: + /* also considers SLB entry 0 */ + starting_entry =3D 0; + break; + + case 0x5: + /* treat undefined values as ih=3D=3D0, and warn */ + qemu_log_mask(LOG_GUEST_ERROR, + "slbia undefined IH field %u.\n", ih); + break; + + default: + /* 0,1,2,6 */ + break; } } =20 - env->tlb_need_flush |=3D TLB_NEED_LOCAL_FLUSH; + for (n =3D starting_entry; n < cpu->hash64_opts->slb_size; n++) { + ppc_slb_t *slb =3D &env->slb[n]; + + if (!(slb->esid & SLB_ESID_V)) { + continue; + } + if (env->mmu_model =3D=3D POWERPC_MMU_3_00) { + if (ih =3D=3D 0x3 && (slb->vsid & SLB_VSID_C) =3D=3D 0) { + /* preserves entries with a class value of 0 */ + continue; + } + } + + slb->esid &=3D ~SLB_ESID_V; + } } =20 static void __helper_slbie(CPUPPCState *env, target_ulong addr, diff --git a/target/ppc/translate.c b/target/ppc/translate.c index 127c82a24e..b207fb5386 100644 --- a/target/ppc/translate.c +++ b/target/ppc/translate.c @@ -4997,9 +4997,12 @@ static void gen_slbia(DisasContext *ctx) #if defined(CONFIG_USER_ONLY) GEN_PRIV; #else + uint32_t ih =3D (ctx->opcode >> 21) & 0x7; + TCGv_i32 t0 =3D tcg_const_i32(ih); + CHK_SV; =20 - gen_helper_slbia(cpu_env); + gen_helper_slbia(cpu_env, t0); #endif /* defined(CONFIG_USER_ONLY) */ } =20 --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585027307; cv=none; d=zohomail.com; s=zohoarc; b=kpIk1aKuR2/KE4OfUMLnMnrnvTIw7YA+MDLVvBtz/CTDFF7BqPK7WSLNUnoJU5CFc4WlkCDF6J6HFBfFTPayknYI6/J+bng8bcEJJhwUSPfQGnw2ZVTkJrabiFMlhmFpTtEwcKuopOn08hNJcYpoNAK+x5Q9O15CHrXSAzRjjKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585027307; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tcsgzJVTLK54cgncnCOYcMMEi6JDfwZGAAln7+1Uon0=; b=QgDUDu6mgMDoggKv65U/RDsWsdmkiT3R8ljMrGjjuKH6VG7WXSphyzsASPl0AA9GuLDJXuOgGF1XGYMIgrsChdN8FZc7ykC1gJlPFRxOGInOP3Dpfr84MWHOw7vl/MHegtgn2xlsLCYVNc1GSmcbX5BBlyfrLoZvwsRTpmYbkoY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585027307463328.49616696299734; Mon, 23 Mar 2020 22:21:47 -0700 (PDT) Received: from localhost ([::1]:42974 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGc0Y-0003nA-9L for importer@patchew.org; Tue, 24 Mar 2020 01:21:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36944) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004ah-JG for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu7-0001dz-1W for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:08 -0400 Received: from bilbo.ozlabs.org ([2401:3900:2:1::2]:36903 helo=ozlabs.org) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu6-0001Zo-Lw; Tue, 24 Mar 2020 01:15:06 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW5ZGqz9sSQ; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=oE4yK1ja4e8fv4EUGbm9wj49lexWi9/2JDgy8C7lmz4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CEXX/vHB2F4mMOI2cOhiXiPuMjmfWTe8ZcYD26XkiFocZnbILC2y0AsOaPBrt6U2K bZ35GRmx53PQ+xe7UDtS1qKCdgzB2qG0Z0KZJZAEr5aDp2ZNcTp9ra1bcZGmT4pFFI R0ZTtJ9Z7YhgkYtQWyJn7TyB3reP+LTKOLFyTPL4= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 4/7] target/ppc: don't byte swap ELFv2 signal handler Date: Tue, 24 Mar 2020 16:14:53 +1100 Message-Id: <20200324051456.256116-5-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, Richard Henderson , qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, David Gibson , Vincent Fazio , Laurent Vivier Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Vincent Fazio Previously, the signal handler would be byte swapped if the target and host CPU used different endianness. This would cause a SIGSEGV when attempting to translate the opcode pointed to by the swapped address. Thread 1 "qemu-ppc64" received signal SIGSEGV, Segmentation fault. 0x00000000600a9257 in ldl_he_p (ptr=3D0x4c2c061000000000) at qemu/include/= qemu/bswap.h:351 351 __builtin_memcpy(&r, ptr, sizeof(r)); #0 0x00000000600a9257 in ldl_he_p (ptr=3D0x4c2c061000000000) at qemu/incl= ude/qemu/bswap.h:351 #1 0x00000000600a92fe in ldl_be_p (ptr=3D0x4c2c061000000000) at qemu/incl= ude/qemu/bswap.h:449 #2 0x00000000600c0790 in translator_ldl_swap at qemu/include/exec/transla= tor.h:201 #3 0x000000006011c1ab in ppc_tr_translate_insn at qemu/target/ppc/transla= te.c:7856 #4 0x000000006005ae70 in translator_loop at qemu/accel/tcg/translator.c:1= 02 The signal handler will be byte swapped as a result of the __get_user() call in sigaction() if it is necessary, no additional swap is required. Signed-off-by: Vincent Fazio Reviewed-by: Laurent Vivier Reviewed-by: Richard Henderson Message-Id: <20200319133244.8818-1-vfazio@xes-inc.com> Signed-off-by: David Gibson --- linux-user/ppc/signal.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c index 0c4e7ba54c..ecd99736b7 100644 --- a/linux-user/ppc/signal.c +++ b/linux-user/ppc/signal.c @@ -567,10 +567,8 @@ void setup_rt_frame(int sig, struct target_sigaction *= ka, env->nip =3D tswapl(handler->entry); env->gpr[2] =3D tswapl(handler->toc); } else { - /* ELFv2 PPC64 function pointers are entry points, but R12 - * must also be set */ - env->nip =3D tswapl((target_ulong) ka->_sa_handler); - env->gpr[12] =3D env->nip; + /* ELFv2 PPC64 function pointers are entry points. R12 must also b= e set. */ + env->gpr[12] =3D env->nip =3D ka->_sa_handler; } #else env->nip =3D (target_ulong) ka->_sa_handler; --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585027098; cv=none; d=zohomail.com; s=zohoarc; b=EQSM1iZg63093bY/9SVVy45pPt1BK+r7UrFdsyqo0gOyQfHXu2R5XWRfQkyC1+MEsAzNjaSR5myp7YmONc2ptJX9FswoGVZX5OaK6tuwbHDyJJvRFFY0kbl4+WoaPjgx2l5BaTES2c8BFnedE4UdSLa/TolZXnpE5avbGoeT7Ts= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585027098; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=l2+lk7mws88v21YUuqBd0xwxSOlQtrPMt8jNT7m8H2M=; b=PAQypS+hJPH36u4gq4H8/4/pN463nzK9/TLcUhU/H0QLyOEZWhBxSF6EF+dS60PBgqCL2bAlLLWGNa/6s7+Jz2SRmm52+uuTFoqtVin6a6/c6/MaKUnVKhsSWSuCzkQ60E4u9TBI4eIWQpcUVpulSKjRb9jjpRL60O8nF9vLVt8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585027098677655.5200520564495; Mon, 23 Mar 2020 22:18:18 -0700 (PDT) Received: from localhost ([::1]:42930 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbxB-0000SC-EE for importer@patchew.org; Tue, 24 Mar 2020 01:18:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36934) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004a8-5N for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu7-0001eB-4X for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:08 -0400 Received: from ozlabs.org ([203.11.71.1]:32931) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu6-0001bo-OK; Tue, 24 Mar 2020 01:15:07 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW6fZVz9sSV; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=OKcovYR9VNB4z7gkjGackfXxGtFZioSygC+HVi/Nk3E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XavMABBr2AHB/fJPnzGjzA1tzrlyu94ez/FXyWe78tjVibwJZNMQiLAogE2SaHjZd eQf0g+wytaiX/SB2F/LgE2CdrMTRes+Wh+/guFPpFckjTd+TaF6hfsXoVvcKW0aMLB TGptYa2swJecs/lCBknjeSTJmUS1/2b0ztRhLEnU= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 5/7] spapr: Fix memory leak in h_client_architecture_support() Date: Tue, 24 Mar 2020 16:14:54 +1100 Message-Id: <20200324051456.256116-6-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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: 203.11.71.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Greg Kurz This is the only error path that needs to free the previously allocated ov1. Reported-by: Coverity (CID 1421924) Fixes: cbd0d7f36322 "spapr: Fail CAS if option vector table cannot be parse= d" Signed-off-by: Greg Kurz Message-Id: <158481206205.336182.16106097429336044843.stgit@bahia.lan> Signed-off-by: David Gibson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/ppc/spapr_hcall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index 40c86e91eb..0d50fc9117 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -1726,6 +1726,7 @@ static target_ulong h_client_architecture_support(Pow= erPCCPU *cpu, } ov5_guest =3D spapr_ovec_parse_vector(ov_table, 5); if (!ov5_guest) { + spapr_ovec_cleanup(ov1_guest); warn_report("guest didn't provide option vector 5"); return H_PARAMETER; } --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585026988; cv=none; d=zohomail.com; s=zohoarc; b=GRLPU9QChCkoBK3aefc5a6Gcbou9/Oosjol30YyJA0SBroF27Z4kt40a+2ib2M4ovHQKTqikaCcIXrWE8X3MoGd5MZ+7q4d7nNz6oMz8CfLogW/2CUI9jWYWcdUD4KrcE/E19mC13fOOyiUkTxCv2RZG86qrgp8/w7uFgoLWKTo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585026988; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kBOpKqOv7hTyxercuqdNPvKboSIc0bZKlQahJKPOUgs=; b=ibli1snUdTPRBEgYu7C3BsSIS1zj35pIvoIvnizEHoUQaxpP5rA7v3SOgdXLF5JuRCjH1mdgI3iwspl4Gppub8/VMiwHbd12QjFVoM1ly8fsUZeihkPNrQnmk+M9WcLtFbRCvu4lyFP3VmiU9DeylnY0ZKOsT/lMFcv3rPmjKyc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585026988725215.19471512766506; Mon, 23 Mar 2020 22:16:28 -0700 (PDT) Received: from localhost ([::1]:42910 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbvP-0006ES-Hc for importer@patchew.org; Tue, 24 Mar 2020 01:16:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36952) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004bB-RN for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu7-0001ew-L5 for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:08 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45371) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu7-0001bf-AH; Tue, 24 Mar 2020 01:15:07 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZW65T8z9sSN; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026899; bh=Xc+3RKabXHno7VL+AST1GTZnAiqqXI+OYqmv72T8XXE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jHmTxP5C42dI8ZUfqy0+b2sXaQP7NAORnL4ORJj3ShGeocPlCOfhFB97hWqh+BW45 W7MIG+f0SF3yy5bDq/x7QNU7+QWzlie6wFs5A0aApPjo09GjlaVjpK3iQHUwZhkEWp KXVpOhJ6+c5dDvC0emb+zjrjS+TX19JiWRmEAFVc= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 6/7] hw/ppc: Take QEMU lock when calling ppc_dcr_read/write() Date: Tue, 24 Mar 2020 16:14:55 +1100 Message-Id: <20200324051456.256116-7-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, Amit Lazar , qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Peter Maydell The ppc_dcr_read() and ppc_dcr_write() functions call into callbacks in device code, so we need to hold the QEMU iothread lock while calling them. This is the case already for the callsites in kvmppc_handle_dcr_read/write(), but we must also take the lock when calling the helpers from TCG. This fixes a bug where attempting to initialise the PPC405EP SDRAM will cause an assertion when sdram_map_bcr() attempts to remap memory regions. Reported-by: Amit Lazar Signed-off-by: Peter Maydell Message-Id: <20200322192258.14039-1-peter.maydell@linaro.org> Signed-off-by: David Gibson --- target/ppc/timebase_helper.c | 40 +++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/target/ppc/timebase_helper.c b/target/ppc/timebase_helper.c index 703bd9ed18..d16360ab66 100644 --- a/target/ppc/timebase_helper.c +++ b/target/ppc/timebase_helper.c @@ -21,6 +21,7 @@ #include "exec/helper-proto.h" #include "exec/exec-all.h" #include "qemu/log.h" +#include "qemu/main-loop.h" =20 /*************************************************************************= ****/ /* SPR accesses */ @@ -167,13 +168,19 @@ target_ulong helper_load_dcr(CPUPPCState *env, target= _ulong dcrn) raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL, GETPC()); - } else if (unlikely(ppc_dcr_read(env->dcr_env, - (uint32_t)dcrn, &val) !=3D 0)) { - qemu_log_mask(LOG_GUEST_ERROR, "DCR read error %d %03x\n", - (uint32_t)dcrn, (uint32_t)dcrn); - raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_INVAL | - POWERPC_EXCP_PRIV_REG, GETPC()); + } else { + int ret; + + qemu_mutex_lock_iothread(); + ret =3D ppc_dcr_read(env->dcr_env, (uint32_t)dcrn, &val); + qemu_mutex_unlock_iothread(); + if (unlikely(ret !=3D 0)) { + qemu_log_mask(LOG_GUEST_ERROR, "DCR read error %d %03x\n", + (uint32_t)dcrn, (uint32_t)dcrn); + raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_INVAL | + POWERPC_EXCP_PRIV_REG, GETPC()); + } } return val; } @@ -185,12 +192,17 @@ void helper_store_dcr(CPUPPCState *env, target_ulong = dcrn, target_ulong val) raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, POWERPC_EXCP_INVAL | POWERPC_EXCP_INVAL_INVAL, GETPC()); - } else if (unlikely(ppc_dcr_write(env->dcr_env, (uint32_t)dcrn, - (uint32_t)val) !=3D 0)) { - qemu_log_mask(LOG_GUEST_ERROR, "DCR write error %d %03x\n", - (uint32_t)dcrn, (uint32_t)dcrn); - raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, - POWERPC_EXCP_INVAL | - POWERPC_EXCP_PRIV_REG, GETPC()); + } else { + int ret; + qemu_mutex_lock_iothread(); + ret =3D ppc_dcr_write(env->dcr_env, (uint32_t)dcrn, (uint32_t)val); + qemu_mutex_unlock_iothread(); + if (unlikely(ret !=3D 0)) { + qemu_log_mask(LOG_GUEST_ERROR, "DCR write error %d %03x\n", + (uint32_t)dcrn, (uint32_t)dcrn); + raise_exception_err_ra(env, POWERPC_EXCP_PROGRAM, + POWERPC_EXCP_INVAL | + POWERPC_EXCP_PRIV_REG, GETPC()); + } } } --=20 2.25.1 From nobody Mon Feb 9 09:35:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1585027249; cv=none; d=zohomail.com; s=zohoarc; b=oFV7e0Lnh3PKWppyUDC7ySaJBm/DZ5My9MUm4jiTV0U7UvSO62in7J3vdm+8f5OXWqeLPSmNurffEWM+QazLYAM9U98KCa0LtHyZ7ow4cTl1IpIQwNxcl9is2t2d7kXbD48L8bZAMWgClFlR4GPpyZtjVTIETJSnQ5WVNXmpCr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1585027249; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=BW7q5z7qcX5tPfeXMStRdWMH62hd0rn8wfxGURAQHvw=; b=n60IzGkm2a/izYdevLoO1cB06fPVCVebKmGXTh4/qgzAP81oBNYmNWNBwwS9A9bJbPe13IiKoJSJsf79sZn4D7Tr8xi6JP6br8fK/cJrLNYmTQ375qvAjJ8/hHxJz4tTCkH3RKKpEvzkS4l3DXNJmXUpITNbnBOcp+zb2t6ekjI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1585027249256797.8315231026438; Mon, 23 Mar 2020 22:20:49 -0700 (PDT) Received: from localhost ([::1]:42966 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbzc-0002tr-3I for importer@patchew.org; Tue, 24 Mar 2020 01:20:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:36936) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGbu8-0004aA-64 for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGbu7-0001eG-57 for qemu-devel@nongnu.org; Tue, 24 Mar 2020 01:15:08 -0400 Received: from ozlabs.org ([203.11.71.1]:52325) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGbu6-0001c5-Q2; Tue, 24 Mar 2020 01:15:07 -0400 Received: by ozlabs.org (Postfix, from userid 1007) id 48mfZX09jrz9sSR; Tue, 24 Mar 2020 16:14:59 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gibson.dropbear.id.au; s=201602; t=1585026900; bh=jbBX3JoVk1S0mEuBSwAHT1Fs43s6s7XMQFv5jI4uPK4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hgNzn9UI6WKYuGFiGO/lzXf8rEBBYLkT8hUtrmmTBGNYy8K2FkXyRIq/9MjNuH9JP QavlbW+V6DDNcXYdUAWglOlLBtTY7ZGWbE8xQe1oeNY3BqFcEuXAvJd8V4fgdvQeFM ZQ4qCeoEN3XE5z1pXUzNDgFPPu/jSyK/GeO45QKM= From: David Gibson To: peter.maydell@linaro.org Subject: [PULL 7/7] ppc/ppc405_boards: Remove unnecessary NULL check Date: Tue, 24 Mar 2020 16:14:56 +1100 Message-Id: <20200324051456.256116-8-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200324051456.256116-1-david@gibson.dropbear.id.au> References: <20200324051456.256116-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: 203.11.71.1 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aik@ozlabs.ru, Markus Armbruster , qemu-devel@nongnu.org, groug@kaod.org, qemu-ppc@nongnu.org, clg@kaod.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , David Gibson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" From: Philippe Mathieu-Daud=C3=A9 This code is inside the "if (dinfo)" condition, so testing again here whether it is NULL is unnecessary. Fixes: dd59bcae7 (Don't size flash memory to match backing image) Reported-by: Coverity (CID 1421917) Suggested-by: Peter Maydell Signed-off-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20200320155740.5342-1-philmd@redhat.com> Reviewed-by: Markus Armbruster Signed-off-by: David Gibson --- hw/ppc/ppc405_boards.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c index e6bffb9e1a..6198ec1035 100644 --- a/hw/ppc/ppc405_boards.c +++ b/hw/ppc/ppc405_boards.c @@ -191,7 +191,7 @@ static void ref405ep_init(MachineState *machine) bios_size =3D 8 * MiB; pflash_cfi02_register((uint32_t)(-bios_size), "ef405ep.bios", bios_size, - dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, + blk_by_legacy_dinfo(dinfo), 64 * KiB, 1, 2, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x= 2AA, 1); @@ -459,7 +459,7 @@ static void taihu_405ep_init(MachineState *machine) bios_size =3D 2 * MiB; pflash_cfi02_register(0xFFE00000, "taihu_405ep.bios", bios_size, - dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, + blk_by_legacy_dinfo(dinfo), 64 * KiB, 1, 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x= 2AA, 1); @@ -494,7 +494,7 @@ static void taihu_405ep_init(MachineState *machine) if (dinfo) { bios_size =3D 32 * MiB; pflash_cfi02_register(0xfc000000, "taihu_405ep.flash", bios_size, - dinfo ? blk_by_legacy_dinfo(dinfo) : NULL, + blk_by_legacy_dinfo(dinfo), 64 * KiB, 1, 4, 0x0001, 0x22DA, 0x0000, 0x0000, 0x555, 0x= 2AA, 1); --=20 2.25.1