From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate.crashing.org (gate.crashing.org [63.228.1.57]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 43F5AB7BBC for ; Thu, 29 Oct 2009 09:40:24 +1100 (EST) Subject: Re: [PATCH v3] powerpc/ppc64: Use preempt_schedule_irq instead of preempt_schedule From: Benjamin Herrenschmidt To: Valentine In-Reply-To: <4AE89936.6080803@ru.mvista.com> References: <20091019182858.GA10495@ru.mvista.com> <1256601324.2076.49.camel@pasglop> <1256622077.11607.85.camel@pasglop> <4AE89936.6080803@ru.mvista.com> Content-Type: text/plain; charset="UTF-8" Date: Thu, 29 Oct 2009 07:30:44 +1100 Message-ID: <1256761844.26770.2.camel@pasglop> Mime-Version: 1.0 Cc: olof@lixom.net, linuxppc-dev@ozlabs.org, paulus@samba.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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