[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200704062335.26560.bzolnier@gmail.com>
Date: Fri, 6 Apr 2007 23:35:26 +0200
From: Bartlomiej Zolnierkiewicz <bzolnier@...il.com>
To: Sergei Shtylyov <sshtylyov@...mvista.com>
Cc: Suleiman Souhlal <ssouhlal@...ebsd.org>, linux-ide@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Correctly prevent IDE timer expiry function to run if request was already handled
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists