* [PATCH v2] x86/xen: don't unbind uninitialized lock_kicker_irq
@ 2020-11-07 1:11 Brian Masney
2020-11-09 5:34 ` Jürgen Groß
0 siblings, 1 reply; 3+ messages in thread
From: Brian Masney @ 2020-11-07 1:11 UTC (permalink / raw)
To: boris.ostrovsky, jgross, sstabellini
Cc: tglx, mingo, bp, x86, hpa, xen-devel, linux-kernel, dustymabe
When booting a hyperthreaded system with the kernel parameter
'mitigations=auto,nosmt', the following warning occurs:
WARNING: CPU: 0 PID: 1 at drivers/xen/events/events_base.c:1112 unbind_from_irqhandler+0x4e/0x60
...
Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
...
Call Trace:
xen_uninit_lock_cpu+0x28/0x62
xen_hvm_cpu_die+0x21/0x30
takedown_cpu+0x9c/0xe0
? trace_suspend_resume+0x60/0x60
cpuhp_invoke_callback+0x9a/0x530
_cpu_up+0x11a/0x130
cpu_up+0x7e/0xc0
bringup_nonboot_cpus+0x48/0x50
smp_init+0x26/0x79
kernel_init_freeable+0xea/0x229
? rest_init+0xaa/0xaa
kernel_init+0xa/0x106
ret_from_fork+0x35/0x40
The secondary CPUs are not activated with the nosmt mitigations and only
the primary thread on each CPU core is used. In this situation,
xen_hvm_smp_prepare_cpus(), and more importantly xen_init_lock_cpu(), is
not called, so the lock_kicker_irq is not initialized for the secondary
CPUs. Let's fix this by exiting early in xen_uninit_lock_cpu() if the
irq is not set to avoid the warning from above for each secondary CPU.
Signed-off-by: Brian Masney <bmasney@redhat.com>
---
Changes since v1:
- Remove duplicate per_cpu() call and pass in irq variable.
- Changed subject from 'x86/xen: fix warning when running with nosmt
mitigations'
- Shorten code comment
arch/x86/xen/spinlock.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/arch/x86/xen/spinlock.c b/arch/x86/xen/spinlock.c
index 799f4eba0a62..043c73dfd2c9 100644
--- a/arch/x86/xen/spinlock.c
+++ b/arch/x86/xen/spinlock.c
@@ -93,10 +93,20 @@ void xen_init_lock_cpu(int cpu)
void xen_uninit_lock_cpu(int cpu)
{
+ int irq;
+
if (!xen_pvspin)
return;
- unbind_from_irqhandler(per_cpu(lock_kicker_irq, cpu), NULL);
+ /*
+ * When booting the kernel with 'mitigations=auto,nosmt', the secondary
+ * CPUs are not activated, and lock_kicker_irq is not initialized.
+ */
+ irq = per_cpu(lock_kicker_irq, cpu);
+ if (irq == -1)
+ return;
+
+ unbind_from_irqhandler(irq, NULL);
per_cpu(lock_kicker_irq, cpu) = -1;
kfree(per_cpu(irq_name, cpu));
per_cpu(irq_name, cpu) = NULL;
--
2.26.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] x86/xen: don't unbind uninitialized lock_kicker_irq
2020-11-07 1:11 [PATCH v2] x86/xen: don't unbind uninitialized lock_kicker_irq Brian Masney
@ 2020-11-09 5:34 ` Jürgen Groß
2020-11-09 21:59 ` boris.ostrovsky
0 siblings, 1 reply; 3+ messages in thread
From: Jürgen Groß @ 2020-11-09 5:34 UTC (permalink / raw)
To: Brian Masney, boris.ostrovsky, sstabellini
Cc: tglx, mingo, bp, x86, hpa, xen-devel, linux-kernel, dustymabe
[-- Attachment #1.1.1: Type: text/plain, Size: 1392 bytes --]
On 07.11.20 02:11, Brian Masney wrote:
> When booting a hyperthreaded system with the kernel parameter
> 'mitigations=auto,nosmt', the following warning occurs:
>
> WARNING: CPU: 0 PID: 1 at drivers/xen/events/events_base.c:1112 unbind_from_irqhandler+0x4e/0x60
> ...
> Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
> ...
> Call Trace:
> xen_uninit_lock_cpu+0x28/0x62
> xen_hvm_cpu_die+0x21/0x30
> takedown_cpu+0x9c/0xe0
> ? trace_suspend_resume+0x60/0x60
> cpuhp_invoke_callback+0x9a/0x530
> _cpu_up+0x11a/0x130
> cpu_up+0x7e/0xc0
> bringup_nonboot_cpus+0x48/0x50
> smp_init+0x26/0x79
> kernel_init_freeable+0xea/0x229
> ? rest_init+0xaa/0xaa
> kernel_init+0xa/0x106
> ret_from_fork+0x35/0x40
>
> The secondary CPUs are not activated with the nosmt mitigations and only
> the primary thread on each CPU core is used. In this situation,
> xen_hvm_smp_prepare_cpus(), and more importantly xen_init_lock_cpu(), is
> not called, so the lock_kicker_irq is not initialized for the secondary
> CPUs. Let's fix this by exiting early in xen_uninit_lock_cpu() if the
> irq is not set to avoid the warning from above for each secondary CPU.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Juergen
[-- Attachment #1.1.2: OpenPGP_0xB0DE9DD628BF132F.asc --]
[-- Type: application/pgp-keys, Size: 3135 bytes --]
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 495 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] x86/xen: don't unbind uninitialized lock_kicker_irq
2020-11-09 5:34 ` Jürgen Groß
@ 2020-11-09 21:59 ` boris.ostrovsky
0 siblings, 0 replies; 3+ messages in thread
From: boris.ostrovsky @ 2020-11-09 21:59 UTC (permalink / raw)
To: Jürgen Groß, Brian Masney, sstabellini
Cc: tglx, mingo, bp, x86, hpa, xen-devel, linux-kernel, dustymabe
On 11/9/20 12:34 AM, Jürgen Groß wrote:
> On 07.11.20 02:11, Brian Masney wrote:
>> When booting a hyperthreaded system with the kernel parameter
>> 'mitigations=auto,nosmt', the following warning occurs:
>>
>> WARNING: CPU: 0 PID: 1 at drivers/xen/events/events_base.c:1112 unbind_from_irqhandler+0x4e/0x60
>> ...
>> Hardware name: Xen HVM domU, BIOS 4.2.amazon 08/24/2006
>> ...
>> Call Trace:
>> xen_uninit_lock_cpu+0x28/0x62
>> xen_hvm_cpu_die+0x21/0x30
>> takedown_cpu+0x9c/0xe0
>> ? trace_suspend_resume+0x60/0x60
>> cpuhp_invoke_callback+0x9a/0x530
>> _cpu_up+0x11a/0x130
>> cpu_up+0x7e/0xc0
>> bringup_nonboot_cpus+0x48/0x50
>> smp_init+0x26/0x79
>> kernel_init_freeable+0xea/0x229
>> ? rest_init+0xaa/0xaa
>> kernel_init+0xa/0x106
>> ret_from_fork+0x35/0x40
>>
>> The secondary CPUs are not activated with the nosmt mitigations and only
>> the primary thread on each CPU core is used. In this situation,
>> xen_hvm_smp_prepare_cpus(), and more importantly xen_init_lock_cpu(), is
>> not called, so the lock_kicker_irq is not initialized for the secondary
>> CPUs. Let's fix this by exiting early in xen_uninit_lock_cpu() if the
>> irq is not set to avoid the warning from above for each secondary CPU.
>>
>> Signed-off-by: Brian Masney <bmasney@redhat.com>
>
> Reviewed-by: Juergen Gross <jgross@suse.com>
Applied to for-linus-5.10b.
-boris
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-11-09 21:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-07 1:11 [PATCH v2] x86/xen: don't unbind uninitialized lock_kicker_irq Brian Masney
2020-11-09 5:34 ` Jürgen Groß
2020-11-09 21:59 ` boris.ostrovsky
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).