Re: [PATCH v5 2/5] powerpc/85xx: add HOTPLUG_CPU support
flat view
From: Scott Wood <hidden>
Date: 2012-06-01 21:27:38
Also in:
lkml
On 05/11/2012 06:53 AM, Zhao Chenhui wrote: \> +#if defined(CONFIG_FSL_BOOKE) || defined(CONFIG_6xx)
+extern void __flush_disable_L1(void); +#endif
Prototypes aren't normally guarded by ifdefs.
quoted hunk ↗ jump to hunk
+static void __cpuinit smp_85xx_mach_cpu_die(void) +{ + unsigned int cpu = smp_processor_id(); + u32 tmp; + + local_irq_disable(); + idle_task_exit(); + generic_set_cpu_dead(cpu); + mb(); + + mtspr(SPRN_TCR, 0); + + __flush_disable_L1(); + tmp = (mfspr(SPRN_HID0) & ~(HID0_DOZE|HID0_SLEEP)) | HID0_NAP; + mtspr(SPRN_HID0, tmp); + + /* Enter NAP mode. */ + tmp = mfmsr(); + tmp |= MSR_WE; + mb(); + mtmsr(tmp); + isync();
Need isync after writing to HID0.
quoted hunk ↗ jump to hunk
+ /* + * We don't set the BPTR register here upon it points + * to the boot page properly. + */ + mpic_reset_core(hw_cpu);
That comment's wording is hard to follow -- maybe s/upon it points/since it already points/
quoted hunk ↗ jump to hunk
+ /* wait until core is ready... */ + if (!spin_event_timeout(in_be32(&spin_table->addr_l) == 1, + 10000, 100)) { + pr_err("%s: timeout waiting for core %d to reset\n", + __func__, hw_cpu); + ret = -ENOENT; + goto out; + }
We need to fix U-Boot to write addr_l last (with an msync beforehand).
-#ifdef CONFIG_KEXEC +#if defined(CONFIG_KEXEC) || defined(CONFIG_HOTPLUG_CPU)
Let's not grow lists like this. Is there any harm in building it unconditionally? -Scott