From: Nicholas Piggin <npiggin@gmail.com>
To: qemu-ppc@nongnu.org
Cc: "Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Fabiano Rosas" <farosas@linux.ibm.com>,
qemu-devel@nongnu.org, "Nicholas Piggin" <npiggin@gmail.com>,
"Cédric Le Goater" <clg@kaod.org>
Subject: [PATCH v2 4/9] target/ppc: add vhyp addressing mode helper for radix MMU
Date: Wed, 16 Feb 2022 20:25:40 +1000 [thread overview]
Message-ID: <20220216102545.1808018-5-npiggin@gmail.com> (raw)
In-Reply-To: <20220216102545.1808018-1-npiggin@gmail.com>
The radix on vhyp MMU uses a single-level radix table walk, with the
partition scope mapping provided by the flat QEMU machine memory.
A subsequent change will use the two-level radix walk on vhyp in some
situations, so provide a helper which can abstract that logic.
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
target/ppc/mmu-radix64.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/target/ppc/mmu-radix64.c b/target/ppc/mmu-radix64.c
index df2fec80ce..5535f0fe20 100644
--- a/target/ppc/mmu-radix64.c
+++ b/target/ppc/mmu-radix64.c
@@ -354,6 +354,17 @@ static int ppc_radix64_partition_scoped_xlate(PowerPCCPU *cpu,
return 0;
}
+/*
+ * The spapr vhc has a flat partition scope provided by qemu memory.
+ */
+static bool vhyp_flat_addressing(PowerPCCPU *cpu)
+{
+ if (cpu->vhyp) {
+ return true;
+ }
+ return false;
+}
+
static int ppc_radix64_process_scoped_xlate(PowerPCCPU *cpu,
MMUAccessType access_type,
vaddr eaddr, uint64_t pid,
@@ -385,7 +396,7 @@ static int ppc_radix64_process_scoped_xlate(PowerPCCPU *cpu,
}
prtbe_addr = (pate.dw1 & PATE1_R_PRTB) + offset;
- if (cpu->vhyp) {
+ if (vhyp_flat_addressing(cpu)) {
prtbe0 = ldq_phys(cs->as, prtbe_addr);
} else {
/*
@@ -411,7 +422,7 @@ static int ppc_radix64_process_scoped_xlate(PowerPCCPU *cpu,
*g_page_size = PRTBE_R_GET_RTS(prtbe0);
base_addr = prtbe0 & PRTBE_R_RPDB;
nls = prtbe0 & PRTBE_R_RPDS;
- if (msr_hv || cpu->vhyp) {
+ if (msr_hv || vhyp_flat_addressing(cpu)) {
/*
* Can treat process table addresses as real addresses
*/
@@ -515,7 +526,7 @@ static bool ppc_radix64_xlate_impl(PowerPCCPU *cpu, vaddr eaddr,
relocation = !mmuidx_real(mmu_idx);
/* HV or virtual hypervisor Real Mode Access */
- if (!relocation && (mmuidx_hv(mmu_idx) || cpu->vhyp)) {
+ if (!relocation && (mmuidx_hv(mmu_idx) || vhyp_flat_addressing(cpu))) {
/* In real mode top 4 effective addr bits (mostly) ignored */
*raddr = eaddr & 0x0FFFFFFFFFFFFFFFULL;
@@ -592,7 +603,7 @@ static bool ppc_radix64_xlate_impl(PowerPCCPU *cpu, vaddr eaddr,
g_raddr = eaddr & R_EADDR_MASK;
}
- if (cpu->vhyp) {
+ if (vhyp_flat_addressing(cpu)) {
*raddr = g_raddr;
} else {
/*
--
2.23.0
next prev parent reply other threads:[~2022-02-16 10:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-16 10:25 [PATCH v2 0/9] ppc: nested KVM HV for spapr virtual hypervisor Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 1/9] target/ppc: raise HV interrupts for partition table entry problems Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 2/9] spapr: prevent hdec timer being set up under virtual hypervisor Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 3/9] ppc: allow the hdecr timer to be created/destroyed Nicholas Piggin
2022-02-16 10:25 ` Nicholas Piggin [this message]
2022-02-16 10:25 ` [PATCH v2 5/9] target/ppc: make vhyp get_pate method take lpid and return success Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 6/9] target/ppc: add helper for books vhyp hypercall handler Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 7/9] target/ppc: Add powerpc_reset_excp_state helper Nicholas Piggin
2022-02-16 10:25 ` [PATCH v2 8/9] target/ppc: Introduce a vhyp framework for nested HV support Nicholas Piggin
2022-02-16 10:38 ` Cédric Le Goater
2022-02-16 10:25 ` [PATCH v2 9/9] spapr: implement nested-hv capability for the virtual hypervisor Nicholas Piggin
2022-02-16 10:52 ` Cédric Le Goater
2022-02-16 11:38 ` Nicholas Piggin
2022-02-16 12:30 ` Nicholas Piggin
2022-02-17 17:11 ` Cédric Le Goater
2022-02-18 7:45 ` [PATCH v2 0/9] ppc: nested KVM HV for spapr " Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220216102545.1808018-5-npiggin@gmail.com \
--to=npiggin@gmail.com \
--cc=clg@kaod.org \
--cc=danielhb413@gmail.com \
--cc=farosas@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.