All of lore.kernel.org
 help / color / mirror / Atom feed
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: Tue, 27 Jul 2010 13:37:45 -0400	[thread overview]
Message-ID: <4C4F1969.5020305@garzik.org> (raw)
In-Reply-To: <4C2DFAB0.3020703@kernel.org>

On 07/02/2010 10:41 AM, Tejun Heo wrote:
> Hello, Jeff.
>
> So, something like the following.  This should be applied on top of
> the two previous libata patches.  The amount of code in the hot path
> is very small.  Compared to the cpu actually taking an interrupt and
> accessing hardware, it should be negligible, and this will give us
> working and acceptably performing systems in the presence of most
> types of IRQ problems.
>
> Thanks.
>
> Subject: [PATCH] libata: use IRQ expecting
>
> Legacy 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 controllers share this problem as many 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.
>
> Controllers with native interface have fewer problems compared to the
> ones which use SFF but they still are affected by IRQ misrouting or
> broken MSI implementations.
>
> IRQ delivery problems on ATA are particularly nasty because it
> commonly hosts installation and/or booting.
>
> Most of these problems can be worked around by using the new IRQ
> expecting mechanism without adding any 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 |   55 ++++++++++++++++++++++++++++++----------------
>   drivers/ata/libata-eh.c   |    4 ++-
>   drivers/ata/libata-sff.c  |   37 +++++++++++++++---------------
>   include/linux/libata.h    |    2 +
>   4 files changed, 60 insertions(+), 38 deletions(-)

I suppose the few cycles it costs are worth it...

Assuming this new version (from July 2) is tested,

Acked-by: Jeff Garzik <jgarzik@redhat.com>



  parent reply	other threads:[~2010-07-27 17:37 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
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 [this message]
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=4C4F1969.5020305@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.