diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-07-04 05:49:46 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-07-04 05:49:46 -0400 |
commit | 1b7bc0a1618b4de1e6f55c6d95b790f4ab6fcd9e (patch) | |
tree | fa5fbdc5ce15e3726600a23ecfe362d1df5184f8 /drivers/pci | |
parent | 1e4c64c46d413de84cc0b786bd6a9b555ba7d111 (diff) |
intel-iommu: Fix reattaching of devices to identity mapping domain
When we reattach a device to the si_domain (because it's been removed
from a VM), we weren't calling domain_context_mapping() to actually tell
the hardware about that.
We should really put the call to domain_context_mapping() into
domain_add_dev_info() -- we never call the latter without also doing the
former, and we can keep the error paths simple that way. But that's a
cleanup which can wait for 2.6.32 now.
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/intel-iommu.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c index 3e3910127fc1..73a5c71dd37d 100644 --- a/drivers/pci/intel-iommu.c +++ b/drivers/pci/intel-iommu.c | |||
@@ -2475,6 +2475,9 @@ static int iommu_no_mapping(struct pci_dev *pdev) | |||
2475 | if (pdev->dma_mask > DMA_BIT_MASK(32)) { | 2475 | if (pdev->dma_mask > DMA_BIT_MASK(32)) { |
2476 | int ret; | 2476 | int ret; |
2477 | ret = domain_add_dev_info(si_domain, pdev); | 2477 | ret = domain_add_dev_info(si_domain, pdev); |
2478 | if (ret) | ||
2479 | return 0; | ||
2480 | ret = domain_context_mapping(si_domain, pdev, CONTEXT_TT_MULTI_LEVEL); | ||
2478 | if (!ret) { | 2481 | if (!ret) { |
2479 | printk(KERN_INFO "64bit %s uses identity mapping\n", | 2482 | printk(KERN_INFO "64bit %s uses identity mapping\n", |
2480 | pci_name(pdev)); | 2483 | pci_name(pdev)); |