intel-iommu: Fix kernel hang if interrupt remapping disabled in BIOS
[pandora-kernel.git] / drivers / pci / dmar.c
index 380b60e..270ed22 100644 (file)
@@ -570,9 +570,6 @@ int __init dmar_table_init(void)
                printk(KERN_INFO PREFIX "No ATSR found\n");
 #endif
 
-#ifdef CONFIG_INTR_REMAP
-       parse_ioapics_under_ir();
-#endif
        return 0;
 }
 
@@ -1226,7 +1223,7 @@ irqreturn_t dmar_fault(int irq, void *dev_id)
                                source_id, guest_addr);
 
                fault_index++;
-               if (fault_index > cap_num_fault_regs(iommu->cap))
+               if (fault_index >= cap_num_fault_regs(iommu->cap))
                        fault_index = 0;
                spin_lock_irqsave(&iommu->register_lock, flag);
        }
@@ -1319,3 +1316,13 @@ int dmar_reenable_qi(struct intel_iommu *iommu)
 
        return 0;
 }
+
+/*
+ * Check interrupt remapping support in DMAR table description.
+ */
+int dmar_ir_support(void)
+{
+       struct acpi_table_dmar *dmar;
+       dmar = (struct acpi_table_dmar *)dmar_tbl;
+       return dmar->flags & 0x1;
+}