diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-04 11:19:20 -0400 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-08-04 11:19:23 -0400 |
commit | 19943b0e30b05d42e494ae6fef78156ebc8c637e (patch) | |
tree | 1c7e1dffac6ee9f0fb5920078475ad19e8919c5b /arch/x86 | |
parent | 0815565adfe3f4c369110c57d8ffe83caefeed68 (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/x86')
-rw-r--r-- | arch/x86/kernel/pci-swiotlb.c | 5 |
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; |