diff options
-rw-r--r-- | arch/ia64/include/asm/irq_remapping.h | 2 | ||||
-rw-r--r-- | arch/x86/include/asm/irq_remapping.h | 3 | ||||
-rw-r--r-- | drivers/iommu/dmar.c | 6 |
3 files changed, 8 insertions, 3 deletions
diff --git a/arch/ia64/include/asm/irq_remapping.h b/arch/ia64/include/asm/irq_remapping.h index a8687b1d8906..e3b3556e2e1b 100644 --- a/arch/ia64/include/asm/irq_remapping.h +++ b/arch/ia64/include/asm/irq_remapping.h | |||
@@ -1,4 +1,6 @@ | |||
1 | #ifndef __IA64_INTR_REMAPPING_H | 1 | #ifndef __IA64_INTR_REMAPPING_H |
2 | #define __IA64_INTR_REMAPPING_H | 2 | #define __IA64_INTR_REMAPPING_H |
3 | #define irq_remapping_enabled 0 | 3 | #define irq_remapping_enabled 0 |
4 | #define dmar_alloc_hwirq create_irq | ||
5 | #define dmar_free_hwirq destroy_irq | ||
4 | #endif | 6 | #endif |
diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index d806b228d2c0..b7747c4c2cf2 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h | |||
@@ -103,4 +103,7 @@ static inline bool setup_remapped_irq(int irq, | |||
103 | } | 103 | } |
104 | #endif /* CONFIG_IRQ_REMAP */ | 104 | #endif /* CONFIG_IRQ_REMAP */ |
105 | 105 | ||
106 | #define dmar_alloc_hwirq() irq_alloc_hwirq(-1) | ||
107 | #define dmar_free_hwirq irq_free_hwirq | ||
108 | |||
106 | #endif /* __X86_IRQ_REMAPPING_H */ | 109 | #endif /* __X86_IRQ_REMAPPING_H */ |
diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index 3ce1f62a091f..9a4f05e5b23f 100644 --- a/drivers/iommu/dmar.c +++ b/drivers/iommu/dmar.c | |||
@@ -994,7 +994,7 @@ static void free_iommu(struct intel_iommu *iommu) | |||
994 | if (iommu->irq) { | 994 | if (iommu->irq) { |
995 | free_irq(iommu->irq, iommu); | 995 | free_irq(iommu->irq, iommu); |
996 | irq_set_handler_data(iommu->irq, NULL); | 996 | irq_set_handler_data(iommu->irq, NULL); |
997 | destroy_irq(iommu->irq); | 997 | dmar_free_hwirq(iommu->irq); |
998 | } | 998 | } |
999 | 999 | ||
1000 | if (iommu->qi) { | 1000 | if (iommu->qi) { |
@@ -1550,7 +1550,7 @@ int dmar_set_interrupt(struct intel_iommu *iommu) | |||
1550 | if (iommu->irq) | 1550 | if (iommu->irq) |
1551 | return 0; | 1551 | return 0; |
1552 | 1552 | ||
1553 | irq = create_irq(); | 1553 | irq = dmar_alloc_hwirq(); |
1554 | if (irq <= 0) { | 1554 | if (irq <= 0) { |
1555 | pr_err("IOMMU: no free vectors\n"); | 1555 | pr_err("IOMMU: no free vectors\n"); |
1556 | return -EINVAL; | 1556 | return -EINVAL; |
@@ -1563,7 +1563,7 @@ int dmar_set_interrupt(struct intel_iommu *iommu) | |||
1563 | if (ret) { | 1563 | if (ret) { |
1564 | irq_set_handler_data(irq, NULL); | 1564 | irq_set_handler_data(irq, NULL); |
1565 | iommu->irq = 0; | 1565 | iommu->irq = 0; |
1566 | destroy_irq(irq); | 1566 | dmar_free_hwirq(irq); |
1567 | return ret; | 1567 | return ret; |
1568 | } | 1568 | } |
1569 | 1569 | ||