Message ID | 20170519063614.GG3446@in.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, May 19, 2017 at 12:06:14PM +0530, Bharata B Rao wrote: > On Fri, May 19, 2017 at 11:10:39AM +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> > > --- > > hw/ppc/spapr.c | 12 ++++++++++++ > > 1 file changed, 12 insertions(+) > > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > index daf335c..8f20f14 100644 > > --- a/hw/ppc/spapr.c > > +++ b/hw/ppc/spapr.c > > @@ -1400,6 +1400,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); > > + if (kvmppc_has_cap_mmu_radix() && kvm_enabled()) { > > + err = kvmppc_configure_v3_mmu(cpu, SPAPR_PROC_TABLE_RADIX, > > + ((cpu->env.spr[SPR_LPCR] & LPCR_GTSE) ? SPAPR_PROC_TABLE_GTSE : > > + 0), spapr->patb_entry); > > Better to use explicit 'true' and 'false' in the above call. Here is > the updated patch: Or just !!(cpu->env.spr[SPR_LPCR] & LPCR_GTSE) and avoid the ?: entirely. With this version you no longer need patch 3/4 AFAICT. > > >From 937c51cac73b4211ef153c1f5940215960383494 Mon Sep 17 00:00:00 2001 > From: Bharata B Rao <bharata@linux.vnet.ibm.com> > Date: Tue, 16 May 2017 12:19:54 +0530 > Subject: [RFC PATCH v2.1 4/4] spapr: Fix migration of Radix guests > > 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> > --- > hw/ppc/spapr.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index daf335c..69e184b 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1400,6 +1400,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); > + if (kvmppc_has_cap_mmu_radix() && kvm_enabled()) { > + err = kvmppc_configure_v3_mmu(cpu, true, > + ((cpu->env.spr[SPR_LPCR] & LPCR_GTSE) ? true : false), > + spapr->patb_entry); > + } else { > + error_report("Radix guest is unsupported by the host"); > + return -EINVAL; > + } > + } > + > return err; > } >
On Mon, May 22, 2017 at 12:44:48PM +1000, David Gibson wrote: > On Fri, May 19, 2017 at 12:06:14PM +0530, Bharata B Rao wrote: > > On Fri, May 19, 2017 at 11:10:39AM +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> > > > --- > > > hw/ppc/spapr.c | 12 ++++++++++++ > > > 1 file changed, 12 insertions(+) > > > > > > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > > > index daf335c..8f20f14 100644 > > > --- a/hw/ppc/spapr.c > > > +++ b/hw/ppc/spapr.c > > > @@ -1400,6 +1400,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); > > > + if (kvmppc_has_cap_mmu_radix() && kvm_enabled()) { > > > + err = kvmppc_configure_v3_mmu(cpu, SPAPR_PROC_TABLE_RADIX, > > > + ((cpu->env.spr[SPR_LPCR] & LPCR_GTSE) ? SPAPR_PROC_TABLE_GTSE : > > > + 0), spapr->patb_entry); > > > > Better to use explicit 'true' and 'false' in the above call. Here is > > the updated patch: > > Or just !!(cpu->env.spr[SPR_LPCR] & LPCR_GTSE) and avoid the ?: > entirely. > > With this version you no longer need patch 3/4 AFAICT. Ah yes, will send the updated version next. Regards, Bharata.
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index daf335c..69e184b 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1400,6 +1400,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); + if (kvmppc_has_cap_mmu_radix() && kvm_enabled()) { + err = kvmppc_configure_v3_mmu(cpu, true, + ((cpu->env.spr[SPR_LPCR] & LPCR_GTSE) ? true : false), + spapr->patb_entry); + } else { + error_report("Radix guest is unsupported by the host"); + return -EINVAL; + } + } + return err; }