From nobody Fri May 17 02:03:15 2024 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=1689915916; cv=none; d=zohomail.com; s=zohoarc; b=AG+YdI6Og9VsoC/XkPOIC/fe2CGFNkU2yns5i/NlYjTf4DYCjrz/6G/caEXE1yokIDXuj7kqSRRBFIM8z5LRdg123VF0hRNKCno1p6R9z0JqUsmA4Vxbaoc4bgOXUUsTD0PocixBCS1Yagh/pMZ8WVSVhhXMoVCbNq6VBvhJ+Ec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689915916; 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=IHU35yizKmO0HVITSaXSK8nTSP3OUIC8wQtIzsoRKiQ=; b=PIgeEhFUbYLeL0HZaENSsvnhu5Df+Ah0NTydC9T8GXvHKRda12JvImcveJZlo/wFpKbWDs4iL9dRAG9Pw38RwZ/rcftxiho2hmrtOzU/OaZZD1EUQafib/obHT8hSWpN7CGDtKek58ouuVqDMNiaJoTVOQHsmNW+VPQNg+CZXQ4= 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 1689915916587604.6676799910745; Thu, 20 Jul 2023 22:05:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qMiIT-0004S6-Pq; Fri, 21 Jul 2023 01:03:21 -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 1qMiIQ-0004RR-67; Fri, 21 Jul 2023 01:03:18 -0400 Received: from mail-oa1-x2a.google.com ([2001:4860:4864:20::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qMiIO-0004aJ-BG; Fri, 21 Jul 2023 01:03:17 -0400 Received: by mail-oa1-x2a.google.com with SMTP id 586e51a60fabf-1b060bce5b0so1184396fac.3; Thu, 20 Jul 2023 22:03:15 -0700 (PDT) Received: from wheely.local0.net ([203.220.77.10]) by smtp.gmail.com with ESMTPSA id z13-20020a63330d000000b0056001f43726sm2129444pgz.92.2023.07.20.22.03.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 22:03:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689915794; x=1690520594; 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=IHU35yizKmO0HVITSaXSK8nTSP3OUIC8wQtIzsoRKiQ=; b=FW0Ucfy1fZKMo28y7T4n8HNif6ke8VSleS1qiqMgOcZ5QpnUteNl+xEfwmJv7HlDBT nNwoHN2mWj9UHeIjoeDn46Q8p+ECiIB7IecV1uWRpAvMpbJKfJMjUA+ti3i2stR9JPYj mjsX55U1VABhaQIxwHtZoTDQaJo2DZK9/AQlRGJfniCDPkn9N2d7kR8qWyVJpbPkM9dH P94X8Ur7K55+pAp3N6WJwQW+yekOK6l8VI8gV3bUTAsSXRc3ufojsqPLkZZEmZK1SYPx MCfHrqIGXhuZeOvlSM5rhQj7/z8IsE5iwmpaKGIn2lMDOWyzOofKosd3VcCgAqQacOYA uoZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689915794; x=1690520594; 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=IHU35yizKmO0HVITSaXSK8nTSP3OUIC8wQtIzsoRKiQ=; b=FaAg8zeRDrBUoKVojWk7OA33m1UsezaabgTKrnlrRKR5wzJVIMWY/aCXFrg4wa2hZs QLPxUVusbkcFZ4r2e0wadwl9H+dpPprxutM0ga/vjF4KnfotEmePCukHwe9yzx/aOgBx zQ10Fe4VSGxnvVWIavPtNd2R1obv6adPMU0DVd/0D0hPuPATKoHbvsz1IqHKifyM+793 /eBi/VkTc24+YiUVpJ5AIYKrrCSgGwlFtFFCSkwKmvpPIZAOLt/GYznEzNsC8Gg0WGiu IrJXGof6jrslsKVjBIis6GS1+GA9Zdk5RkuNaw1RI5sfaa/a88jKFEtJWbiUK1A2LiJ4 2ZfQ== X-Gm-Message-State: ABy/qLbttKgbahfmu+oYr1SO3nB+/5HFfDQ8LJhCmF2SEAfpimeKkJgk LBnt81Rm0xeHJ9+pGCrfns8= X-Google-Smtp-Source: APBJJlGVhEBsCREJTPj6XkJpjn7b6TBsY8Dtoonp+yBCZEafbqVzvBnzrI7+xX+WM4vDQeEBNTT5iw== X-Received: by 2002:a05:6870:c154:b0:192:ba3b:a18 with SMTP id g20-20020a056870c15400b00192ba3b0a18mr951159oad.51.1689915794086; Thu, 20 Jul 2023 22:03:14 -0700 (PDT) From: Nicholas Piggin To: Daniel Henrique Barboza Cc: Nicholas Piggin , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Barrat?= , David Gibson , Greg Kurz , Harsh Prateek Bora , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 1/2] target/ppc: Implement ASDR register for ISA v3.0 for HPT Date: Fri, 21 Jul 2023 15:02:54 +1000 Message-Id: <20230721050255.100090-2-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230721050255.100090-1-npiggin@gmail.com> References: <20230721050255.100090-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=2001:4860:4864:20::2a; envelope-from=npiggin@gmail.com; helo=mail-oa1-x2a.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: 1689915918645100003 Content-Type: text/plain; charset="utf-8" The ASDR register was introduced in ISA v3.0. It has not been implemented for HPT. With HPT, ASDR is the format of the slbmte RS operand (containing VSID), which matches the ppc_slb_t field. Signed-off-by: Nicholas Piggin --- target/ppc/mmu-hash64.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index 900f906990..a0c90df3ce 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -770,7 +770,8 @@ static bool ppc_hash64_use_vrma(CPUPPCState *env) } } =20 -static void ppc_hash64_set_isi(CPUState *cs, int mmu_idx, uint64_t error_c= ode) +static void ppc_hash64_set_isi(CPUState *cs, int mmu_idx, uint64_t slb_vsi= d, + uint64_t error_code) { CPUPPCState *env =3D &POWERPC_CPU(cs)->env; bool vpm; @@ -782,13 +783,15 @@ static void ppc_hash64_set_isi(CPUState *cs, int mmu_= idx, uint64_t error_code) } if (vpm && !mmuidx_hv(mmu_idx)) { cs->exception_index =3D POWERPC_EXCP_HISI; + env->spr[SPR_ASDR] =3D slb_vsid; } else { cs->exception_index =3D POWERPC_EXCP_ISI; } env->error_code =3D error_code; } =20 -static void ppc_hash64_set_dsi(CPUState *cs, int mmu_idx, uint64_t dar, ui= nt64_t dsisr) +static void ppc_hash64_set_dsi(CPUState *cs, int mmu_idx, uint64_t slb_vsi= d, + uint64_t dar, uint64_t dsisr) { CPUPPCState *env =3D &POWERPC_CPU(cs)->env; bool vpm; @@ -802,6 +805,7 @@ static void ppc_hash64_set_dsi(CPUState *cs, int mmu_id= x, uint64_t dar, uint64_t cs->exception_index =3D POWERPC_EXCP_HDSI; env->spr[SPR_HDAR] =3D dar; env->spr[SPR_HDSISR] =3D dsisr; + env->spr[SPR_ASDR] =3D slb_vsid; } else { cs->exception_index =3D POWERPC_EXCP_DSI; env->spr[SPR_DAR] =3D dar; @@ -963,13 +967,13 @@ bool ppc_hash64_xlate(PowerPCCPU *cpu, vaddr eaddr, M= MUAccessType access_type, } switch (access_type) { case MMU_INST_FETCH: - ppc_hash64_set_isi(cs, mmu_idx, SRR1_PROTFAULT); + ppc_hash64_set_isi(cs, mmu_idx, 0, SRR1_PROTFAULT); break; case MMU_DATA_LOAD: - ppc_hash64_set_dsi(cs, mmu_idx, eaddr, DSISR_PROTFAULT= ); + ppc_hash64_set_dsi(cs, mmu_idx, 0, eaddr, DSISR_PROTFA= ULT); break; case MMU_DATA_STORE: - ppc_hash64_set_dsi(cs, mmu_idx, eaddr, + ppc_hash64_set_dsi(cs, mmu_idx, 0, eaddr, DSISR_PROTFAULT | DSISR_ISSTORE); break; default: @@ -1022,7 +1026,7 @@ bool ppc_hash64_xlate(PowerPCCPU *cpu, vaddr eaddr, M= MUAccessType access_type, /* 3. Check for segment level no-execute violation */ if (access_type =3D=3D MMU_INST_FETCH && (slb->vsid & SLB_VSID_N)) { if (guest_visible) { - ppc_hash64_set_isi(cs, mmu_idx, SRR1_NOEXEC_GUARD); + ppc_hash64_set_isi(cs, mmu_idx, slb->vsid, SRR1_NOEXEC_GUARD); } return false; } @@ -1035,13 +1039,14 @@ bool ppc_hash64_xlate(PowerPCCPU *cpu, vaddr eaddr,= MMUAccessType access_type, } switch (access_type) { case MMU_INST_FETCH: - ppc_hash64_set_isi(cs, mmu_idx, SRR1_NOPTE); + ppc_hash64_set_isi(cs, mmu_idx, slb->vsid, SRR1_NOPTE); break; case MMU_DATA_LOAD: - ppc_hash64_set_dsi(cs, mmu_idx, eaddr, DSISR_NOPTE); + ppc_hash64_set_dsi(cs, mmu_idx, slb->vsid, eaddr, DSISR_NOPTE); break; case MMU_DATA_STORE: - ppc_hash64_set_dsi(cs, mmu_idx, eaddr, DSISR_NOPTE | DSISR_ISS= TORE); + ppc_hash64_set_dsi(cs, mmu_idx, slb->vsid, eaddr, + DSISR_NOPTE | DSISR_ISSTORE); break; default: g_assert_not_reached(); @@ -1075,7 +1080,7 @@ bool ppc_hash64_xlate(PowerPCCPU *cpu, vaddr eaddr, M= MUAccessType access_type, if (PAGE_EXEC & ~amr_prot) { srr1 |=3D SRR1_IAMR; /* Access violates virt pg class key = prot */ } - ppc_hash64_set_isi(cs, mmu_idx, srr1); + ppc_hash64_set_isi(cs, mmu_idx, slb->vsid, srr1); } else { int dsisr =3D 0; if (need_prot & ~pp_prot) { @@ -1087,7 +1092,7 @@ bool ppc_hash64_xlate(PowerPCCPU *cpu, vaddr eaddr, M= MUAccessType access_type, if (need_prot & ~amr_prot) { dsisr |=3D DSISR_AMR; } - ppc_hash64_set_dsi(cs, mmu_idx, eaddr, dsisr); + ppc_hash64_set_dsi(cs, mmu_idx, slb->vsid, eaddr, dsisr); } return false; } --=20 2.40.1 From nobody Fri May 17 02:03:15 2024 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=1689915870; cv=none; d=zohomail.com; s=zohoarc; b=hpZyf22BleugTft4VmMY5VNB5DLtHkPjFG1+1oPLnYphH8oeUBdqX4lpLTzwvQ6kx6gSv3Z0j5yCAzWd6vxtr67kBIX271GlYHlyLsjk8cgbn7m2ey3dfM8iJPcfK8GxG9T9YCp8qbo+JDKddnQnNPC6Yo+wkvMS6u8SC3JcchI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1689915870; 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=phXZeq9Ur7lbdALZ37vSJEfCXdyT8OPHeW6nkwT00e4=; b=g4eu+G+p8T7kCFO2RuYe2zt+5168UUCo8QCQgprtJvrpN7rUEeAFRDSIlijVG3GvJjfcSj+8uhzoggVw2a5+CU7mIg5HAJfer8ur09wKDAmMNhL9dm32G2g9T0DxTgC4TECw7qKAqnbl0+vAwYIdps4UFBKDtY1UhyMsUOIvH+M= 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 1689915870919472.3858718977481; Thu, 20 Jul 2023 22:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qMiId-0004Ze-S6; Fri, 21 Jul 2023 01:03:31 -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 1qMiIW-0004VO-MP; Fri, 21 Jul 2023 01:03:25 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qMiIS-0004aw-Sp; Fri, 21 Jul 2023 01:03:23 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-6b9e478e122so1284315a34.1; Thu, 20 Jul 2023 22:03:19 -0700 (PDT) Received: from wheely.local0.net ([203.220.77.10]) by smtp.gmail.com with ESMTPSA id z13-20020a63330d000000b0056001f43726sm2129444pgz.92.2023.07.20.22.03.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jul 2023 22:03:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689915799; x=1690520599; 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=phXZeq9Ur7lbdALZ37vSJEfCXdyT8OPHeW6nkwT00e4=; b=HdfXT7IUun3OOPPOMNl8oFBze4tUUCqIBskpRiKsD0nKo86w8riGZGTr6Jwo60DDO6 NixVZI5YHxwFnsENXRwHRvS8mAwE+bqfUeWZFmBNbifO39b656dCshiNqibIGb5ooe7i PrF9IaC+++v9jWXuuUubVyXKnvIM2Jvj9lw2/AUIdizOkMzWD/ry9tgRgdkXM0ZKQHgx wjfS409tJ99LmuLqWT045y6m/kmSBqmSmA37se1BPJQIM3bDTJiLh4c12VZOZatpCzru 10c/8X8RXLeTt/8Y5/htU0YEqakqXLS2RbqWEV8XUdqZgRgJqz/m+WLlp6CFPUOueDZS w3+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689915799; x=1690520599; 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=phXZeq9Ur7lbdALZ37vSJEfCXdyT8OPHeW6nkwT00e4=; b=KceZofcFvgSPHvI6VkQOPqJSSc8tIFX/GrkY8r1PcsGh2fYBZhZFdIx/Nqj53nRjt/ SFKLPP3zMvexqA3YliYkANV2oLOXyNHSNoWIzoTcRqqBM7vVN4zwd1pNX9u+F4WPdlzT gPyO0WQXrQnoeK/q8AonTawuNzJUGcDJ5JsD1wMethM40vpNsP+Z5e7r6jHV4Roev/2+ 87qS8sYwybuiElwLVLjdQyjDYQSVRziyEgPIdjmnN9Gz5SGGbt9+ZbXXFWzcceWGryN8 BrrKhEMKoNqsOZjbZ93eztxx241QWa2Y8/bTMbGFB5ui+EZMdve8ulgKlHBeXtqZFGJx mStw== X-Gm-Message-State: ABy/qLYjYsWFMJLAMDomnfI01fcbBmVmgvFx7gAm19IKvh+OH1ghs8Wr 74xlyCGl/MRl/U5c3nelpU8= X-Google-Smtp-Source: APBJJlE9xKsL8q3Yn4sJID7cXzG2crlMn4gHeIA3OTS+KNzIIG47RQLSsgRu4Nt4FRsIde2UA9YwvA== X-Received: by 2002:a05:6358:2495:b0:133:c03:53c6 with SMTP id m21-20020a056358249500b001330c0353c6mr1040097rwc.14.1689915798976; Thu, 20 Jul 2023 22:03:18 -0700 (PDT) From: Nicholas Piggin To: Daniel Henrique Barboza Cc: Nicholas Piggin , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Barrat?= , David Gibson , Greg Kurz , Harsh Prateek Bora , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 2/2] target/ppc: Fix VRMA page size for ISA v3.0 Date: Fri, 21 Jul 2023 15:02:55 +1000 Message-Id: <20230721050255.100090-3-npiggin@gmail.com> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230721050255.100090-1-npiggin@gmail.com> References: <20230721050255.100090-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::334; envelope-from=npiggin@gmail.com; helo=mail-ot1-x334.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: 1689915872844100003 Content-Type: text/plain; charset="utf-8" Until v2.07s, the VRMA page size (L||LP) was encoded in LPCR[VRMASD]. In v3.0 that moved to the partition table PS field. Signed-off-by: Nicholas Piggin --- target/ppc/mmu-hash64.c | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/target/ppc/mmu-hash64.c b/target/ppc/mmu-hash64.c index a0c90df3ce..bda0ba90ea 100644 --- a/target/ppc/mmu-hash64.c +++ b/target/ppc/mmu-hash64.c @@ -874,12 +874,41 @@ static target_ulong rmls_limit(PowerPCCPU *cpu) return rma_sizes[rmls]; } =20 -static int build_vrma_slbe(PowerPCCPU *cpu, ppc_slb_t *slb) +/* Return the LLP in SLB_VSID format */ +static uint64_t get_vrma_llp(PowerPCCPU *cpu) { CPUPPCState *env =3D &cpu->env; - target_ulong lpcr =3D env->spr[SPR_LPCR]; - uint32_t vrmasd =3D (lpcr & LPCR_VRMASD) >> LPCR_VRMASD_SHIFT; - target_ulong vsid =3D SLB_VSID_VRMA | ((vrmasd << 4) & SLB_VSID_LLP_MA= SK); + uint64_t llp; + + if (env->mmu_model =3D=3D POWERPC_MMU_3_00) { + ppc_v3_pate_t pate; + uint64_t ps; + + /* + * ISA v3.0 removes the LPCR[VRMASD] field and puts the VRMA base + * page size (L||LP equivalent) in the PS field in the HPT partiti= on + * table entry. + */ + if (!ppc64_v3_get_pate(cpu, cpu->env.spr[SPR_LPIDR], &pate)) { + error_report("Bad VRMA with no partition table entry\n"); + return 0; + } + ps =3D pate.dw0 >> (63 - 58); + llp =3D ((ps & 0x4) << (63 - 55 - 2)) | ((ps & 0x3) << (63 - 59)); + + } else { + uint64_t lpcr =3D env->spr[SPR_LPCR]; + target_ulong vrmasd =3D (lpcr & LPCR_VRMASD) >> LPCR_VRMASD_SHIFT; + + llp =3D (vrmasd << 4) & SLB_VSID_LLP_MASK; + } + + return llp; +} + +static int build_vrma_slbe(PowerPCCPU *cpu, ppc_slb_t *slb) +{ + target_ulong vsid =3D SLB_VSID_VRMA | get_vrma_llp(cpu); int i; =20 for (i =3D 0; i < PPC_PAGE_SIZES_MAX_SZ; i++) { @@ -897,8 +926,8 @@ static int build_vrma_slbe(PowerPCCPU *cpu, ppc_slb_t *= slb) } } =20 - error_report("Bad page size encoding in LPCR[VRMASD]; LPCR=3D0x" - TARGET_FMT_lx, lpcr); + error_report("Bad VRMA page size encoding 0x" TARGET_FMT_lx, + get_vrma_llp(cpu)); =20 return -1; } --=20 2.40.1