From nobody Mon Feb 9 20:30:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687266748; cv=none; d=zohomail.com; s=zohoarc; b=NsW68sRty/Dytxb3ylYdFCNTtVFGiIWqKub7fgGNbfooklQZh7MJshXj6OOk1gQtnjtZDaRhhoWFgMi0GzNEJxKoudToYtG7w28J48psPKPBD+hWFoyLS9ae4sD1e+qZnV1nmrPGnTWa0KD2Ur0W22keDwOmUhyouZRLM8FRnO0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687266748; 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=1n1bZ+D44uedI4wYVe5liTwhxzhBDGrrNBpEgbZTtF8=; b=Ho5Fejz0zcs9JsY6nxa0AeJUsQlSaGk3uzzqg40x+cOBr8bTIFaqMrwvMgAdFS5tu+cjWJ0EPnasTsWAt9S42QgxH0bE0fYC/pILZspoyKjgIQ3Dbo6U585CA0xUqnYbZ2b8uDnS+809+39yCAfHMDvZhhyLqXiph0iCzzZiR1o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16872667482791018.2050107818496; Tue, 20 Jun 2023 06:12:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBb8a-0007LU-N1; Tue, 20 Jun 2023 09:11:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qBb8W-0007Kb-JZ; Tue, 20 Jun 2023 09:11:09 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qBb8T-0000Ac-79; Tue, 20 Jun 2023 09:11:08 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-668689ce13fso1403140b3a.0; Tue, 20 Jun 2023 06:11:04 -0700 (PDT) Received: from wheely.local0.net ([124.170.190.103]) by smtp.gmail.com with ESMTPSA id w5-20020aa78585000000b00652a72b89d1sm1353285pfn.170.2023.06.20.06.10.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jun 2023 06:11:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687266663; x=1689858663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1n1bZ+D44uedI4wYVe5liTwhxzhBDGrrNBpEgbZTtF8=; b=Xtac5LsgdvqhfjkJI8J4/Ejmq974PZKeNJllGKlm64XWw1S2Mbe1sdP/e+qcUdE0YT qIl7TLD5rCHZO+puQglhp4Q0ZYK2fMdd4+PjAo1YLuHa4q13TC/+a8zO/FBCLxjUp6Dr 8S5Y3uQ6MjPSVwluSigG2+Rot5ZCrq2coRbVykYC44iQwb+K+hm7WQIbGb3tHcV49Pjx t//v3Ruy3T0OZRS2u/l1XaaevIHTws9GSAR5ocBytCdbttVR39Zi06k3QD1gzHbANV+V qXxD/hUua0BVZSQ33HbQEwdqkODDMgyBXUiKnU1sxRKJTmaCUPBSTwDr9TxU774dljDB EjYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687266663; x=1689858663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1n1bZ+D44uedI4wYVe5liTwhxzhBDGrrNBpEgbZTtF8=; b=C0Aa7fs2pMj05LWbd73gNxsD3DmevUVp6P7J7VYwF7WMRSaVevAzHdH65bifw2zfQ2 RZEs9zqFKVrLUEitkAgCp+ZsmWk1ZHPMxKXSHKN9iPcaFd2b0F1l4kVvWzenGR7w3ZyJ Pnxs/Dnm+2r9QbJAQTFkG+KaMtLR0G9yi3T/qgWQjSmGhdWlf9Vsa5fAcO98N52/T3Tw Oq2kJYxnrs2ogVodOj/D/xUioBgPoHvH5j62AU6qt1yALBbDxdj+pD1b3HiWfvW/BTcC mbVFE8AOFPP2wUiVXv1uKUa6dC97FMfzjB1KewWPzOPmrWlJOoAQA2R35XrDE1AcD+hp rqyg== X-Gm-Message-State: AC+VfDz0fyLrEsnb8nYwcqZiGaHvFZ80j5gteuvnK3c3G3PM5C/7gynO 3UIoqSUTU+X+oKrtCAmB3vyclQElxIc= X-Google-Smtp-Source: ACHHUZ59mk1z7BmwZqVfS84RnPQZBDDRiPrHdvj6qovzfbHXPqfVnTlFDGTwkZCOqr/kyoL9yfmgmA== X-Received: by 2002:a05:6a21:158c:b0:10f:1e5d:83ea with SMTP id nr12-20020a056a21158c00b0010f1e5d83eamr7159896pzb.25.1687266662833; Tue, 20 Jun 2023 06:11:02 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , Anushree Mathur , Fabiano Rosas Subject: [PATCH 1/4] target/ppc: Fix instruction loading endianness in alignment interrupt Date: Tue, 20 Jun 2023 23:10:41 +1000 Message-Id: <20230620131044.169110-2-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230620131044.169110-1-npiggin@gmail.com> References: <20230620131044.169110-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687266750026100001 Content-Type: text/plain; charset="utf-8" powerpc ifetch endianness depends on MSR[LE] so it has to byteswap after cpu_ldl_code(). This corrects DSISR bits in alignment interrupts when running in little endian mode. Reviewed-by: Fabiano Rosas Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 12d8a7257b..a2801f6e6b 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -133,6 +133,26 @@ static void dump_hcall(CPUPPCState *env) env->nip); } =20 +#ifdef CONFIG_TCG +/* Return true iff byteswap is needed to load instruction */ +static inline bool insn_need_byteswap(CPUArchState *env) +{ + /* SYSTEM builds TARGET_BIG_ENDIAN. Need to swap when MSR[LE] is set */ + return !!(env->msr & ((target_ulong)1 << MSR_LE)); +} + +static uint32_t ppc_ldl_code(CPUArchState *env, hwaddr addr) +{ + uint32_t insn =3D cpu_ldl_code(env, addr); + + if (insn_need_byteswap(env)) { + insn =3D bswap32(insn); + } + + return insn; +} +#endif + static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) { const char *es; @@ -3104,7 +3124,7 @@ void ppc_cpu_do_unaligned_access(CPUState *cs, vaddr = vaddr, =20 /* Restore state and reload the insn we executed, for filling in DSISR= . */ cpu_restore_state(cs, retaddr); - insn =3D cpu_ldl_code(env, env->nip); + insn =3D ppc_ldl_code(env, env->nip); =20 switch (env->mmu_model) { case POWERPC_MMU_SOFT_4xx: --=20 2.40.1 From nobody Mon Feb 9 20:30:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687266717; cv=none; d=zohomail.com; s=zohoarc; b=MB7oa1+zoA85l4BrCR4sPmrSxVPP9fBciZKSvRMYRGxx1pFuQObJ65T0dvQbI5Ea8vWMi7P3Ig7ck/QhycV+q4ZWmkZ+04SIKAGJIAfETpp9gMqT/L61SW2Zw9wIiokRixhw9eq64JkoZFVc6m0sBq4WJoM9Lcct+RC9sihfVBw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687266717; 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=eGD4jDYB/Ab8J80PqrqMHdSvac+MGxjnb+U7C/k+OH0=; b=Cf26R9lLFCyQc+zTI/Ih/a6rZbNHgIaPcvx4lZAuTjiBr2xaoJzwXv8YJY1FmNrgSsBl4AqsUXzFeJqMXqvJ0pTMnz9Xdxg7D4Fcm88BGhoPm1I5GaJXvgpXxjAIrQeDXgNrXTwrB1+1YCGa5rTmsTQaj54XEzZOYeWwh/dVlwY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687266717762725.2486215983699; Tue, 20 Jun 2023 06:11:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBb8c-0007MY-Tk; Tue, 20 Jun 2023 09:11:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qBb8Z-0007L9-AG; Tue, 20 Jun 2023 09:11:12 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qBb8X-0000BT-13; Tue, 20 Jun 2023 09:11:10 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-666683eb028so2603231b3a.0; Tue, 20 Jun 2023 06:11:08 -0700 (PDT) Received: from wheely.local0.net ([124.170.190.103]) by smtp.gmail.com with ESMTPSA id w5-20020aa78585000000b00652a72b89d1sm1353285pfn.170.2023.06.20.06.11.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jun 2023 06:11:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687266667; x=1689858667; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eGD4jDYB/Ab8J80PqrqMHdSvac+MGxjnb+U7C/k+OH0=; b=c0KD1bIqTza+UE7k7vT6m6WU41rIOo1COetHiYWK57N2SoQyK+cxZ9vFovWjE/HQE7 N9PqwPpgpEW6mN+fAYU/6HpaKhG4nPKToxpf06hhAgRJivBYMKRyCPbSw78rpWaD0TAE G2+mJhYGwEFXP9l2sSaLm7W3nUWyqw5ccoiszh0lZjt2ap6alHIfx8T2e5sHKagL39Yc e0ezYftzLVcxGpBLt5Ys1nuQt8nMHmeckY8azdCgaDXUFt7NNRds/6+67YTdCxTY+mqk VtjFckgjLW74x1sXccDJut+5sM2ph9FocAiqwj9wSZPUY1kg3gcuCpoDJ71UecYlNWTr NhDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687266667; x=1689858667; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eGD4jDYB/Ab8J80PqrqMHdSvac+MGxjnb+U7C/k+OH0=; b=bL4mXpDyBGhtNWJkmOJxur8o8A3YXkV62hcvf+kJOoFj6XvhKz4j2Tw5mxPWa9gY9Q qpvaxDmXotWFxcAMeGd8k4YRfPqhJV2ACpq5zjLC3cWWSpo6dcvCul4coOpOfyhUsU5q /hbrZqXkvyiaqaiEcQ37XfSYBBjy7HFTk/yA2LtO9MDI67cMBzoyZVhHp0xq2PFMJmIx Urh3hggPQgRyf8ZTboyJgNrWgPTCS79ePbQlgUnmNVmJ7zVX0aCw8eC8BQV3sNnWCJOt HA0+88AdFHCPaj6Ysmng9S/FWl1cGJnMbHBsYqY1NRilwB7lFI0kvBZABK7f41joMr9P bP8Q== X-Gm-Message-State: AC+VfDwei/ASK23X3sbbajYCZQPT2dwTLGuR2QGY4lCgsbgW+2Dha9cb /n9vsf/KtEWohe7nI5RSyj4c/CQDuRk= X-Google-Smtp-Source: ACHHUZ7KqnVlMpAH49YPkKOe+7eHQwrLSoMbJvzH/1OgeiQSAkEeRo4MBz6Msis0MwvCCfJezgzfwg== X-Received: by 2002:a05:6a00:1355:b0:668:7209:1866 with SMTP id k21-20020a056a00135500b0066872091866mr4952185pfu.3.1687266666426; Tue, 20 Jun 2023 06:11:06 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , Anushree Mathur Subject: [PATCH 2/4] target/ppc: Change partition-scope translate interface Date: Tue, 20 Jun 2023 23:10:42 +1000 Message-Id: <20230620131044.169110-3-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230620131044.169110-1-npiggin@gmail.com> References: <20230620131044.169110-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=npiggin@gmail.com; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687266719874100003 Content-Type: text/plain; charset="utf-8" Rather than always performing partition scope page table translation with access type of 0 (MMU_DATA_LOAD), pass through the processor access type which first initiated the translation sequence. Process- scoped page table loads are then set to MMU_DATA_LOAD access type in the xlate function. This will allow more information to be passed to the exception handler in the next patch. Signed-off-by: Nicholas Piggin --- target/ppc/mmu-radix64.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 031efda0df..1fc1ba3ecf 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -380,6 +380,14 @@ static int ppc_radix64_partition_scoped_xlate(PowerPCC= PU *cpu, hwaddr pte_addr; uint64_t pte; =20 + if (pde_addr) { + /* + * Translation of process-scoped tables/directories is performed as + * a read-access. + */ + access_type =3D MMU_DATA_LOAD; + } + qemu_log_mask(CPU_LOG_MMU, "%s for %s @0x%"VADDR_PRIx " mmu_idx %u 0x%"HWADDR_PRIx"\n", __func__, access_str(access_type), @@ -477,10 +485,10 @@ static int ppc_radix64_process_scoped_xlate(PowerPCCP= U *cpu, * is only used to translate the effective addresses of the * process table entries. */ - ret =3D ppc_radix64_partition_scoped_xlate(cpu, 0, eaddr, prtbe_ad= dr, - pate, &h_raddr, &h_prot, - &h_page_size, true, - /* mmu_idx is 5 because we're translating from hypervisor scop= e */ + /* mmu_idx is 5 because we're translating from hypervisor scope */ + ret =3D ppc_radix64_partition_scoped_xlate(cpu, access_type, eaddr, + prtbe_addr, pate, &h_radd= r, + &h_prot, &h_page_size, tr= ue, 5, guest_visible); if (ret) { return ret; @@ -519,11 +527,11 @@ static int ppc_radix64_process_scoped_xlate(PowerPCCP= U *cpu, * translation */ do { - ret =3D ppc_radix64_partition_scoped_xlate(cpu, 0, eaddr, pte_= addr, - pate, &h_raddr, &h_pr= ot, - &h_page_size, true, /* mmu_idx is 5 because we're translating from hypervisor scop= e */ - 5, guest_visible); + ret =3D ppc_radix64_partition_scoped_xlate(cpu, access_type, e= addr, + pte_addr, pate, &h_ra= ddr, + &h_prot, &h_page_size, + true, 5, guest_visibl= e); if (ret) { return ret; } --=20 2.40.1 From nobody Mon Feb 9 20:30:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687275010; cv=none; d=zohomail.com; s=zohoarc; b=cL2nH41bUlnZiqYqb3gFyb01HmOHxEpiY7CNl65dF1IT0Di/QjBSlUXm1yKNju26Jb3EDf0PVjlbGqUSGCOieZllIiflMrQN73xOmJZ2j75VDjaRMGHn+zGTBPUi6QelTOykP2lORrBLQOxffAs+N7b4/wy+K6fTil/R6n8sU64= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687275010; 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=tlJWLjigIxCs/9BWhWNpbYBgast/1lf+L/OL3y0vS50=; b=E7uX8vxj1mMTk8jAyalCBLJ34O0J5daDaqxgnavvZ2wLBR7v6+r0BiBmg3LVHdBp2VKQv8U+epltCFO3TM4OJqf0qc6L9j50GqLabdhZTLpSMDx8tMX5zFrWqbSO+03uLTek9G4NvdWcufzXryTKmkbzMyomSRSDiYG4YD6N+Eo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687275010153149.44609594082306; Tue, 20 Jun 2023 08:30:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBb8f-0007N0-ML; Tue, 20 Jun 2023 09:11:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qBb8d-0007Ml-2y; Tue, 20 Jun 2023 09:11:16 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qBb8b-0000C8-8x; Tue, 20 Jun 2023 09:11:14 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-66615629689so4102183b3a.2; Tue, 20 Jun 2023 06:11:12 -0700 (PDT) Received: from wheely.local0.net ([124.170.190.103]) by smtp.gmail.com with ESMTPSA id w5-20020aa78585000000b00652a72b89d1sm1353285pfn.170.2023.06.20.06.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jun 2023 06:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687266671; x=1689858671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tlJWLjigIxCs/9BWhWNpbYBgast/1lf+L/OL3y0vS50=; b=Swj9VCBK0z9DEBP0pI8kwzaGIBcamDz7RdmZkuV1Z7UkGfalwggvSznBbqdrgQ5VI6 xiWbRzEeWza/kLdQFP5kCqXzkphDvokX8zddkDvDe0kKtS6HRmQqM5p1VCIB+AC8cojv bWQ3SSu6VpHvSPWV2UP8C0+DUjdR/YOPCXEKtVOkrnVDk9whuBedUVHK2sVTHbGYbqf5 SCVgto6Yf06kVibsRrxH0AkwbWEj6kNO8L+o+RLmPLoCztKqlyM5K8OLCzFXZbVTjOPd WLdN0CeVc85DkYduYz6Hqmo4KeDa72APRKXWQp59qqs9DaNc505TqpHMi6rgKdXJ/Hw/ TTTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687266671; x=1689858671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tlJWLjigIxCs/9BWhWNpbYBgast/1lf+L/OL3y0vS50=; b=UILg3+K8DcWYdZBfxZqR6Oo1umRLXZ53s7QIkLVqYOe2fb1VljzFeQfMPqat+imicY zdRKeP4mjLiVrqgOFYnMqVVmm/vr5t2mcsSI97k+E59bOYMKlm5oOWeGtnQz/D792n7k yMDsxZnKBQ9xSkw2jqUdfbU1H4lnFxGh3LFyEwnT0mhAUweC6+51bDwwLl5FLLcPSzKQ kxYkx75EgnwXdF+vTWwgrYJLHsUhDaEE6WD8RS7X8FEJttg2CYszys5scXp95PEPJCo9 iE+iHQg2HyNloHVwpTx36PGzJCnKVcK14PK9praMVglc4EyZadVN5DgMq7SJmz2qFTs5 4RbA== X-Gm-Message-State: AC+VfDwY8Dj48NBAApXM4C8HsATBuZEcwLiQvEvuwjxYnh2SAl4T8BH5 t+cbkzYpKT343GJT+oGJe3/7lpIdzes= X-Google-Smtp-Source: ACHHUZ60BUPS9H7Q4X96B5QcFlKNZ8qRbcJu7DhLRgVdeM5ez/3DFLhwy1JHbGvvh432jeGT3MxQMg== X-Received: by 2002:a05:6a00:1496:b0:668:82c5:ff75 with SMTP id v22-20020a056a00149600b0066882c5ff75mr5490368pfu.28.1687266670876; Tue, 20 Jun 2023 06:11:10 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , Anushree Mathur , Fabiano Rosas Subject: [PATCH 3/4] target/ppc: Add SRR1 prefix indication to interrupt handlers Date: Tue, 20 Jun 2023 23:10:43 +1000 Message-Id: <20230620131044.169110-4-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230620131044.169110-1-npiggin@gmail.com> References: <20230620131044.169110-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=npiggin@gmail.com; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687275012217100003 Content-Type: text/plain; charset="utf-8" ISA v3.1 introduced prefix instructions. Among the changes, various synchronous interrupts report whether they were caused by a prefix instruction in (H)SRR1. The case of instruction fetch that causes an HDSI due to access of a process-scoped table faulting on the partition scoped translation is the tricky one. As with ISIs and HISIs, this does not try to set the prefix bit because there is no instruction image to be loaded. The HDSI needs the originating access type to be passed through to the handler to distinguish this from HDSIs that fault translating process scoped tables originating from a load or store instruction (in that case the prefix bit should be provided). Reviewed-by: Fabiano Rosas Signed-off-by: Nicholas Piggin --- target/ppc/excp_helper.c | 73 +++++++++++++++++++++++++++++++++++++++- target/ppc/mmu-radix64.c | 14 ++++++-- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a2801f6e6b..1de6ea3f03 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -28,6 +28,7 @@ #include "trace.h" =20 #ifdef CONFIG_TCG +#include "sysemu/tcg.h" #include "exec/helper-proto.h" #include "exec/cpu_ldst.h" #endif @@ -141,7 +142,7 @@ static inline bool insn_need_byteswap(CPUArchState *env) return !!(env->msr & ((target_ulong)1 << MSR_LE)); } =20 -static uint32_t ppc_ldl_code(CPUArchState *env, hwaddr addr) +static uint32_t ppc_ldl_code(CPUArchState *env, abi_ptr addr) { uint32_t insn =3D cpu_ldl_code(env, addr); =20 @@ -1348,6 +1349,72 @@ static bool books_vhyp_handles_hv_excp(PowerPCCPU *c= pu) return false; } =20 +#ifdef CONFIG_TCG +static bool is_prefix_insn(CPUPPCState *env, uint32_t insn) +{ + if (!(env->insns_flags2 & PPC2_ISA310)) { + return false; + } + return ((insn & 0xfc000000) =3D=3D 0x04000000); +} + +static bool is_prefix_insn_excp(PowerPCCPU *cpu, int excp) +{ + CPUPPCState *env =3D &cpu->env; + + if (!tcg_enabled()) { + /* + * This does not load instructions and set the prefix bit correctly + * for injected interrupts with KVM. That may have to be discovered + * and set by the KVM layer before injecting. + */ + return false; + } + + switch (excp) { + case POWERPC_EXCP_HDSI: + /* HDSI PRTABLE_FAULT has the originating access type in error_cod= e */ + if ((env->spr[SPR_HDSISR] & DSISR_PRTABLE_FAULT) && + (env->error_code =3D=3D MMU_INST_FETCH)) { + /* + * Fetch failed due to partition scope translation, so prefix + * indication is not relevant (and attempting to load the + * instruction at NIP would cause recursive faults with the sa= me + * translation). + */ + break; + } + /* fall through */ + case POWERPC_EXCP_MCHECK: + case POWERPC_EXCP_DSI: + case POWERPC_EXCP_DSEG: + case POWERPC_EXCP_ALIGN: + case POWERPC_EXCP_PROGRAM: + case POWERPC_EXCP_FPU: + case POWERPC_EXCP_TRACE: + case POWERPC_EXCP_HV_EMU: + case POWERPC_EXCP_VPU: + case POWERPC_EXCP_VSXU: + case POWERPC_EXCP_FU: + case POWERPC_EXCP_HV_FU: { + uint32_t insn =3D ppc_ldl_code(env, env->nip); + if (is_prefix_insn(env, insn)) { + return true; + } + break; + } + default: + break; + } + return false; +} +#else +static bool is_prefix_insn_excp(PowerPCCPU *cpu, int excp) +{ + return false; +} +#endif + static void powerpc_excp_books(PowerPCCPU *cpu, int excp) { CPUState *cs =3D CPU(cpu); @@ -1395,6 +1462,10 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int = excp) =20 vector |=3D env->excp_prefix; =20 + if (is_prefix_insn_excp(cpu, excp)) { + msr |=3D PPC_BIT(34); + } + switch (excp) { case POWERPC_EXCP_MCHECK: /* Machine check exception = */ if (!FIELD_EX64(env->msr, MSR, ME)) { diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c index 1fc1ba3ecf..920084bd8f 100644 --- a/target/ppc/mmu-radix64.c +++ b/target/ppc/mmu-radix64.c @@ -145,6 +145,13 @@ static void ppc_radix64_raise_hsi(PowerPCCPU *cpu, MMU= AccessType access_type, CPUState *cs =3D CPU(cpu); CPUPPCState *env =3D &cpu->env; =20 + env->error_code =3D 0; + if (cause & DSISR_PRTABLE_FAULT) { + /* HDSI PRTABLE_FAULT gets the originating access type in error_co= de */ + env->error_code =3D access_type; + access_type =3D MMU_DATA_LOAD; + } + qemu_log_mask(CPU_LOG_MMU, "%s for %s @0x%"VADDR_PRIx" 0x%" HWADDR_PRIx" cause %08x\n", __func__, access_str(access_type), @@ -166,7 +173,6 @@ static void ppc_radix64_raise_hsi(PowerPCCPU *cpu, MMUA= ccessType access_type, env->spr[SPR_HDSISR] =3D cause; env->spr[SPR_HDAR] =3D eaddr; env->spr[SPR_ASDR] =3D g_raddr; - env->error_code =3D 0; break; default: g_assert_not_reached(); @@ -369,13 +375,14 @@ static bool validate_pate(PowerPCCPU *cpu, uint64_t l= pid, ppc_v3_pate_t *pate) } =20 static int ppc_radix64_partition_scoped_xlate(PowerPCCPU *cpu, - MMUAccessType access_type, + MMUAccessType orig_access_ty= pe, vaddr eaddr, hwaddr g_raddr, ppc_v3_pate_t pate, hwaddr *h_raddr, int *h_prot, int *h_page_size, bool pde_a= ddr, int mmu_idx, bool guest_visi= ble) { + MMUAccessType access_type =3D orig_access_type; int fault_cause =3D 0; hwaddr pte_addr; uint64_t pte; @@ -404,7 +411,8 @@ static int ppc_radix64_partition_scoped_xlate(PowerPCCP= U *cpu, fault_cause |=3D DSISR_PRTABLE_FAULT; } if (guest_visible) { - ppc_radix64_raise_hsi(cpu, access_type, eaddr, g_raddr, fault_= cause); + ppc_radix64_raise_hsi(cpu, orig_access_type, + eaddr, g_raddr, fault_cause); } return 1; } --=20 2.40.1 From nobody Mon Feb 9 20:30:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1687266727; cv=none; d=zohomail.com; s=zohoarc; b=dMDuX1mWS+hePak6OB08oT48GKeGEI6FeMoFoEqqva33g8uvPsaYAxZUYoRv5q0vGgZQUDtPtex1DyRFXC10u8i5G1mCFuuHJEj6VdaXmzgQDd8nGfdI/ifiJPzM14Zum2rHoSCBQc03DmhnPaywRLYrU9yZXS7CzQLBqHFCA+Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687266727; 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=alJuG3MYw6CejQf12po0CQZiLPypzNmI2P5dUAwRH0o=; b=HWYfLaSRQBPL5O0ng+9YYZOlVBM5ktN6y6VpGzMSP16OC0I91JhQfv4nVla6nvVd8aPjot6yIwona8aIK5D4syra4erBZeHJG1T/6n+5NZSb/tmCeNy7p+hOmD7WxCYUTCduX8xYglF4VIdTm+sqrd0ECIdujlL9J5twugDi6Xk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1687266727405308.282212850351; Tue, 20 Jun 2023 06:12:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBb8i-0007Pm-KG; Tue, 20 Jun 2023 09:11:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qBb8g-0007Nv-Vj; Tue, 20 Jun 2023 09:11:18 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qBb8e-0000CV-Mc; Tue, 20 Jun 2023 09:11:18 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-66869feb7d1so1874508b3a.3; Tue, 20 Jun 2023 06:11:16 -0700 (PDT) Received: from wheely.local0.net ([124.170.190.103]) by smtp.gmail.com with ESMTPSA id w5-20020aa78585000000b00652a72b89d1sm1353285pfn.170.2023.06.20.06.11.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Jun 2023 06:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1687266675; x=1689858675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=alJuG3MYw6CejQf12po0CQZiLPypzNmI2P5dUAwRH0o=; b=b+jYElD/GffPe7795ZeXzQL7OSYpD2uSq2xaSLnPa9RU1Z8v7VssylIGixnd+C4o/v qV3FapprFT2WdJ/jDB5gISWPfZHWneb2UN2/sofnTT3syRVnOPn6xkydudUNPyPWF078 syVCbKUNgs7GrUZGAwqyhp78Dt1ioRQ+vfEpboieWT55mJXeOKycvlK9v6zw5B9shpEw o6LLxpXuEUo8hA010oxlOHhyqJc0jXV6AV3FspAtq0IN7Xnf3MGicKGcGnOKp1kdGF2O 2dlqZa6LIkGNrTIoWXLvl6+tM0BdD3g7Hc3Wvn0Bx/yWsjFxBy5fLPQ/b+XhT+akdGVH 2wNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687266675; x=1689858675; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=alJuG3MYw6CejQf12po0CQZiLPypzNmI2P5dUAwRH0o=; b=bSO6ohaEvaM9ikywye0hvP16uho8rL5mZzR+CN54MAWXqqJFaVVs9ZuMd7aNO8xGTc m8yS56FV7J5tLLJK35YNGD5nEx847KukJ5IWub2bYdJ7dQ9U7xRwLuLyK/OLIE6ALTDj AMVlsZh8foECo4ZmsNXWS31pzLogvprM38CSWF44UfnkbP/GFexIbsZOCOyRwkfVhAt0 37C01KC5tvWd8uTM4LkHcQKRPDJYJ5XJ0pTalsEm3YiJPPuNB3rPhCcoRYEYqSoyItBB 9q6T6pvlqcmp7kmdy6mSt5ODPA/ieTQigngm9AhcYIP9eUbgTJ5J+XLNHh05ICwDQhih De5g== X-Gm-Message-State: AC+VfDwDvPCkoQe9OYdXHH32gLa02l/6XZYYyikqSYEVKwCfryMPAHrm xz+DLBXQg4YrXRhqhJOzOq4uxwWWQIs= X-Google-Smtp-Source: ACHHUZ4fI5eEcHBiH3ljhnysLx3R6eGwPKZKYBHk1EQ01sxP6Z9L5z7lqr6UrbSImiPd55hmmaaMXQ== X-Received: by 2002:a05:6a21:3414:b0:118:b72c:2924 with SMTP id yn20-20020a056a21341400b00118b72c2924mr10085254pzb.60.1687266674540; Tue, 20 Jun 2023 06:11:14 -0700 (PDT) From: Nicholas Piggin To: qemu-ppc@nongnu.org Cc: Nicholas Piggin , qemu-devel@nongnu.org, Harsh Prateek Bora , Daniel Henrique Barboza , Anushree Mathur Subject: [PATCH 4/4] target/ppc: Implement HEIR SPR Date: Tue, 20 Jun 2023 23:10:44 +1000 Message-Id: <20230620131044.169110-5-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230620131044.169110-1-npiggin@gmail.com> References: <20230620131044.169110-1-npiggin@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=npiggin@gmail.com; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1687266727946100001 Content-Type: text/plain; charset="utf-8" The hypervisor emulation assistance interrupt modifies HEIR to contain the value of the instruction which caused the exception. Only TCG raises HEAI interrupts so this can be made TCG-only. Signed-off-by: Nicholas Piggin --- target/ppc/cpu.h | 1 + target/ppc/cpu_init.c | 23 +++++++++++++++++++++++ target/ppc/excp_helper.c | 17 ++++++++++++++++- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index 0ee2adc105..054edf3c80 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -1647,6 +1647,7 @@ void ppc_compat_add_property(Object *obj, const char = *name, #define SPR_HMER (0x150) #define SPR_HMEER (0x151) #define SPR_PCR (0x152) +#define SPR_HEIR (0x153) #define SPR_BOOKE_LPIDR (0x152) #define SPR_BOOKE_TCR (0x154) #define SPR_BOOKE_TLB0PS (0x158) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index d3d6902e6e..d4a7bf01cc 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -1630,6 +1630,7 @@ static void register_8xx_sprs(CPUPPCState *env) * HSRR0 =3D> SPR 314 (Power 2.04 hypv) * HSRR1 =3D> SPR 315 (Power 2.04 hypv) * LPIDR =3D> SPR 317 (970) + * HEIR =3D> SPR 339 (Power 2.05 hypv) (64-bit reg from 3.1) * EPR =3D> SPR 702 (Power 2.04 emb) * perf =3D> 768-783 (Power 2.04) * perf =3D> 784-799 (Power 2.04) @@ -5523,6 +5524,24 @@ static void register_power6_common_sprs(CPUPPCState = *env) 0x00000000); } =20 +static void register_HEIR32_spr(CPUPPCState *env) +{ + spr_register_hv(env, SPR_HEIR, "HEIR", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_generic32, + 0x00000000); +} + +static void register_HEIR64_spr(CPUPPCState *env) +{ + spr_register_hv(env, SPR_HEIR, "HEIR", + SPR_NOACCESS, SPR_NOACCESS, + SPR_NOACCESS, SPR_NOACCESS, + &spr_read_generic, &spr_write_generic, + 0x00000000); +} + static void register_power8_tce_address_control_sprs(CPUPPCState *env) { spr_register_kvm(env, SPR_TAR, "TAR", @@ -5951,6 +5970,7 @@ static void init_proc_POWER7(CPUPPCState *env) register_power5p_ear_sprs(env); register_power5p_tb_sprs(env); register_power6_common_sprs(env); + register_HEIR32_spr(env); register_power6_dbg_sprs(env); register_power7_book4_sprs(env); =20 @@ -6073,6 +6093,7 @@ static void init_proc_POWER8(CPUPPCState *env) register_power5p_ear_sprs(env); register_power5p_tb_sprs(env); register_power6_common_sprs(env); + register_HEIR32_spr(env); register_power6_dbg_sprs(env); register_power8_tce_address_control_sprs(env); register_power8_ids_sprs(env); @@ -6235,6 +6256,7 @@ static void init_proc_POWER9(CPUPPCState *env) register_power5p_ear_sprs(env); register_power5p_tb_sprs(env); register_power6_common_sprs(env); + register_HEIR32_spr(env); register_power6_dbg_sprs(env); register_power8_tce_address_control_sprs(env); register_power8_ids_sprs(env); @@ -6427,6 +6449,7 @@ static void init_proc_POWER10(CPUPPCState *env) register_power5p_ear_sprs(env); register_power5p_tb_sprs(env); register_power6_common_sprs(env); + register_HEIR64_spr(env); register_power6_dbg_sprs(env); register_power8_tce_address_control_sprs(env); register_power8_ids_sprs(env); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 1de6ea3f03..77bfc18734 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1642,13 +1642,28 @@ static void powerpc_excp_books(PowerPCCPU *cpu, int= excp) case POWERPC_EXCP_HDECR: /* Hypervisor decrementer exception = */ case POWERPC_EXCP_HDSI: /* Hypervisor data storage exception = */ case POWERPC_EXCP_SDOOR_HV: /* Hypervisor Doorbell interrupt = */ - case POWERPC_EXCP_HV_EMU: case POWERPC_EXCP_HVIRT: /* Hypervisor virtualization = */ srr0 =3D SPR_HSRR0; srr1 =3D SPR_HSRR1; new_msr |=3D (target_ulong)MSR_HVB; new_msr |=3D env->msr & ((target_ulong)1 << MSR_RI); break; +#ifdef CONFIG_TCG + case POWERPC_EXCP_HV_EMU: { + uint32_t insn =3D ppc_ldl_code(env, env->nip); + env->spr[SPR_HEIR] =3D insn; + if (is_prefix_insn(env, insn)) { + uint32_t insn2 =3D ppc_ldl_code(env, env->nip + 4); + env->spr[SPR_HEIR] <<=3D 32; + env->spr[SPR_HEIR] |=3D insn2; + } + srr0 =3D SPR_HSRR0; + srr1 =3D SPR_HSRR1; + new_msr |=3D (target_ulong)MSR_HVB; + new_msr |=3D env->msr & ((target_ulong)1 << MSR_RI); + break; + } +#endif case POWERPC_EXCP_VPU: /* Vector unavailable exception = */ case POWERPC_EXCP_VSXU: /* VSX unavailable exception = */ case POWERPC_EXCP_FU: /* Facility unavailable exception = */ --=20 2.40.1