Message ID | ea0e3b2031824e076e804d0870340b7a71246a63.1533653670.git.joseph.salisbury@canonical.com |
---|---|
State | New |
Headers | show |
Series | x86/xen: Add call of speculative_store_bypass_ht_init() to PV paths | expand |
On 08/14/18 22:14, Joseph Salisbury wrote: > From: Juergen Gross <jgross@suse.com> > > BugLink: https://bugs.launchpad.net/bugs/1777338 > > Commit: > > 1f50ddb4f418 ("x86/speculation: Handle HT correctly on AMD") > > ... added speculative_store_bypass_ht_init() to the per-CPU initialization sequence. > > speculative_store_bypass_ht_init() needs to be called on each CPU for > PV guests, too. > > Reported-by: Brian Woods <brian.woods@amd.com> > Tested-by: Brian Woods <brian.woods@amd.com> > Signed-off-by: Juergen Gross <jgross@suse.com> > Cc: <stable@vger.kernel.org> > Cc: Linus Torvalds <torvalds@linux-foundation.org> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: boris.ostrovsky@oracle.com > Cc: xen-devel@lists.xenproject.org > Fixes: 1f50ddb4f4189243c05926b842dc1a0332195f31 ("x86/speculation: Handle HT correctly on AMD") > Link: https://lore.kernel.org/lkml/20180621084331.21228-1-jgross@suse.com > Signed-off-by: Ingo Molnar <mingo@kernel.org> > (cherry picked from commit 74899d92e66663dc7671a8017b3146dcd4735f3b) > Signed-off-by: Joseph Salisbury <joseph.salisbury@canonical.com> Clean cherry-pick, specific to Xen and tested by the bug reporter. Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com> > --- > arch/x86/xen/smp_pv.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c > index c0c756c..db6d90e 100644 > --- a/arch/x86/xen/smp_pv.c > +++ b/arch/x86/xen/smp_pv.c > @@ -32,6 +32,7 @@ > #include <xen/interface/vcpu.h> > #include <xen/interface/xenpmu.h> > > +#include <asm/spec-ctrl.h> > #include <asm/xen/interface.h> > #include <asm/xen/hypercall.h> > > @@ -70,6 +71,8 @@ static void cpu_bringup(void) > cpu_data(cpu).x86_max_cores = 1; > set_cpu_sibling_map(cpu); > > + speculative_store_bypass_ht_init(); > + > xen_setup_cpu_clockevents(); > > notify_cpu_starting(cpu); > @@ -250,6 +253,8 @@ static void __init xen_pv_smp_prepare_cpus(unsigned int max_cpus) > } > set_cpu_sibling_map(0); > > + speculative_store_bypass_ht_init(); > + > xen_pmu_init(0); > > if (xen_smp_intr_init(0) || xen_smp_intr_init_pv(0)) >
diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c index c0c756c..db6d90e 100644 --- a/arch/x86/xen/smp_pv.c +++ b/arch/x86/xen/smp_pv.c @@ -32,6 +32,7 @@ #include <xen/interface/vcpu.h> #include <xen/interface/xenpmu.h> +#include <asm/spec-ctrl.h> #include <asm/xen/interface.h> #include <asm/xen/hypercall.h> @@ -70,6 +71,8 @@ static void cpu_bringup(void) cpu_data(cpu).x86_max_cores = 1; set_cpu_sibling_map(cpu); + speculative_store_bypass_ht_init(); + xen_setup_cpu_clockevents(); notify_cpu_starting(cpu); @@ -250,6 +253,8 @@ static void __init xen_pv_smp_prepare_cpus(unsigned int max_cpus) } set_cpu_sibling_map(0); + speculative_store_bypass_ht_init(); + xen_pmu_init(0); if (xen_smp_intr_init(0) || xen_smp_intr_init_pv(0))