diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2008-07-10 14:16:43 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-12 02:44:53 -0400 |
commit | 2ae21010694e56461a63bfc80e960090ce0a5ed9 (patch) | |
tree | d4ecdb710c4361df473b063eda9e1426fcf5c309 /drivers/pci/intel-iommu.c | |
parent | fe962e90cb17a8426e144dee970e77ed789d98ee (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.c | 21 |
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 | ||
77 | static void domain_remove_dev_info(struct dmar_domain *domain); | 77 | static void domain_remove_dev_info(struct dmar_domain *domain); |
78 | 78 | ||
79 | static int dmar_disabled; | 79 | int dmar_disabled; |
80 | static int __initdata dmar_map_gfx = 1; | 80 | static int __initdata dmar_map_gfx = 1; |
81 | static int dmar_forcedac; | 81 | static int dmar_forcedac; |
82 | static int intel_iommu_strict; | 82 | static int intel_iommu_strict; |
@@ -2238,15 +2238,6 @@ static void __init iommu_exit_mempool(void) | |||
2238 | 2238 | ||
2239 | } | 2239 | } |
2240 | 2240 | ||
2241 | void __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 | |||
2250 | static void __init init_no_remapping_devices(void) | 2241 | static 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 | ||