aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle McMartin <kyle@redhat.com>2009-02-04 17:29:19 -0500
committerIngo Molnar <mingo@elte.hu>2009-02-05 10:48:38 -0500
commit0cd5c3c80a0ebd68c08312fa7d8c13149cc61c4c (patch)
tree4dc6093ee08e668a182b38bd13cd85436555c4b6
parentb534816b552d35bbd3c60702139ed5c7da2f55c2 (diff)
x86: disable intel_iommu support by default
Due to recurring issues with DMAR support on certain platforms. There's a number of filesystem corruption incidents reported: https://bugzilla.redhat.com/show_bug.cgi?id=479996 http://bugzilla.kernel.org/show_bug.cgi?id=12578 Provide a Kconfig option to change whether it is enabled by default. If disabled, it can still be reenabled by passing intel_iommu=on to the kernel. Keep the .config option off by default. Signed-off-by: Kyle McMartin <kyle@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-By: David Woodhouse <David.Woodhouse@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--arch/x86/Kconfig11
-rw-r--r--drivers/pci/intel-iommu.c14
3 files changed, 24 insertions, 3 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index d8362cf9909e..b182626739ea 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -937,6 +937,8 @@ and is between 256 and 4096 characters. It is defined in the file
937 937
938 938
939 intel_iommu= [DMAR] Intel IOMMU driver (DMAR) option 939 intel_iommu= [DMAR] Intel IOMMU driver (DMAR) option
940 on
941 Enable intel iommu driver.
940 off 942 off
941 Disable intel iommu driver. 943 Disable intel iommu driver.
942 igfx_off [Default Off] 944 igfx_off [Default Off]
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 73f7fe8fd4d1..9c39095b33fc 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1802,6 +1802,17 @@ config DMAR
1802 and include PCI device scope covered by these DMA 1802 and include PCI device scope covered by these DMA
1803 remapping devices. 1803 remapping devices.
1804 1804
1805config DMAR_DEFAULT_ON
1806 def_bool n
1807 prompt "Enable DMA Remapping Devices by default"
1808 depends on DMAR
1809 help
1810 Selecting this option will enable a DMAR device at boot time if
1811 one is found. If this option is not selected, DMAR support can
1812 be enabled by passing intel_iommu=on to the kernel. It is
1813 recommended you say N here while the DMAR code remains
1814 experimental.
1815
1805config DMAR_GFX_WA 1816config DMAR_GFX_WA
1806 def_bool y 1817 def_bool y
1807 prompt "Support for Graphics workaround" 1818 prompt "Support for Graphics workaround"
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 3dfecb20d5e7..f4b7c79023ff 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -268,7 +268,12 @@ static long list_size;
268 268
269static void domain_remove_dev_info(struct dmar_domain *domain); 269static void domain_remove_dev_info(struct dmar_domain *domain);
270 270
271int dmar_disabled; 271#ifdef CONFIG_DMAR_DEFAULT_ON
272int dmar_disabled = 0;
273#else
274int dmar_disabled = 1;
275#endif /*CONFIG_DMAR_DEFAULT_ON*/
276
272static int __initdata dmar_map_gfx = 1; 277static int __initdata dmar_map_gfx = 1;
273static int dmar_forcedac; 278static int dmar_forcedac;
274static int intel_iommu_strict; 279static int intel_iommu_strict;
@@ -284,9 +289,12 @@ static int __init intel_iommu_setup(char *str)
284 if (!str) 289 if (!str)
285 return -EINVAL; 290 return -EINVAL;
286 while (*str) { 291 while (*str) {
287 if (!strncmp(str, "off", 3)) { 292 if (!strncmp(str, "on", 2)) {
293 dmar_disabled = 0;
294 printk(KERN_INFO "Intel-IOMMU: enabled\n");
295 } else if (!strncmp(str, "off", 3)) {
288 dmar_disabled = 1; 296 dmar_disabled = 1;
289 printk(KERN_INFO"Intel-IOMMU: disabled\n"); 297 printk(KERN_INFO "Intel-IOMMU: disabled\n");
290 } else if (!strncmp(str, "igfx_off", 8)) { 298 } else if (!strncmp(str, "igfx_off", 8)) {
291 dmar_map_gfx = 0; 299 dmar_map_gfx = 0;
292 printk(KERN_INFO 300 printk(KERN_INFO