Re: [PATCH] AHCI: Fix threaded interrupt setup

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 23, 2014 at 05:49:30PM +0100, Marc Zyngier wrote:
> Commit 18dcf433f3de (AHCI: Optimize single IRQ interrupt processing)
> switched the single IRQ case of the AHCI driver to use threaded
> threaded interrupts.
> 
> During this conversion, only the IRQF_SHARED flag was provided. The net
> effect of this in the presence of level interrupts is that the
> interrupt will not be masked during the execution of the treaded
> handler, leading to a screaming interrupt if the thread is not
> scheduled quickly enough, specially in error conditions:

[...]

> Not good. The culprit is a missing IRQF_ONESHOT flag, which addition
> solves the problem entierly. The number of interrupts drops radically:

I worried how many devices hanging off the same IRQ line in legacy mode
would fail to initialize after this update due to IRQF_ONESHOT mismatch.

Given that I did not observe nor anticipate this kind of problem and
LKP test shows a perf drop I am thinking may be we need to revert 18dcf43
for now.

Tejun?

> [Booting Debian Jessie to a prompt]
> Before fix:
>  88:       3562          0       GIC  88  ahci-sunxi
> After fix:
>  88:       1992          0       GIC  88  ahci-sunxi
> 
> Tested on a A20 board (ahci-sunxi).
> 
> Cc: Alexander Gordeev <agordeev@xxxxxxxxxx>
> Cc: Tejun Heo <tj@xxxxxxxxxx>
> Cc: linux-ide@xxxxxxxxxxxxxxx
> Signed-off-by: Marc Zyngier <marc.zyngier@xxxxxxx>
> ---
>  drivers/ata/libahci.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
> index 5eb61c9..49c649f 100644
> --- a/drivers/ata/libahci.c
> +++ b/drivers/ata/libahci.c
> @@ -2492,7 +2492,7 @@ static int ahci_host_activate_single_irq(struct ata_host *host, int irq,
>  		return rc;
>  
>  	rc = devm_request_threaded_irq(host->dev, irq, ahci_single_irq_intr,
> -				       ahci_thread_fn, IRQF_SHARED,
> +				       ahci_thread_fn, IRQF_SHARED | IRQF_ONESHOT,
>  				       dev_driver_string(host->dev), host);
>  	if (rc)
>  		return rc;
> -- 
> 2.0.4
> 

-- 
Regards,
Alexander Gordeev
agordeev@xxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux