Browse Source

iommu/vt-d: Only call dmar_acpi_dev_scope_init() if DRHD units present

As pointed out by Jörg and fixed in commit 11f1a7768 ("iommu/vt-d: Check
for NULL pointer in dmar_acpi_dev_scope_init(), this code path can
bizarrely get exercised even on AMD IOMMU systems with IRQ remapping
enabled.

In addition to the defensive check for NULL which Jörg added, let's also
just avoid calling the function at all if there aren't an Intel IOMMU
units in the system.

Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
David Woodhouse 11 years ago
parent
commit
63b4262478
1 changed files with 2 additions and 2 deletions
  1. 2 2
      drivers/iommu/dmar.c

+ 2 - 2
drivers/iommu/dmar.c

@@ -698,13 +698,13 @@ int __init dmar_dev_scope_init(void)
 	if (dmar_dev_scope_status != 1)
 	if (dmar_dev_scope_status != 1)
 		return dmar_dev_scope_status;
 		return dmar_dev_scope_status;
 
 
-	dmar_acpi_dev_scope_init();
-
 	if (list_empty(&dmar_drhd_units)) {
 	if (list_empty(&dmar_drhd_units)) {
 		dmar_dev_scope_status = -ENODEV;
 		dmar_dev_scope_status = -ENODEV;
 	} else {
 	} else {
 		dmar_dev_scope_status = 0;
 		dmar_dev_scope_status = 0;
 
 
+		dmar_acpi_dev_scope_init();
+
 		for_each_pci_dev(dev) {
 		for_each_pci_dev(dev) {
 			if (dev->is_virtfn)
 			if (dev->is_virtfn)
 				continue;
 				continue;