[PATCH v8 3/4] arm64: Add do_softirq_own_stack() and enable irq_stacks

Catalin Marinas catalin.marinas at arm.com
Fri Dec 4 05:47:54 PST 2015


On Fri, Dec 04, 2015 at 01:46:36PM +0000, Catalin Marinas wrote:
> On Fri, Dec 04, 2015 at 11:02:27AM +0000, James Morse wrote:
> > +/*
> > + * do_softirq_own_stack() is called from irq_exit() before __do_softirq()
> > + * re-enables interrupts, at which point we may re-enter el?_irq(). We
> > + * increase irq_count here so that el1_irq() knows that it is already on the
> > + * irq stack.
> > + *
> > + * Called with interrupts disabled, so we don't worry about moving cpu, or
> > + * being interrupted while modifying irq_count.
> > + *
> > + * This function doesn't actually switch stack.
> > + */
> > +void do_softirq_own_stack(void)
> > +{
> > +	int cpu = smp_processor_id();
> > +
> > +	WARN_ON_ONCE(!irqs_disabled());
> > +
> > +	if (on_irq_stack(current_stack_pointer, cpu)) {
> > +		IRQ_COUNT()++;
> > +		__do_softirq();
> > +		IRQ_COUNT()--;
> > +	} else {
> > +		__do_softirq();
> > +	}
> 
> Following your and my reply on the previous series, should we not
> _always_ switch to the irqstack here?

Ah, sorry, I now noticed that this is done in patch 4.

-- 
Catalin



More information about the linux-arm-kernel mailing list