aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorYouquan Song <youquan.song@intel.com>2009-09-07 10:58:07 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-09-11 11:38:53 -0400
commite936d0773df172ec8600777fdd72bbc1f75f22ad (patch)
treec778f4d6aaee3e9ecbccbb4d0d31565a78e49a26 /drivers
parentadb2fe0277607d50f4e9ef06e1d180051a609c25 (diff)
intel-iommu: Disallow interrupt remapping if not all ioapics covered
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/pci/dmar.c3
-rw-r--r--drivers/pci/intr_remapping.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 3264b626725a..fba4f6891680 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -570,9 +570,6 @@ int __init dmar_table_init(void)
570 printk(KERN_INFO PREFIX "No ATSR found\n"); 570 printk(KERN_INFO PREFIX "No ATSR found\n");
571#endif 571#endif
572 572
573#ifdef CONFIG_INTR_REMAP
574 parse_ioapics_under_ir();
575#endif
576 return 0; 573 return 0;
577} 574}
578 575
diff --git a/drivers/pci/intr_remapping.c b/drivers/pci/intr_remapping.c
index 4f5b8712931f..ebfa47b79c5b 100644
--- a/drivers/pci/intr_remapping.c
+++ b/drivers/pci/intr_remapping.c
@@ -626,6 +626,11 @@ int __init enable_intr_remapping(int eim)
626 struct dmar_drhd_unit *drhd; 626 struct dmar_drhd_unit *drhd;
627 int setup = 0; 627 int setup = 0;
628 628
629 if (parse_ioapics_under_ir() != 1) {
630 printk(KERN_INFO "Not enable interrupt remapping\n");
631 return -1;
632 }
633
629 for_each_drhd_unit(drhd) { 634 for_each_drhd_unit(drhd) {
630 struct intel_iommu *iommu = drhd->iommu; 635 struct intel_iommu *iommu = drhd->iommu;
631 636