diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2011-08-04 04:29:51 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2011-08-04 04:29:51 -0400 |
| commit | 89e9aad65ffad96c3a35ff979a61a65761873951 (patch) | |
| tree | 8197ad0688a895fa190b4e03a975610b41b4d583 | |
| parent | 288d5abec8314ae50fe6692f324b0444acae8486 (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>
| -rw-r--r-- | drivers/ide/ide_platform.c | 6 |
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 @@ | |||
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 20 | #include <linux/ata_platform.h> | 20 | #include <linux/ata_platform.h> |
| 21 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
| 22 | #include <linux/interrupt.h> | ||
| 22 | #include <linux/io.h> | 23 | #include <linux/io.h> |
| 23 | 24 | ||
| 24 | static void __devinit plat_ide_setup_ports(struct ide_hw *hw, | 25 | 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) | |||
| 95 | plat_ide_setup_ports(&hw, base, alt_base, pdata, res_irq->start); | 96 | plat_ide_setup_ports(&hw, base, alt_base, pdata, res_irq->start); |
| 96 | hw.dev = &pdev->dev; | 97 | hw.dev = &pdev->dev; |
| 97 | 98 | ||
| 98 | d.irq_flags = res_irq->flags; | 99 | d.irq_flags = res_irq->flags & IRQF_TRIGGER_MASK; |
| 100 | if (res_irq->flags & IORESOURCE_IRQ_SHAREABLE) | ||
| 101 | d.irq_flags |= IRQF_SHARED; | ||
| 102 | |||
| 99 | if (mmio) | 103 | if (mmio) |
| 100 | d.host_flags |= IDE_HFLAG_MMIO; | 104 | d.host_flags |= IDE_HFLAG_MMIO; |
| 101 | 105 | ||
