[PATCH v3] powerpc/ppc64: Use preempt_schedule_irq instead of preempt_schedule
Benjamin Herrenschmidt
benh at kernel.crashing.org
Thu Oct 29 07:30:44 EST 2009
On Wed, 2009-10-28 at 22:19 +0300, Valentine wrote:
> I'm just not sure that we need to clear HARDIRQEN here, since we don't
> really hard-disable the the interrupts.
We do, or rather, we come in with the interrupts hard disabled, no ?
Ben.
> Thanks,
> Val.
>
> > + TRACE_DISABLE_INTS
> > +
> > + /* Call the scheduler with soft IRQs off */
> > +1: bl .preempt_schedule_irq
> > +
> > + /* Hard-disable interrupts again (and update PACA) */
> > #ifdef CONFIG_PPC_BOOK3E
> > - wrteei 1
> > - bl .preempt_schedule
> > wrteei 0
> > #else
> > - ori r10,r10,MSR_EE
> > - mtmsrd r10,1 /* reenable interrupts */
> > - bl .preempt_schedule
> > mfmsr r10
> > - clrrdi r9,r1,THREAD_SHIFT
> > - rldicl r10,r10,48,1 /* disable interrupts again */
> > + rldicl r10,r10,48,1
> > rotldi r10,r10,16
> > mtmsrd r10,1
> > #endif /* CONFIG_PPC_BOOK3E */
> > + li r0,0
> > + stb r0,PACAHARDIRQEN(r13)
> > +
> > + /* Re-test flags and eventually loop */
> > + clrrdi r9,r1,THREAD_SHIFT
> > ld r4,TI_FLAGS(r9)
> > andi. r0,r4,_TIF_NEED_RESCHED
> > bne 1b
> > b restore
> >
> > user_work:
> > -#endif
> > +#endif /* CONFIG_PREEMPT */
> > +
> > /* Enable interrupts */
> > #ifdef CONFIG_PPC_BOOK3E
> > wrteei 1
More information about the Linuxppc-dev
mailing list