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

Reply via email to