From: Jeff Garzik <jeff@garzik.org>
To: IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: Flexible SFF interrupt handling
Date: Wed, 28 Nov 2007 08:45:04 -0500 [thread overview]
Message-ID: <474D70E0.4060709@garzik.org> (raw)
This has been bubbling on my brain for a while. I blathered on about
this on IRC to Tejun, but figured I might as well post it here and get
it archived.
In general, I think we should adopt a flexible or "loose" model for
acking interrupts on SFF controllers.
(a) whenever we are in bus-idle (qc == NULL), and get an interrupt, go
ahead and read Status.
(b) if we are expecting an interrupt, and receive one, check Status (or
AltStatus if DMAing).
(c) if condition "(b)" indicates busy, initiate status polling every
250ms until timeout occurs or BSY clears.
(d) if N seconds (4?) elapses without an interrupt, initiate polling.
keep a history of such "fail-over" events, and note each fail-over'd
command's eventual success via polling, success via interrupt, or
timeout. Use that history to decide to switch to 100% polling mode
(i.e. reach conclusion that interrupt delivery is broken, via observation)
That should cover no-interrupts, lost interrupts, early interrupts,
screaming interrupts, insane devices, and of course normal operation.
The model could be summarized as "interrupt as a hint" operation.
Jeff
next reply other threads:[~2007-11-28 13:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-28 13:45 Jeff Garzik [this message]
2007-11-28 14:29 ` Flexible SFF interrupt handling Alan Cox
2007-11-28 16:09 ` Jeff Garzik
2007-11-28 14:33 ` Mark Lord
2007-11-28 15:58 ` Jeff Garzik
2007-11-28 16:48 ` Mark Lord
2007-11-28 17:00 ` Mark Lord
2007-11-30 1:08 ` Tejun Heo
2007-11-30 1:11 ` Tejun Heo
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=474D70E0.4060709@garzik.org \
--to=jeff@garzik.org \
--cc=linux-ide@vger.kernel.org \
/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).