diff options
-rw-r--r-- | drivers/pci/intel-iommu.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index f3eebd2b2d72..6262c198e56e 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -477,11 +477,16 @@ static struct intel_iommu *device_to_iommu(u8 bus, u8 devfn) | |||
477 | if (drhd->ignored) | 477 | if (drhd->ignored) |
478 | continue; | 478 | continue; |
479 | 479 | ||
480 | for (i = 0; i < drhd->devices_cnt; i++) | 480 | for (i = 0; i < drhd->devices_cnt; i++) { |
481 | if (drhd->devices[i] && | 481 | if (drhd->devices[i] && |
482 | drhd->devices[i]->bus->number == bus && | 482 | drhd->devices[i]->bus->number == bus && |
483 | drhd->devices[i]->devfn == devfn) | 483 | drhd->devices[i]->devfn == devfn) |
484 | return drhd->iommu; | 484 | return drhd->iommu; |
485 | if (drhd->devices[i]->subordinate && | ||
486 | drhd->devices[i]->subordinate->number <= bus && | ||
487 | drhd->devices[i]->subordinate->subordinate >= bus) | ||
488 | return drhd->iommu; | ||
489 | } | ||
485 | 490 | ||
486 | if (drhd->include_all) | 491 | if (drhd->include_all) |
487 | return drhd->iommu; | 492 | return drhd->iommu; |