Messages in this thread | | | Date | Thu, 9 Dec 1999 17:57:30 +0100 (CET) | From | Ingo Molnar <> | Subject | Re: timer_bh behaviour incorrect for 2.2.13? |
| |
On Thu, 9 Dec 1999, Andrea Arcangeli wrote:
> >could you try making run_bottom_halves do something like this: > > > > while ((active = get_active_bhs()) { > > clear_active_bhs(active); > > ...
++ __cli();
> > } > > > >does this solve your problem? > > That's the easy part and I just did it yesterday but I didn't posted it
well i guess we agree that the hard part is to find the problem that causes the missed bh :-) fixing it sufficiently is a different matter.
> because it's not enough. You have also to clear irqs while reading the > active_bhs and to take them cleared until you return from the irq (this in > UP and UP is the simple case). > > In SMP you also need a spinlock in the middle of do_bottom_half().
(William isnt using SMP and i was suggesting a quick hack for him to try out.)
> I was doing the complete patch now.
you have missed the _real_ reason why the above 'bug' was there. It's a feature and prevents denial of service attacks. Especially wrt. networking it's very easy to flood a box with bh traffic, and if we are not careful then slower systems (routers) can effectively be locked up just by bombarding them with small/tricky packets. So we were always intentionally trying to guarantee that bhs do not get rerun infinitely.
-- mingo
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |