linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).