Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch
From: Andrew Morton (akpm_AT_osdl.org)
Date: Tue Jul 13 2004 - 21:48:29 EEST


Andrea Arcangeli <andrea_AT_suse.de> wrote:
>
> On Mon, Jul 12, 2004 at 05:08:44PM -0700, Andrew Morton wrote:
> > of code then it's pretty obvious what's happening. If the trace is due to
> > a long irq-off time then it will point up into the offending
> > local_irq_enable().
>
> schedule should be called with irq enabled, and I noticed here it's not
> (jnz work_resched is executed with irq off so there is a window for
> schedule to be called with irq off):
>
> Index: linux-2.5/arch/i386/kernel/entry.S
> ===================================================================
> RCS file: /home/andrea/crypto/cvs/linux-2.5/arch/i386/kernel/entry.S,v
> retrieving revision 1.86
> diff -u -p -r1.86 entry.S
> --- linux-2.5/arch/i386/kernel/entry.S 23 May 2004 05:03:15 -0000 1.86
> +++ linux-2.5/arch/i386/kernel/entry.S 13 Jul 2004 04:21:55 -0000
> @@ -302,6 +310,7 @@ work_pending:
> testb $_TIF_NEED_RESCHED, %cl
> jz work_notifysig
> work_resched:
> + sti
> call schedule
> cli # make sure we don't miss an interrupt
> # setting need_resched or sigpending

sys_sched_yield() also calls schedule() with local interrupts disabled.
It's a bit grubby, but saves a few cycles. Nick and Ingo prefer it that way.


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Wed Jul 14 2004 - 20:53:19 EEST