Messages in this thread | | | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: [PATCH] Correctly prevent IDE timer expiry function to run if request was already handled | Date | Fri, 6 Apr 2007 23:35:26 +0200 |
| |
On Friday 06 April 2007, Sergei Shtylyov wrote: > Hello. > > Suleiman Souhlal wrote:
> > The reason the timer could have been active at that point, before applying > > this patch, is that we try to dispatch a new request after handling one. > > The new request will then have its own expiry timer, along with a handler. > > Since before this patch ide_timer_expiry() only looked at whether or not > > a handler was present, it would incorrectly think the request had not been > > handled already, and incorrectly tried to restart the timer. > > Hm, I'm still not sure why this happens at all, probably need to try > reproducing it (unless you post a stack trace :-).
not a stack trace but should explain the issue a bit:
... ide_timer_expiry -> just before taking ide_lock IRQ happens ... ide_intr -> completes the command and queues the next one ... ide_timer_expiry (resumed) -> takes ide_lock -> the bug happens ;)
should be even easier to trigger it on SMP since ide_timer_expiry may be running at the same time as ide_intr
Bart - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |