arm64: Improve parking of stopped CPUs
authorJayachandran C <jnair@caviumnetworks.com>
Mon, 17 Jun 2019 20:35:18 +0000 (23:35 +0300)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 25 Jun 2019 15:42:09 +0000 (16:42 +0100)
The current code puts the stopped cpus in an 'yield' instruction loop.
Using a busy loop here is unnecessary, we can use the cpu_park_loop()
function here to do a wfi/wfe.

Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/smp.c

index 83cdb0a..932461d 100644 (file)
@@ -850,9 +850,7 @@ static void ipi_cpu_stop(unsigned int cpu)
 
        local_daif_mask();
        sdei_mask_local_cpu();
-
-       while (1)
-               cpu_relax();
+       cpu_park_loop();
 }
 
 #ifdef CONFIG_KEXEC_CORE