intel-iommu: Disallow interrupt remapping if not all ioapics covered
authorYouquan Song <youquan.song@intel.com>
Mon, 7 Sep 2009 14:58:07 +0000 (10:58 -0400)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 11 Sep 2009 15:38:53 +0000 (16:38 +0100)
Current kernel enable interrupt remapping only when all the vt-d unit support
interrupt remapping. So it is reasonable we should also disallow enabling
intr-remapping if there any io-apics that are not listed under vt-d units.
Otherwise we can run into issues.

Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: Youquan Song <youquan.song@intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/pci/dmar.c
drivers/pci/intr_remapping.c

index 3264b62..fba4f68 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;
 }
 
index 4f5b871..ebfa47b 100644 (file)
@@ -626,6 +626,11 @@ int __init enable_intr_remapping(int eim)
        struct dmar_drhd_unit *drhd;
        int setup = 0;
 
+       if (parse_ioapics_under_ir() != 1) {
+               printk(KERN_INFO "Not enable interrupt remapping\n");
+               return -1;
+       }
+
        for_each_drhd_unit(drhd) {
                struct intel_iommu *iommu = drhd->iommu;