* [PATCH tip v2] x86/paravirt: Make the virt_spin_lock_key setup after jump_label_init()
@ 2017-10-28 6:06 Dou Liyang
2017-10-30 11:25 ` [tip:locking/core] x86/paravirt: Set up the virt_spin_lock_key after static keys get initialized tip-bot for Dou Liyang
0 siblings, 1 reply; 2+ messages in thread
From: Dou Liyang @ 2017-10-28 6:06 UTC (permalink / raw)
To: linux-kernel, x86, xen-devel
Cc: tglx, mingo, hpa, jgross, boris.ostrovsky, bp, luto, vkuznets,
Dou Liyang
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 native_smp_prepare_cpus(), and set
the value in xen_init_lock_cpu() to make the setup later and avoid the
WARN().
Reported-by: Juergen Gross <jgross@suse.com>
Suggested-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
---
changelog:
v1-->v2: remove the native_pv_lock_init() from xen_pv_smp_prepare_cpus(),
It is redundant, suggested by Juergen.
---
arch/x86/kernel/smpboot.c | 3 ++-
arch/x86/xen/spinlock.c | 6 ++++--
2 files changed, 6 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/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);
return;
+ }
WARN(per_cpu(lock_kicker_irq, cpu) >= 0, "spinlock on CPU%d exists on IRQ%d!\n",
cpu, per_cpu(lock_kicker_irq, cpu));
@@ -130,7 +133,6 @@ void __init xen_init_spinlocks(void)
if (!xen_pvspin) {
printk(KERN_DEBUG "xen: PV spinlocks disabled\n");
- static_branch_disable(&virt_spin_lock_key);
return;
}
printk(KERN_DEBUG "xen: PV spinlocks enabled\n");
--
2.5.5
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip:locking/core] x86/paravirt: Set up the virt_spin_lock_key after static keys get initialized
2017-10-28 6:06 [PATCH tip v2] x86/paravirt: Make the virt_spin_lock_key setup after jump_label_init() Dou Liyang
@ 2017-10-30 11:25 ` tip-bot for Dou Liyang
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Dou Liyang @ 2017-10-30 11:25 UTC (permalink / raw)
To: linux-tip-commits
Cc: mingo, hpa, jgross, torvalds, tglx, linux-kernel, peterz,
douly.fnst
Commit-ID: ca5d376e17072c1b60c3fee66f3be58ef018952d
Gitweb: https://git.kernel.org/tip/ca5d376e17072c1b60c3fee66f3be58ef018952d
Author: Dou Liyang <douly.fnst@cn.fujitsu.com>
AuthorDate: Sat, 28 Oct 2017 14:06:44 +0800
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 30 Oct 2017 09:17:29 +0100
x86/paravirt: Set up the virt_spin_lock_key after static keys get initialized
Commit:
9043442b43b1 ("locking/paravirt: Use new static key for controlling call of virt_spin_lock()")
sets the static virt_spin_lock_key to a value before jump_label_init()
has been called, which will result in a WARN().
Reorder the initialization sequence:
- Move the native_pv_lock_init() into native_smp_prepare_cpus()
- set the value in xen_init_lock_cpu()
to avoid calling into the not yet initialized static keys subsystem.
Suggested-by: Juergen Gross <jgross@suse.com>
Reported-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: boris.ostrovsky@oracle.com
Cc: bp@suse.de
Cc: luto@kernel.org
Cc: vkuznets@redhat.com
Cc: xen-devel@lists.xenproject.org
Link: http://lkml.kernel.org/r/1509170804-3813-1-git-send-email-douly.fnst@cn.fujitsu.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/kernel/smpboot.c | 3 ++-
arch/x86/xen/spinlock.c | 6 ++++--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 361f916..198416d 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1358,6 +1358,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();
@@ -1385,7 +1387,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/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);
return;
+ }
WARN(per_cpu(lock_kicker_irq, cpu) >= 0, "spinlock on CPU%d exists on IRQ%d!\n",
cpu, per_cpu(lock_kicker_irq, cpu));
@@ -130,7 +133,6 @@ void __init xen_init_spinlocks(void)
if (!xen_pvspin) {
printk(KERN_DEBUG "xen: PV spinlocks disabled\n");
- static_branch_disable(&virt_spin_lock_key);
return;
}
printk(KERN_DEBUG "xen: PV spinlocks enabled\n");
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-10-30 11:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-10-28 6:06 [PATCH tip v2] x86/paravirt: Make the virt_spin_lock_key setup after jump_label_init() Dou Liyang
2017-10-30 11:25 ` [tip:locking/core] x86/paravirt: Set up the virt_spin_lock_key after static keys get initialized tip-bot for Dou Liyang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.