Message ID | 1497245555-32472-3-git-send-email-bharata@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Jun 12, 2017 at 11:02:35AM +0530, Bharata B Rao wrote: > Fix migration of radix guests by ensuring that we issue > KVM_PPC_CONFIGURE_V3_MMU for radix case post migration. > > Reported-by: Nageswara R Sastry <rnsastry@linux.vnet.ibm.com> > Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com> > Reviewed-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> I believe we shouldn't assume a particular existing state on the destination when processing an incoming stream (it's normally done immediatley after startup, but I'm not sure it has to be). So, we shouldn't only call configure_v3_mmu when patb_entry != 0. For the case of an incoming hash guest, I believe we should explicitly configure KVM to HPT mode, rather than assume it's there already. > --- > hw/ppc/spapr.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index c425499..b2217f3 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1443,6 +1443,18 @@ static int spapr_post_load(void *opaque, int version_id) > err = spapr_rtc_import_offset(&spapr->rtc, spapr->rtc_offset); > } > > + if (spapr->patb_entry) { > + PowerPCCPU *cpu = POWERPC_CPU(first_cpu); > + bool radix = !!(spapr->patb_entry & PATBE1_GR); > + bool gtse = !!(cpu->env.spr[SPR_LPCR] & LPCR_GTSE); > + > + err = kvmppc_configure_v3_mmu(cpu, radix, gtse, spapr->patb_entry); > + if (err) { > + error_report("Process table config unsupported by the host"); > + return -EINVAL; > + } > + } > + > return err; > } >
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index c425499..b2217f3 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1443,6 +1443,18 @@ static int spapr_post_load(void *opaque, int version_id) err = spapr_rtc_import_offset(&spapr->rtc, spapr->rtc_offset); } + if (spapr->patb_entry) { + PowerPCCPU *cpu = POWERPC_CPU(first_cpu); + bool radix = !!(spapr->patb_entry & PATBE1_GR); + bool gtse = !!(cpu->env.spr[SPR_LPCR] & LPCR_GTSE); + + err = kvmppc_configure_v3_mmu(cpu, radix, gtse, spapr->patb_entry); + if (err) { + error_report("Process table config unsupported by the host"); + return -EINVAL; + } + } + return err; }