Subject: Re: [PATCH v3] powerpc/ppc64: Use preempt_schedule_irq instead of preempt_schedule

From: Benjamin Herrenschmidt <[email-masked]>
Date: Thu, 29 Oct 2009 07:30:44 +1100

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