aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDavid Woodhouse <David.Woodhouse@intel.com>2009-08-04 11:19:20 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2009-08-04 11:19:23 -0400
commit19943b0e30b05d42e494ae6fef78156ebc8c637e (patch)
tree1c7e1dffac6ee9f0fb5920078475ad19e8919c5b /arch
parent0815565adfe3f4c369110c57d8ffe83caefeed68 (diff)
intel-iommu: Unify hardware and software passthrough support
This makes the hardware passthrough mode work a lot more like the software version, so that the behaviour of a kernel with 'iommu=pt' is the same whether the hardware supports passthrough or not. In particular: - We use a single si_domain for the pass-through devices. - 32-bit devices can be taken out of the pass-through domain so that they don't have to use swiotlb. - Devices will work again after being removed from a KVM guest. - A potential oops on OOM (in init_context_pass_through()) is fixed. Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/pci-swiotlb.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/kernel/pci-swiotlb.c b/arch/x86/kernel/pci-swiotlb.c
index 6af96ee44200..1e66b18f45cb 100644
--- a/arch/x86/kernel/pci-swiotlb.c
+++ b/arch/x86/kernel/pci-swiotlb.c
@@ -71,9 +71,8 @@ void __init pci_swiotlb_init(void)
71{ 71{
72 /* don't initialize swiotlb if iommu=off (no_iommu=1) */ 72 /* don't initialize swiotlb if iommu=off (no_iommu=1) */
73#ifdef CONFIG_X86_64 73#ifdef CONFIG_X86_64
74 if ((!iommu_detected && !no_iommu && max_pfn > MAX_DMA32_PFN) || 74 if ((!iommu_detected && !no_iommu && max_pfn > MAX_DMA32_PFN))
75 iommu_pass_through) 75 swiotlb = 1;
76 swiotlb = 1;
77#endif 76#endif
78 if (swiotlb_force) 77 if (swiotlb_force)
79 swiotlb = 1; 78 swiotlb = 1;