From: Tejun Heo <htejun@gmail.com>
To: Phillip Susi <psusi@cfl.rr.com>
Cc: Pavel Machek <pavel@ucw.cz>, Alan Cox <alan@lxorguk.ukuu.org.uk>,
noah <noah123@gmail.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-ide@vger.kernel.org
Subject: Re: Possibly SATA related freeze killed networking and RAID
Date: Sat, 01 Dec 2007 08:56:44 +0900 [thread overview]
Message-ID: <4750A33C.4080509@gmail.com> (raw)
In-Reply-To: <47505A63.8070507@cfl.rr.com>
Phillip Susi wrote:
> Tejun Heo wrote:
>> Because SFF ATA controller don't have IRQ pending bit. You don't know
>> whether IRQ is raised or not. Plus, accessing the status register which
>> clears pending IRQ can be very slow on PATA machines. It has to go
>> through the PCI and ATA bus and come back. So, unconditionally trying
>> to clear IRQ by accessing Status can incur noticeable overhead if the
>> IRQ is shared with devices which raise a lot of IRQs.
>
> There HAS to be a way to determine if that device generated the
> interrupt, or the interrupt can not be shared. Since the kernel said
> nobody cared about the interrupt, that indicates that the sata driver
> checked the status register and realized the sata chip didn't generate
> the interrupt, and returned to the kernel letting it know that the
> interrupt was not for it.
Surprise, surprise. There's no way to tell whether the controller
raised interrupt or not if command is not in progress. As I said
before, there's no IRQ pending bit. While processing commands, you can
tell by looking at other status registers but when there's nothing in
flight and the controller determines it's a good time to raise a
spurious interrupt, there's no way you can tell. That dang SFF
interface is like 15+ years old.
But we can still make things pretty robust. We're working on it.
Thanks.
--
tejun
next prev parent reply other threads:[~2007-11-30 23:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-20 19:09 Possibly SATA related freeze killed networking and RAID noah
2007-11-20 22:05 ` Alan Cox
2007-11-20 22:16 ` noah
2007-11-21 0:45 ` Alan Cox
2007-11-21 19:06 ` noah
2007-12-10 12:33 ` noah
2007-11-26 12:06 ` Pavel Machek
2007-11-28 1:55 ` Tejun Heo
2007-11-29 22:16 ` Phillip Susi
2007-11-30 0:02 ` Tejun Heo
2007-11-30 18:45 ` Phillip Susi
2007-11-30 23:56 ` Tejun Heo [this message]
2007-12-03 17:15 ` Phillip Susi
2007-12-04 1:32 ` Tejun Heo
2007-11-30 13:13 ` Alan Cox
2007-11-26 7:55 ` Pavel Machek
2007-11-30 15:00 ` Mark Lord
2007-11-30 20:25 ` Pavel Machek
[not found] <fa.hz1AWBbuhaxCXiVbvWdM1r83meE@ifi.uio.no>
[not found] ` <fa.fUEfthqYoWrlov4j7OjtVSgx42g@ifi.uio.no>
[not found] ` <fa.qGibmi9xfm4JHJhvn0KM4rdFM+M@ifi.uio.no>
[not found] ` <fa.YcQmwdppCKfJhxSMgOb0RJPmHg8@ifi.uio.no>
[not found] ` <fa.0muxGr+d7CjnQ/J5GaB+TSqouuU@ifi.uio.no>
2007-11-30 0:03 ` Robert Hancock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4750A33C.4080509@gmail.com \
--to=htejun@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=noah123@gmail.com \
--cc=pavel@ucw.cz \
--cc=psusi@cfl.rr.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).