diff options
Diffstat (limited to 'drivers/pci/dmar.c')
-rw-r--r-- | drivers/pci/dmar.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c index 0a19708074c2..0157708d474d 100644 --- a/drivers/pci/dmar.c +++ b/drivers/pci/dmar.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/tboot.h> | 36 | #include <linux/tboot.h> |
37 | #include <linux/dmi.h> | 37 | #include <linux/dmi.h> |
38 | #include <linux/slab.h> | 38 | #include <linux/slab.h> |
39 | #include <asm/iommu_table.h> | ||
39 | 40 | ||
40 | #define PREFIX "DMAR: " | 41 | #define PREFIX "DMAR: " |
41 | 42 | ||
@@ -687,7 +688,7 @@ failed: | |||
687 | return 0; | 688 | return 0; |
688 | } | 689 | } |
689 | 690 | ||
690 | void __init detect_intel_iommu(void) | 691 | int __init detect_intel_iommu(void) |
691 | { | 692 | { |
692 | int ret; | 693 | int ret; |
693 | 694 | ||
@@ -723,6 +724,8 @@ void __init detect_intel_iommu(void) | |||
723 | } | 724 | } |
724 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); | 725 | early_acpi_os_unmap_memory(dmar_tbl, dmar_tbl_size); |
725 | dmar_tbl = NULL; | 726 | dmar_tbl = NULL; |
727 | |||
728 | return ret ? 1 : -ENODEV; | ||
726 | } | 729 | } |
727 | 730 | ||
728 | 731 | ||
@@ -1221,9 +1224,9 @@ const char *dmar_get_fault_reason(u8 fault_reason, int *fault_type) | |||
1221 | } | 1224 | } |
1222 | } | 1225 | } |
1223 | 1226 | ||
1224 | void dmar_msi_unmask(unsigned int irq) | 1227 | void dmar_msi_unmask(struct irq_data *data) |
1225 | { | 1228 | { |
1226 | struct intel_iommu *iommu = get_irq_data(irq); | 1229 | struct intel_iommu *iommu = irq_data_get_irq_data(data); |
1227 | unsigned long flag; | 1230 | unsigned long flag; |
1228 | 1231 | ||
1229 | /* unmask it */ | 1232 | /* unmask it */ |
@@ -1234,10 +1237,10 @@ void dmar_msi_unmask(unsigned int irq) | |||
1234 | spin_unlock_irqrestore(&iommu->register_lock, flag); | 1237 | spin_unlock_irqrestore(&iommu->register_lock, flag); |
1235 | } | 1238 | } |
1236 | 1239 | ||
1237 | void dmar_msi_mask(unsigned int irq) | 1240 | void dmar_msi_mask(struct irq_data *data) |
1238 | { | 1241 | { |
1239 | unsigned long flag; | 1242 | unsigned long flag; |
1240 | struct intel_iommu *iommu = get_irq_data(irq); | 1243 | struct intel_iommu *iommu = irq_data_get_irq_data(data); |
1241 | 1244 | ||
1242 | /* mask it */ | 1245 | /* mask it */ |
1243 | spin_lock_irqsave(&iommu->register_lock, flag); | 1246 | spin_lock_irqsave(&iommu->register_lock, flag); |
@@ -1455,3 +1458,4 @@ int __init dmar_ir_support(void) | |||
1455 | return 0; | 1458 | return 0; |
1456 | return dmar->flags & 0x1; | 1459 | return dmar->flags & 0x1; |
1457 | } | 1460 | } |
1461 | IOMMU_INIT_POST(detect_intel_iommu); | ||