On Mon, 2016-08-01 at 18:07 +1000, Nicholas Piggin wrote: > > +static inline unsigned long soft_irq_set_level(int value) > > +{ > > + unsigned long flags, zero; > > + > > + asm volatile( > > + "li %1,%3; lbz %0,%2(13); stb %1,%2(13)" > > + : "=r" (flags), "=&r" (zero) > > + : "i" (offsetof(struct paca_struct, soft_enabled)),\ > > + "i" (value) > > + : "memory"); > > + > > + return flags; > > +}
I would add a WARN_ON (possibly under control of CONFIG_TRACE_IRQFLAGS(*) to verify we only ever use this to make interrupts "less enabled". (*) Or check if distros use CONFIG_TRACE_IRQFLAGS these days, then create a new CONFIG_DEBUG_IRQ or something like that, and also move the other use of CONFIG_TRACE_IRQFLAGS in local_irq_restore that checks the msr as we really don't want that in production kernels. Cheers, Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev