On Fri, Oct 04, 2013 at 03:51:31PM -0400, Nicolas Pitre wrote: > On Wed, 2 Oct 2013, Dave Martin wrote: > > > On Tue, Oct 01, 2013 at 08:17:04PM +0400, Vyacheslav Tyrtov wrote: > > > +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 > > > > + arch_spin_lock(&exynos_lock); > > to create the equivalent of a arch_spin_lock_irq(). And the reason is: > > /* > * We can't use regular spinlocks. In the switcher case, it is possible > * for an outbound CPU to call power_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. > 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 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html