aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ia64/include/asm/irq_remapping.h2
-rw-r--r--arch/x86/include/asm/irq_remapping.h3
-rw-r--r--drivers/iommu/dmar.c6
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