On Tue, Feb 07, 2017 at 01:56:48PM +1100, Sam Bobroff wrote: > Because KVM cannot support radix and hash modes concurrently, QEMU can > avoid allocating a hash page table if KVM supports radix mode. > > Signed-off-by: Sam Bobroff <sam.bobr...@au1.ibm.com>
This isn't quite right, it's doing the HPT handling based on whether or not we *can* do RPT rather than whether we *are* doing RPT. It'll mostly work for now, while only radix-on-radix and hash-on-hash are supported, but that won't be true forever. It will already be wrong if, for example, you tried to run a POWER8 TCG guest on a host that happened to be a POWER9 in radix mode. > --- > hw/ppc/spapr.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index d629e2630c..1411e470c0 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1150,15 +1150,17 @@ static void ppc_spapr_reset(void) > /* Check for unknown sysbus devices */ > foreach_dynamic_sysbus_device(find_unknown_sysbus_device, NULL); > > - /* Allocate and/or reset the hash page table */ > - spapr_reallocate_hpt(spapr, > + if (!kvmppc_has_cap_mmu_radix()) { > + /* Allocate and/or reset the hash page table */ > + spapr_reallocate_hpt(spapr, > spapr_hpt_shift_for_ramsize(machine->maxram_size), > &error_fatal); > > - /* Update the RMA size if necessary */ > - if (spapr->vrma_adjust) { > - spapr->rma_size = kvmppc_rma_size(spapr_node0_size(), > - spapr->htab_shift); > + /* Update the RMA size if necessary */ > + if (spapr->vrma_adjust) { > + spapr->rma_size = kvmppc_rma_size(spapr_node0_size(), > + spapr->htab_shift); > + } > } > > qemu_devices_reset(); -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature