ARM: EXYNOS: add Exynos Dual Cluster Support
Quoted 16 lines · Nicolas Pitre
Quoted 7 lines · Dave Martin
Review
Quoted 4 lines · Vyacheslav Tyrtov
(quoted diff) +4
-0+static int exynos_power_up(unsigned int cpu, unsigned int cluster) +{ + int ret; + local_irq_disable();Should there be a
local_fiq_disable()here also?No. In fact this is paired with
Quoted 1 line
Quoted 1 line
+
arch_spin_lock(&exynos_lock);to create the equivalent of a
arch_spin_lock_irq(). And the reason is:
Quoted 8 lines
/*
* We can't use regular spinlocks. In the switcher case, it is possible
* for an outbound CPU to callpower_down()after its inbound counterpart
* is already live using the same logical CPU number which trips lockdep
* debugging.
*/Otherwise we simply would have used
spin_lock_irq().
Duh, of course. Looks like I suffered temporary brain failure there.
Quoted 1 line
No FIQs are supposed to ever race with this code.
There is an anomaly though: FIQ and external abort don't seem to get explicitly masked anywhere, either on the suspend or powerdown paths. Sometimes either or both remains unmasked (I tried some trace in the TC2 MCPM backend to confirm this.)
Looks like a possible omission in the arch/arm/ suspend and shutdown code, rather than a problem specific to MCPM.
Shouldn't be an issue for this series, though.
Cheers
---Dave
Quoted 10 lines · Dave Martin
Quoted 1 line · Nicolas Pitre
No FIQs are supposed to ever race with this code.
There is an anomaly though: FIQ and external abort don't seem to get explicitly masked anywhere, either on the suspend or powerdown paths. Sometimes either or both remains unmasked (I tried some trace in the TC2 MCPM backend to confirm this.)
Looks like a possible omission in the
arch/arm/suspend and shutdown code, rather than a problem specific to MCPM.
Possibly, yes.
Feel free to post a patch.
Nicolas