[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH][tip] x86/paravirt: Make the virt_spin_lock_key setup after jump_label_init()
On October 27, 2017 6:02:00 PM GMT+02:00, Dou Liyang <douly.fnst@xxxxxxxxxxxxxx> wrote: >Commit: > > 9043442b43b1 ("locking/paravirt: Use new static key for controlling > call of virt_spin_lock()") > >set the static virt_spin_lock_key to a value before jump_label_init() >has been called, which will result in a WARN(). > >Move the native_pv_lock_init() into xx_smp_prepare_cpus(). Make the >setup later to avoid the WARN(). > >Reported-by: Juergen Gross <jgross@xxxxxxxx> >Suggested-by: Juergen Gross <jgross@xxxxxxxx> >Signed-off-by: Dou Liyang <douly.fnst@xxxxxxxxxxxxxx> >--- > arch/x86/kernel/smpboot.c | 3 ++- > arch/x86/xen/smp_pv.c | 2 ++ > arch/x86/xen/spinlock.c | 6 ++++-- > 3 files changed, 8 insertions(+), 3 deletions(-) > >diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c >index aed1460..6b1335a 100644 >--- a/arch/x86/kernel/smpboot.c >+++ b/arch/x86/kernel/smpboot.c >@@ -1323,6 +1323,8 @@ void __init native_smp_prepare_cpus(unsigned int >max_cpus) > pr_info("CPU0: "); > print_cpu_info(&cpu_data(0)); > >+ native_pv_lock_init(); >+ > uv_system_init(); > > set_mtrr_aps_delayed_init(); >@@ -1350,7 +1352,6 @@ void __init native_smp_prepare_boot_cpu(void) > /* already set me in cpu_online_mask in boot_cpu_init() */ > cpumask_set_cpu(me, cpu_callout_mask); > cpu_set_state_online(me); >- native_pv_lock_init(); > } > > void __init native_smp_cpus_done(unsigned int max_cpus) >diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c >index 5147140..570b2bc 100644 >--- a/arch/x86/xen/smp_pv.c >+++ b/arch/x86/xen/smp_pv.c >@@ -236,6 +236,8 @@ static void __init xen_pv_smp_prepare_cpus(unsigned >int max_cpus) > xen_raw_printk(m); > panic(m); > } >+ native_pv_lock_init(); >+ > xen_init_lock_cpu(0); > > smp_store_boot_cpu_info(); >diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c >index e8ab80a..1e1462d 100644 >--- a/arch/x86/xen/spinlock.c >+++ b/arch/x86/xen/spinlock.c >@@ -81,8 +81,11 @@ void xen_init_lock_cpu(int cpu) > int irq; > char *name; > >- if (!xen_pvspin) >+ if (!xen_pvspin) { >+ if (cpu == 0) >+ static_branch_disable(&virt_spin_lock_key); This is assuming CPU 0 is the boot cpu. I think you want boot_cpu_data.cpu_index here or whatever is used on xen to identify the BSP reliably. -- Sent from a small device: formatting sux and brevity is inevitable. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |