From: David Gibson <david@gibson.dropbear.id.au>
To: peter.maydell@linaro.org
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
mdroth@linux.vnet.ibm.com, bharata@linux.vnet.ibm.com,
agraf@suse.de, aik@ozlabs.ru, sjitindarsingh@gmail.com,
mark.cave-ayland@ilande.co.uk, sam.bobroff@au1.ibm.com,
nikunj@linux.vnet.ibm.com, clg@kaod.org,
David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PULL 18/22] target/ppc: Enable RADIX mmu mode for pseries TCG guest
Date: Wed, 10 May 2017 17:01:11 +1000 [thread overview]
Message-ID: <20170510070115.13063-19-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20170510070115.13063-1-david@gibson.dropbear.id.au>
From: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Now that we have added all the infrastructure we can enable a pseries TCG
guest to use radix.
In order to do this we have to add the appropriate bits to the
ibm,arch-vec-5-platform-support vector to represent that we support both
hash and radix mmu models.
A radix guest can now be booted in pseries tcg mode by specifying:
-cpu POWER9
Note that we assume hash, that is we allocate a hpt, until a guest tells
us otherwise via a H_REGISTER_PROCESS_TABLE call with radix specified - in
which case we free the hpt. If we were right and the guest is hash then
there's nothing for us to do.
Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
hw/ppc/spapr.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 80d12d0..e2dc77c 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -855,6 +855,8 @@ static void spapr_dt_rtas(sPAPRMachineState *spapr, void *fdt)
* option vector 5: */
static void spapr_dt_ov5_platform_support(void *fdt, int chosen)
{
+ PowerPCCPU *first_ppc_cpu = POWERPC_CPU(first_cpu);
+
char val[2 * 3] = {
24, 0x00, /* Hash/Radix, filled in below. */
25, 0x00, /* Hash options: Segment Tables == no, GTSE == no. */
@@ -870,8 +872,13 @@ static void spapr_dt_ov5_platform_support(void *fdt, int chosen)
val[1] = 0x00; /* Hash */
}
} else {
- /* TODO: TCG case, hash */
- val[1] = 0x00;
+ if (first_ppc_cpu->env.mmu_model & POWERPC_MMU_V3) {
+ /* V3 MMU supports both hash and radix (with dynamic switching) */
+ val[1] = 0xC0;
+ } else {
+ /* Otherwise we can only do hash */
+ val[1] = 0x00;
+ }
}
_FDT(fdt_setprop(fdt, chosen, "ibm,arch-vec-5-platform-support",
val, sizeof(val)));
@@ -2101,8 +2108,8 @@ static void ppc_spapr_init(MachineState *machine)
}
spapr_ovec_set(spapr->ov5, OV5_FORM1_AFFINITY);
- if (kvmppc_has_cap_mmu_radix()) {
- /* KVM always allows GTSE with radix... */
+ if (!kvm_enabled() || kvmppc_has_cap_mmu_radix()) {
+ /* KVM and TCG always allow GTSE with radix... */
spapr_ovec_set(spapr->ov5, OV5_MMU_RADIX_GTSE);
}
/* ... but not with hash (currently). */
--
2.9.3
next prev parent reply other threads:[~2017-05-10 7:01 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-10 7:00 [Qemu-devel] [PULL 00/22] ppc-for-2.10 queue 20170510 David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 01/22] ppc/pnv: restrict BMC object to the BMC simulator David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 02/22] target/ppc: Emulate LL/SC using cmpxchg helpers David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 03/22] cputlb: handle first atomic write to the page David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 04/22] target/ppc: Generate fence operations David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 05/22] cpus: Fix CPU unplug for MTTCG David Gibson
2017-05-10 7:00 ` [Qemu-devel] [PULL 06/22] tcg: enable MTTCG by default for PPC64 on x86 David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 07/22] target/ppc: do not reset reserve_addr in exec_enter David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 08/22] ppc/xics: Fix stale irq->status bits after get David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 09/22] ppc/xics: preserve P and Q bits for KVM IRQs David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 10/22] Add QemuMacDrivers as submodule David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 11/22] Add QemuMacDrivers qemu_vga.ndrv revision d4e7d7a built " David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 12/22] ppc: add qemu_vga.ndrv ROM to fw_cfg interface for OldWorld Macs David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 13/22] ppc: add qemu_vga.ndrv ROM to fw_cfg interface for NewWorld Macs David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 14/22] target/ppc: Set UPRT and GTSE on all cpus in H_REGISTER_PROCESS_TABLE David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 15/22] target/ppc: Update tlbie to check privilege level based on GTSE David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 16/22] target/ppc: Change tlbie invalid fields for POWER9 support David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 17/22] target/ppc: Implement ISA V3.00 radix page fault handler David Gibson
2017-05-10 7:01 ` David Gibson [this message]
2017-05-10 7:01 ` [Qemu-devel] [PULL 19/22] ppc: xics: fix compilation with CentOS 6 David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 20/22] spapr: Don't accidentally advertise HTM support on POWER9 David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 21/22] target/ppc: Allow workarounds for POWER9 DD1 David Gibson
2017-05-10 7:01 ` [Qemu-devel] [PULL 22/22] pnv: Fix build failures on some host platforms David Gibson
2017-05-10 7:50 ` [Qemu-devel] [PULL 00/22] ppc-for-2.10 queue 20170510 no-reply
2017-05-10 9:45 ` David Gibson
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=20170510070115.13063-19-david@gibson.dropbear.id.au \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=bharata@linux.vnet.ibm.com \
--cc=clg@kaod.org \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mdroth@linux.vnet.ibm.com \
--cc=nikunj@linux.vnet.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=sam.bobroff@au1.ibm.com \
--cc=sjitindarsingh@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).