[PATCH] [RFC/RFT] ARM: shmobile: emev2: Add CPU hotplug ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When doing s2ram, emev2/kzm9d crashes during system suspend with

    CPU1: smp_ops.cpu_die() returned, trying to resuscitate
    Unable to handle kernel NULL pointer dereference at virtual address 00000104

As of commit d62242d7f63d6c87 ("ARM: shmobile: Remove partial CPU
Hotplug from EMEV2"), there's no longer an smp_ops.cpu_die() callback.

Add standard SCU-based hotplug callbacks like on other Cortex-A9 SoCs to
fix the crash during suspend.

Signed-off-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx>
---
This fixes the crash during the suspend phase, but I have no idea if
resume actually  works. I didn't manage to resume the machine after
enabling wake-up on ttyS0 (remote access only).

Can anyone with physical access to emev2/kzm9d please check if pressing
a button resumes the system?

Thanks!
---
 arch/arm/mach-shmobile/smp-emev2.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm/mach-shmobile/smp-emev2.c b/arch/arm/mach-shmobile/smp-emev2.c
index 3a732199cf5e98c0..e6e8f2298a6a4786 100644
--- a/arch/arm/mach-shmobile/smp-emev2.c
+++ b/arch/arm/mach-shmobile/smp-emev2.c
@@ -53,4 +53,9 @@ static void __init emev2_smp_prepare_cpus(unsigned int max_cpus)
 const struct smp_operations emev2_smp_ops __initconst = {
 	.smp_prepare_cpus	= emev2_smp_prepare_cpus,
 	.smp_boot_secondary	= emev2_boot_secondary,
+#ifdef CONFIG_HOTPLUG_CPU
+	.cpu_can_disable	= shmobile_smp_cpu_can_disable,
+	.cpu_die		= shmobile_smp_scu_cpu_die,
+	.cpu_kill		= shmobile_smp_scu_cpu_kill,
+#endif
 };
-- 
1.9.1




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux