Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Mon, Apr 09, 2001 at 09:48:02PM +0400, [EMAIL PROTECTED] wrote: > Hello! > > > Btw, you don't schedule the ksoftirqd thread if do_softirq() returns > > from the 'if(in_interrupt())' check. > > ksoftirqd will not be switched to before the first schedule > or ret form syscall, when softirqs

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread kuznet
Hello! > Btw, you don't schedule the ksoftirqd thread if do_softirq() returns > from the 'if(in_interrupt())' check. ksoftirqd will not be switched to before the first schedule or ret form syscall, when softirqs will be processed in any case. So, wake up in this case would be mistake. > I

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Mon, Apr 09, 2001 at 05:26:27PM +0200, Manfred Spraul wrote: > The return path to user space checks for pending softirqs. A delay of And it breaks the loop too if new softirq events become pending again in background. > 1/HZ is only possible if the cpu loops in kernel space without returning

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Manfred Spraul
Andrea Arcangeli wrote: > > your cpu_is_idle will return 0 in the need_resched != 0 check even if the cpu > is idle (because of the -1 trick for avoiding the SMP-IPI to notify the cpu). > Fixed. > The issue you are addressing is quite londstanding and it is not only related > to the loop with

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Sun, Apr 08, 2001 at 11:35:36PM +0200, Manfred Spraul wrote: > I've attached a new patch: > > * cpu_is_idle() moved to > * function uninlined due to header dependencies > * cpu_is_idle() doesn't call do_softirq directly, instead the caller > returns to schedule() > * cpu_is_idle() exported

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Studierende der Universitaet des Saarlandes
> > I'd prefer to inline cpu_is_idle(), but optimizing the idle > >code path is probably not that important ;-) > > Sure it is, in one way: how fast can you get back to work? > (not OK to take a millisecond getting out of the idle loop) 2 short function calls instead of 2

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Albert D. Cahalan
> I'd prefer to inline cpu_is_idle(), but optimizing the idle > code path is probably not that important ;-) Sure it is, in one way: how fast can you get back to work? (not OK to take a millisecond getting out of the idle loop) - To unsubscribe from this list: send the line "unsubscribe

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Albert D. Cahalan
I'd prefer to inline cpu_is_idle(), but optimizing the idle code path is probably not that important ;-) Sure it is, in one way: how fast can you get back to work? (not OK to take a millisecond getting out of the idle loop) - To unsubscribe from this list: send the line "unsubscribe

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Studierende der Universitaet des Saarlandes
I'd prefer to inline cpu_is_idle(), but optimizing the idle code path is probably not that important ;-) Sure it is, in one way: how fast can you get back to work? (not OK to take a millisecond getting out of the idle loop) 2 short function calls instead of 2 "if(current-need_resched)"

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Sun, Apr 08, 2001 at 11:35:36PM +0200, Manfred Spraul wrote: I've attached a new patch: * cpu_is_idle() moved to linux/pm.h * function uninlined due to header dependencies * cpu_is_idle() doesn't call do_softirq directly, instead the caller returns to schedule() * cpu_is_idle()

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Manfred Spraul
Andrea Arcangeli wrote: your cpu_is_idle will return 0 in the need_resched != 0 check even if the cpu is idle (because of the -1 trick for avoiding the SMP-IPI to notify the cpu). Fixed. The issue you are addressing is quite londstanding and it is not only related to the loop with an idle

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Mon, Apr 09, 2001 at 05:26:27PM +0200, Manfred Spraul wrote: The return path to user space checks for pending softirqs. A delay of And it breaks the loop too if new softirq events become pending again in background. 1/HZ is only possible if the cpu loops in kernel space without returning

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread kuznet
Hello! Btw, you don't schedule the ksoftirqd thread if do_softirq() returns from the 'if(in_interrupt())' check. ksoftirqd will not be switched to before the first schedule or ret form syscall, when softirqs will be processed in any case. So, wake up in this case would be mistake. I assume

Re: [PATCH] Re: softirq buggy

2001-04-09 Thread Andrea Arcangeli
On Mon, Apr 09, 2001 at 09:48:02PM +0400, [EMAIL PROTECTED] wrote: Hello! Btw, you don't schedule the ksoftirqd thread if do_softirq() returns from the 'if(in_interrupt())' check. ksoftirqd will not be switched to before the first schedule or ret form syscall, when softirqs will be

[PATCH] Re: softirq buggy

2001-04-08 Thread Manfred Spraul
I've attached a new patch: * cpu_is_idle() moved to * function uninlined due to header dependencies * cpu_is_idle() doesn't call do_softirq directly, instead the caller returns to schedule() * cpu_is_idle() exported for modules. * docu updated. I'd prefer to inline cpu_is_idle(), but

[PATCH] Re: softirq buggy

2001-04-08 Thread Manfred Spraul
I've attached a new patch: * cpu_is_idle() moved to linux/pm.h * function uninlined due to header dependencies * cpu_is_idle() doesn't call do_softirq directly, instead the caller returns to schedule() * cpu_is_idle() exported for modules. * docu updated. I'd prefer to inline cpu_is_idle(), but