Message ID | 1500048838-16802-1-git-send-email-clg@kaod.org |
---|---|
State | New |
Headers | show |
On Fri, Jul 14, 2017 at 06:13:58PM +0200, Cédric Le Goater wrote: > But when a guest initializes radix mode, it issues a H_REGISTER_PROC_TBL > to update the LPCR of all CPUs. Hot-plugged CPUs inherit from the same > setting under KVM but not under TCG. So, Let's check for radix and update > the default LPCR to keep new CPUs in sync. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Applied to ppc-for-2.10, thanks. > --- > target/ppc/translate_init.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c > index 8b9807665dd5..8776e9b0f8fa 100644 > --- a/target/ppc/translate_init.c > +++ b/target/ppc/translate_init.c > @@ -9014,8 +9014,16 @@ void cpu_ppc_set_papr(PowerPCCPU *cpu, PPCVirtualHypervisor *vhyp) > /* By default we choose legacy mode and switch to new hash or radix > * when a register process table hcall is made. So disable process > * tables and guest translation shootdown by default > + * > + * Hot-plugged CPUs inherit from the guest radix setting under > + * KVM but not under TCG. Update the default LPCR to keep new > + * CPUs in sync when radix is enabled. > */ > - lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); > + if (ppc64_radix_guest(cpu)) { > + lpcr->default_value |= LPCR_UPRT | LPCR_GTSE; > + } else { > + lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); > + } > lpcr->default_value |= LPCR_PDEE | LPCR_HDEE | LPCR_EEE | LPCR_DEE | > LPCR_OEE; > break;
On Fri, 2017-07-14 at 18:13 +0200, Cédric Le Goater wrote: > But when a guest initializes radix mode, it issues a > H_REGISTER_PROC_TBL > to update the LPCR of all CPUs. Hot-plugged CPUs inherit from the > same > setting under KVM but not under TCG. So, Let's check for radix and > update > the default LPCR to keep new CPUs in sync. > > Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> > --- > target/ppc/translate_init.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/target/ppc/translate_init.c > b/target/ppc/translate_init.c > index 8b9807665dd5..8776e9b0f8fa 100644 > --- a/target/ppc/translate_init.c > +++ b/target/ppc/translate_init.c > @@ -9014,8 +9014,16 @@ void cpu_ppc_set_papr(PowerPCCPU *cpu, > PPCVirtualHypervisor *vhyp) > /* By default we choose legacy mode and switch to new hash > or radix > * when a register process table hcall is made. So disable > process > * tables and guest translation shootdown by default > + * > + * Hot-plugged CPUs inherit from the guest radix setting > under > + * KVM but not under TCG. Update the default LPCR to keep > new > + * CPUs in sync when radix is enabled. > */ > - lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); > + if (ppc64_radix_guest(cpu)) { > + lpcr->default_value |= LPCR_UPRT | LPCR_GTSE; Since we can't do radix without GTSE, I guess for now at least RADIX implies GTSE. > + } else { > + lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); > + } > lpcr->default_value |= LPCR_PDEE | LPCR_HDEE | LPCR_EEE | > LPCR_DEE | > LPCR_OEE; > break;
diff --git a/target/ppc/translate_init.c b/target/ppc/translate_init.c index 8b9807665dd5..8776e9b0f8fa 100644 --- a/target/ppc/translate_init.c +++ b/target/ppc/translate_init.c @@ -9014,8 +9014,16 @@ void cpu_ppc_set_papr(PowerPCCPU *cpu, PPCVirtualHypervisor *vhyp) /* By default we choose legacy mode and switch to new hash or radix * when a register process table hcall is made. So disable process * tables and guest translation shootdown by default + * + * Hot-plugged CPUs inherit from the guest radix setting under + * KVM but not under TCG. Update the default LPCR to keep new + * CPUs in sync when radix is enabled. */ - lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); + if (ppc64_radix_guest(cpu)) { + lpcr->default_value |= LPCR_UPRT | LPCR_GTSE; + } else { + lpcr->default_value &= ~(LPCR_UPRT | LPCR_GTSE); + } lpcr->default_value |= LPCR_PDEE | LPCR_HDEE | LPCR_EEE | LPCR_DEE | LPCR_OEE; break;
But when a guest initializes radix mode, it issues a H_REGISTER_PROC_TBL to update the LPCR of all CPUs. Hot-plugged CPUs inherit from the same setting under KVM but not under TCG. So, Let's check for radix and update the default LPCR to keep new CPUs in sync. Signed-off-by: Cédric Le Goater <clg@kaod.org> --- target/ppc/translate_init.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)