Skip to content

Commit

Permalink
iommu/vt-d: Allocate si_domain in init_dmars()
Browse files Browse the repository at this point in the history
This seperates the allocation of the si_domain from its
assignment to devices. It makes sure that the iommu=pt case
still works in the kdump kernel, when we have to defer the
assignment of devices to domains to device driver
initialization time.

Tested-by: ZhenHua Li <zhen-hual@hp.com>
Tested-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
  • Loading branch information
joergroedel committed Jun 16, 2015
1 parent cf484d0 commit 86080cc
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions drivers/iommu/intel-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -2763,10 +2763,6 @@ static int __init iommu_prepare_static_identity_mapping(int hw)
int i;
int ret = 0;

ret = si_domain_init(hw);
if (ret)
return -EFAULT;

for_each_pci_dev(pdev) {
ret = dev_prepare_static_identity_mapping(&pdev->dev, hw);
if (ret)
Expand All @@ -2780,7 +2776,7 @@ static int __init iommu_prepare_static_identity_mapping(int hw)

if (dev->bus != &acpi_bus_type)
continue;

adev= to_acpi_device(dev);
mutex_lock(&adev->physical_node_lock);
list_for_each_entry(pn, &adev->physical_node_list, node) {
Expand Down Expand Up @@ -3114,6 +3110,12 @@ static int __init init_dmars(void)
iommu_identity_mapping |= IDENTMAP_GFX;
#endif

if (iommu_identity_mapping) {
ret = si_domain_init(hw_pass_through);
if (ret)
goto free_iommu;
}

check_tylersburg_isoch();

/*
Expand Down

0 comments on commit 86080cc

Please sign in to comment.