aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/intel-iommu.c
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2008-07-10 14:16:43 -0400
committerIngo Molnar <mingo@elte.hu>2008-07-12 02:44:53 -0400
commit2ae21010694e56461a63bfc80e960090ce0a5ed9 (patch)
treed4ecdb710c4361df473b063eda9e1426fcf5c309 /drivers/pci/intel-iommu.c
parentfe962e90cb17a8426e144dee970e77ed789d98ee (diff)
x64, x2apic/intr-remap: Interrupt remapping infrastructure
Interrupt remapping (part of Intel Virtualization Tech for directed I/O) infrastructure. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Cc: akpm@linux-foundation.org Cc: arjan@linux.intel.com Cc: andi@firstfloor.org Cc: ebiederm@xmission.com Cc: jbarnes@virtuousgeek.org Cc: steiner@sgi.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/pci/intel-iommu.c')
-rw-r--r--drivers/pci/intel-iommu.c21
1 files changed, 8 insertions, 13 deletions
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 347bf2e47168..ffccf2341b98 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -76,7 +76,7 @@ static long list_size;
76 76
77static void domain_remove_dev_info(struct dmar_domain *domain); 77static void domain_remove_dev_info(struct dmar_domain *domain);
78 78
79static int dmar_disabled; 79int dmar_disabled;
80static int __initdata dmar_map_gfx = 1; 80static int __initdata dmar_map_gfx = 1;
81static int dmar_forcedac; 81static int dmar_forcedac;
82static int intel_iommu_strict; 82static int intel_iommu_strict;
@@ -2238,15 +2238,6 @@ static void __init iommu_exit_mempool(void)
2238 2238
2239} 2239}
2240 2240
2241void __init detect_intel_iommu(void)
2242{
2243 if (swiotlb || no_iommu || iommu_detected || dmar_disabled)
2244 return;
2245 if (early_dmar_detect()) {
2246 iommu_detected = 1;
2247 }
2248}
2249
2250static void __init init_no_remapping_devices(void) 2241static void __init init_no_remapping_devices(void)
2251{ 2242{
2252 struct dmar_drhd_unit *drhd; 2243 struct dmar_drhd_unit *drhd;
@@ -2293,15 +2284,19 @@ int __init intel_iommu_init(void)
2293{ 2284{
2294 int ret = 0; 2285 int ret = 0;
2295 2286
2296 if (no_iommu || swiotlb || dmar_disabled)
2297 return -ENODEV;
2298
2299 if (dmar_table_init()) 2287 if (dmar_table_init())
2300 return -ENODEV; 2288 return -ENODEV;
2301 2289
2302 if (dmar_dev_scope_init()) 2290 if (dmar_dev_scope_init())
2303 return -ENODEV; 2291 return -ENODEV;
2304 2292
2293 /*
2294 * Check the need for DMA-remapping initialization now.
2295 * Above initialization will also be used by Interrupt-remapping.
2296 */
2297 if (no_iommu || swiotlb || dmar_disabled)
2298 return -ENODEV;
2299
2305 iommu_init_mempool(); 2300 iommu_init_mempool();
2306 dmar_init_reserved_ranges(); 2301 dmar_init_reserved_ranges();
2307 2302