From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <tj@kernel.org>
Cc: mingo@elte.hu, tglx@linutronix.de, bphilips@suse.de,
yinghai@kernel.org, akpm@linux-foundation.org,
torvalds@linux-foundation.org, linux-kernel@vger.kernel.org,
linux-ide@vger.kernel.org, stern@rowland.harvard.edu,
gregkh@suse.de, khali@linux-fr.org
Subject: Re: [PATCH 11/12] libata: use IRQ expecting
Date: Thu, 24 Jun 2010 20:22:25 -0400 [thread overview]
Message-ID: <4C23F6C1.7070603@garzik.org> (raw)
In-Reply-To: <1276443098-20653-12-git-send-email-tj@kernel.org>
On 06/13/2010 11:31 AM, Tejun Heo wrote:
> Thanks to its age, ATA is very susceptible to IRQ delivery problems in
> both directions - lost and spurious interrupts. In traditional PATA,
> the IRQ line is ultimately out of the controller and driver's control.
> Even relatively new SATA isn't free from these issues. Many
> controllers still emulate the traditional IDE interface which doesn't
> have reliable way to indicate interrupt pending state and there also
> is an issue regarding the interpretation of nIEN on both sides of the
> cable.
>
> Most of these problems can be worked around by using the new IRQ
> expecting mechanism without adding noticeable overhead. In ATA,
> almost all operations are initiated by the host and the controller
> signals progress or completion using IRQ. IRQ expecting can easily be
> added in libata core and applied to all libata drivers.
>
> Signed-off-by: Tejun Heo<tj@kernel.org>
> ---
> drivers/ata/libata-core.c | 15 +++++++++++++--
> drivers/ata/libata-eh.c | 4 +++-
> drivers/ata/libata-sff.c | 37 +++++++++++++++++++------------------
> include/linux/libata.h | 2 ++
> 4 files changed, 37 insertions(+), 21 deletions(-)
>
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index ddf8e48..9a0aaa0 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -4972,6 +4972,8 @@ void ata_qc_complete(struct ata_queued_cmd *qc)
> {
> struct ata_port *ap = qc->ap;
>
> + unexpect_irq(ap->irq_expect, false);
> +
> /* XXX: New EH and old EH use different mechanisms to
> * synchronize EH with regular execution path.
> *
Unconditional use of unexpect_irq() here seems incorrect for some cases,
such as sata_mv's use, where ata_qc_complete() is called multiple times
rather than a singleton ata_qc_complete_multiple() call.
Jeff
next prev parent reply other threads:[~2010-06-25 0:22 UTC|newest]
Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-13 15:31 [PATCHSET] irq: better lost/spurious irq handling Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 01/12] irq: cleanup irqfixup Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 02/12] irq: make spurious poll timer per desc Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-15 5:10 ` Konrad Rzeszutek Wilk
2010-06-15 16:34 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 03/12] irq: use desc->poll_timer for irqpoll Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 04/12] irq: kill IRQF_IRQPOLL Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 05/12] irq: misc preparations for further changes Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 06/12] irq: implement irq_schedule_poll() Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-15 17:40 ` Jonathan Corbet
2010-06-15 17:51 ` Tejun Heo
2010-06-21 13:26 ` [PATCH 06/12 UPDATED] " Tejun Heo
2010-06-13 15:31 ` [PATCH 07/12] irq: improve spurious IRQ handling Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 08/12] irq: implement IRQ watching Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 09/12] irq: implement IRQ expecting Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-14 9:21 ` Jiri Slaby
2010-06-14 9:43 ` Tejun Heo
2010-06-14 9:46 ` Tejun Heo
2010-06-17 3:48 ` Arjan van de Ven
2010-06-17 8:18 ` Tejun Heo
2010-06-17 11:12 ` Thomas Gleixner
2010-06-17 11:23 ` Tejun Heo
2010-06-17 11:43 ` Alan Cox
2010-06-17 15:54 ` Tejun Heo
2010-06-17 16:02 ` Arjan van de Ven
2010-06-17 16:47 ` Tejun Heo
2010-06-18 6:26 ` Arjan van de Ven
2010-06-18 9:23 ` Tejun Heo
2010-06-18 9:45 ` Thomas Gleixner
2010-06-19 8:35 ` Andi Kleen
2010-06-19 8:42 ` Tejun Heo
2010-06-19 9:00 ` Andi Kleen
2010-06-19 9:03 ` Tejun Heo
2010-06-19 14:54 ` Arjan van de Ven
2010-06-19 19:49 ` Andi Kleen
2010-06-19 20:07 ` Arjan van de Ven
2010-06-13 15:31 ` [PATCH 10/12] irq: add comment about overall design of lost/spurious IRQ handling Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 11/12] libata: use IRQ expecting Tejun Heo
2010-06-21 13:52 ` Tejun Heo
2010-06-25 0:22 ` Jeff Garzik [this message]
2010-06-25 7:44 ` Tejun Heo
2010-06-25 9:48 ` Jeff Garzik
2010-06-25 9:51 ` Tejun Heo
2010-06-25 13:02 ` [PATCH 1/2 #upstream] sata_fsl,mv,nv: prepare for NCQ command completion update Tejun Heo
2010-06-25 13:03 ` [PATCH 2/2 #upstream] libata: always use ata_qc_complete_multiple() for NCQ command completions Tejun Heo
2010-08-17 22:03 ` Jeff Garzik
2010-08-01 23:47 ` [PATCH 1/2 #upstream] sata_fsl,mv,nv: prepare for NCQ command completion update Jeff Garzik
2010-08-02 7:18 ` Tejun Heo
2010-08-04 4:22 ` Jeff Garzik
2010-06-26 3:45 ` [PATCH 11/12] libata: use IRQ expecting Jeff Garzik
2010-06-26 3:52 ` Jeff Garzik
2010-06-26 8:31 ` Tejun Heo
2010-06-26 9:16 ` Jeff Garzik
2010-06-26 9:44 ` Tejun Heo
2010-07-02 14:41 ` Tejun Heo
2010-07-02 14:53 ` Tejun Heo
2010-07-10 10:06 ` Tejun Heo
2010-07-14 7:58 ` Jeff Garzik
2010-07-14 9:26 ` Tejun Heo
2010-07-27 17:37 ` Jeff Garzik
2010-06-13 15:31 ` Tejun Heo
2010-06-13 15:31 ` [PATCH 12/12] usb: use IRQ watching Tejun Heo
2010-06-13 15:31 ` Tejun Heo
2010-06-14 21:41 ` Greg KH
2010-06-14 21:52 ` Tejun Heo
2010-06-14 22:11 ` Greg KH
2010-06-14 22:19 ` Tejun Heo
2010-06-15 10:30 ` Kay Sievers
2010-06-15 11:05 ` Jean Delvare
2010-06-15 13:30 ` Kay Sievers
2010-06-15 11:20 ` Tejun Heo
2010-06-15 13:36 ` Kay Sievers
2010-06-15 17:36 ` Tejun Heo
2010-06-15 17:47 ` Greg KH
2010-06-15 17:52 ` Tejun Heo
2010-06-21 13:51 ` Tejun Heo
2010-06-21 20:27 ` Greg KH
2010-06-22 7:32 ` Tejun Heo
2010-07-02 14:59 ` [GIT PULL] irq: better lost/spurious irq handling 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=4C23F6C1.7070603@garzik.org \
--to=jeff@garzik.org \
--cc=akpm@linux-foundation.org \
--cc=bphilips@suse.de \
--cc=gregkh@suse.de \
--cc=khali@linux-fr.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=yinghai@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.