summaryrefslogtreecommitdiff
path: root/drivers/ide
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-08-04 01:29:51 -0700
committerDavid S. Miller <davem@davemloft.net>2011-08-04 01:29:51 -0700
commit89e9aad65ffad96c3a35ff979a61a65761873951 (patch)
tree8197ad0688a895fa190b4e03a975610b41b4d583 /drivers/ide
parent288d5abec8314ae50fe6692f324b0444acae8486 (diff)
ide: Fix irq flags madness
commit ec1a123 (IDE: pass IRQ flags to the IDE core) introduced the bogosity of passing unfiltered resource->flags to the irq_flags which are used for request_irq. It results in random bits set (especially IORESOURCE_IRQ which maps to IRQF_PER_CPU). Filter the bits proper. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/ide_platform.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/ide/ide_platform.c b/drivers/ide/ide_platform.c
index 542603b394e4..962693b10a1c 100644
--- a/drivers/ide/ide_platform.c
+++ b/drivers/ide/ide_platform.c
@@ -19,6 +19,7 @@
#include <linux/module.h>
#include <linux/ata_platform.h>
#include <linux/platform_device.h>
+#include <linux/interrupt.h>
#include <linux/io.h>
static void __devinit plat_ide_setup_ports(struct ide_hw *hw,
@@ -95,7 +96,10 @@ static int __devinit plat_ide_probe(struct platform_device *pdev)
plat_ide_setup_ports(&hw, base, alt_base, pdata, res_irq->start);
hw.dev = &pdev->dev;
- d.irq_flags = res_irq->flags;
+ d.irq_flags = res_irq->flags & IRQF_TRIGGER_MASK;
+ if (res_irq->flags & IORESOURCE_IRQ_SHAREABLE)
+ d.irq_flags |= IRQF_SHARED;
+
if (mmio)
d.host_flags |= IDE_HFLAG_MMIO;