]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
powerpc: hard disable irqs in smp_send_stop loop
authorNicholas Piggin <npiggin@gmail.com>
Wed, 5 Sep 2018 16:17:00 +0000 (18:17 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Thu, 6 Sep 2018 07:24:56 +0000 (09:24 +0200)
BugLink: http://bugs.launchpad.net/bugs/1790636
The hard lockup watchdog can fire under local_irq_disable
on platforms with irq soft masking.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
(cherry picked from commit 855bfe0de1a05a01f89975ea8ba9f5521fb0f567)
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Acked-by: Colin Ian King <colin.king@canonical.com>
Acked-by: Khalid Elmously <khalid.elmously@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
arch/powerpc/kernel/smp.c

index c190d6843392a5be65addc2296321935dbf7e95b..7ed7d0c84c0d4156377c9ead097f084979232e2e 100644 (file)
@@ -570,9 +570,10 @@ static void stop_this_cpu(void *dummy)
        /* Remove this CPU */
        set_cpu_online(smp_processor_id(), false);
 
-       local_irq_disable();
+       hard_irq_disable();
+       spin_begin();
        while (1)
-               ;
+               spin_cpu_relax();
 }
 
 #ifdef CONFIG_NMI_IPI