[PATCH] x86_64: Rename IOMMU option, fix help and mark option embedded.
authorAndi Kleen <ak@suse.de>
Mon, 26 Jun 2006 11:57:22 +0000 (13:57 +0200)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 26 Jun 2006 17:48:17 +0000 (10:48 -0700)
 - Rename the GART_IOMMU option to IOMMU to make clear it's not
   just for AMD
 - Rewrite the help text to better emphatise this fact
 - Make it an embedded option because too many people get it wrong.

To my astonishment I discovered the aacraid driver tests this
symbol directly. This looks quite broken to me - it's an internal
implementation detail of the PCI DMA API. Can the maintainer
please clarify what this test was intended to do?

Cc: linux-scsi@vger.kernel.org
Cc: alan@redhat.com
Cc: markh@osdl.org
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/x86_64/Kconfig
arch/x86_64/Kconfig.debug
arch/x86_64/kernel/Makefile
arch/x86_64/kernel/io_apic.c
arch/x86_64/kernel/pci-dma.c
arch/x86_64/kernel/setup.c
drivers/char/agp/Kconfig
drivers/char/agp/amd64-agp.c
drivers/scsi/aacraid/comminit.c
include/asm-x86_64/pci.h
include/asm-x86_64/proto.h

index fc75275d8c72af72f055daa0d2f936b52dd5eead..e8c52a1eec06505c736a456d8efa6d3ae4cff853 100644 (file)
@@ -386,24 +386,26 @@ config HPET_EMULATE_RTC
        bool "Provide RTC interrupt"
        depends on HPET_TIMER && RTC=y
 
-config GART_IOMMU
-       bool "K8 GART IOMMU support"
+# Mark as embedded because too many people got it wrong.
+# The code disables itself when not needed.
+config IOMMU
+       bool "IOMMU support" if EMBEDDED
        default y
        select SWIOTLB
        select AGP
        depends on PCI
        help
-         Support for hardware IOMMU in AMD's Opteron/Athlon64 Processors
-         and for the bounce buffering software IOMMU.
-         Needed to run systems with more than 3GB of memory properly with
-         32-bit PCI devices that do not support DAC (Double Address Cycle).
-         The IOMMU can be turned off at runtime with the iommu=off parameter.
-         Normally the kernel will take the right choice by itself.
-         This option includes a driver for the AMD Opteron/Athlon64 IOMMU
-         northbridge and a software emulation used on other systems without
-         hardware IOMMU.  If unsure, say Y.
-
-# need this always selected by GART_IOMMU for the VIA workaround
+         Support for full DMA access of devices with 32bit memory access only
+         on systems with more than 3GB. This is usually needed for USB,
+         sound, many IDE/SATA chipsets and some other devices.
+         Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
+         based IOMMU and a software bounce buffer based IOMMU used on Intel
+         systems and as fallback.
+         The code is only active when needed (enough memory and limited
+         device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
+         too.
+
+# need this always selected by IOMMU for the VIA workaround
 config SWIOTLB
        bool
 
@@ -503,7 +505,7 @@ config REORDER
 
 config K8_NB
        def_bool y
-       depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA)
+       depends on AGP_AMD64 || IOMMU || (PCI && NUMA)
 
 endmenu
 
index ea31b4c62105cfc808ce0278bee31228dd0bab23..0226f08be87487a0a78ff0bdeacb43e8496ec5d1 100644 (file)
@@ -13,7 +13,7 @@ config DEBUG_RODATA
         If in doubt, say "N".
 
 config IOMMU_DEBUG
-       depends on GART_IOMMU && DEBUG_KERNEL
+       depends on IOMMU && DEBUG_KERNEL
        bool "Enable IOMMU debugging"
        help
          Force the IOMMU to on even when you have less than 4GB of
index f927d11065fef50bd56f7b9a37fe5da807c212d1..fd106bdddd6d0104816e282a9fb81ee266411b85 100644 (file)
@@ -28,7 +28,7 @@ obj-$(CONFIG_PM)              += suspend.o
 obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o
 obj-$(CONFIG_CPU_FREQ)         += cpufreq/
 obj-$(CONFIG_EARLY_PRINTK)     += early_printk.o
-obj-$(CONFIG_GART_IOMMU)       += pci-gart.o aperture.o
+obj-$(CONFIG_IOMMU)            += pci-gart.o aperture.o
 obj-$(CONFIG_SWIOTLB)          += pci-swiotlb.o
 obj-$(CONFIG_KPROBES)          += kprobes.o
 obj-$(CONFIG_X86_PM_TIMER)     += pmtimer.o
index 519cd4e6f9e79c5fbad517d5adde793555641c78..c768d8a036d0c7998e802944f4cc0103e4ec0dbc 100644 (file)
@@ -319,7 +319,7 @@ void __init check_ioapic(void)
                                vendor &= 0xffff;
                                switch (vendor) { 
                                case PCI_VENDOR_ID_VIA:
-#ifdef CONFIG_GART_IOMMU
+#ifdef CONFIG_IOMMU
                                        if ((end_pfn > MAX_DMA32_PFN ||
                                             force_iommu) &&
                                            !iommu_aperture_allowed) {
index 117bcebe9ebce920c6e68a244a0047048417aae1..33926c3672500ff293bc6a3610ebff28b368bef6 100644 (file)
@@ -266,7 +266,7 @@ __init int iommu_setup(char *p)
                    swiotlb = 1;
 #endif
 
-#ifdef CONFIG_GART_IOMMU
+#ifdef CONFIG_IOMMU
            gart_parse_options(p);
 #endif
 
index 9dadb9a1db2a1db00b06d1015c5ca052b5228424..816203d57e11cc92c84f6efde45be46f74bbe2e5 100644 (file)
@@ -702,7 +702,7 @@ void __init setup_arch(char **cmdline_p)
 
        e820_setup_gap();
 
-#ifdef CONFIG_GART_IOMMU
+#ifdef CONFIG_IOMMU
        iommu_hole_init();
 #endif
 
index 46685a540772908817b10fbae775fe8099ab2bb8..9826a399fa02b053c2bf9568a5192e510bb873f3 100644 (file)
@@ -55,9 +55,9 @@ config AGP_AMD
          X on AMD Irongate, 761, and 762 chipsets.
 
 config AGP_AMD64
-       tristate "AMD Opteron/Athlon64 on-CPU GART support" if !GART_IOMMU
+       tristate "AMD Opteron/Athlon64 on-CPU GART support" if !IOMMU
        depends on AGP && X86
-       default y if GART_IOMMU
+       default y if IOMMU
        help
          This option gives you AGP support for the GLX component of
          X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs.
index 229d015757f9a13cedc3b3f598d2a87631fdc0bf..f690ee8cb7324fbf195946def5d05b7ef63f7f7c 100644 (file)
@@ -292,7 +292,7 @@ static int __devinit aperture_valid(u64 aper, u32 size)
 /*
  * W*s centric BIOS sometimes only set up the aperture in the AGP
  * bridge, not the northbridge. On AMD64 this is handled early
- * in aperture.c, but when GART_IOMMU is not enabled or we run
+ * in aperture.c, but when IOMMU is not enabled or we run
  * on a 32bit kernel this needs to be redone.
  * Unfortunately it is impossible to fix the aperture here because it's too late
  * to allocate that much memory. But at least error out cleanly instead of
@@ -775,7 +775,7 @@ static void __exit agp_amd64_cleanup(void)
 
 /* On AMD64 the PCI driver needs to initialize this driver early
    for the IOMMU, so it has to be called via a backdoor. */
-#ifndef CONFIG_GART_IOMMU
+#ifndef CONFIG_IOMMU
 module_init(agp_amd64_init);
 module_exit(agp_amd64_cleanup);
 #endif
index 35b0a6ebd3f5133075a1870065e7f100514068e1..7cea514e810aa955923b9d20e6ed63f17c9307ef 100644 (file)
@@ -104,8 +104,11 @@ static int aac_alloc_comm(struct aac_dev *dev, void **commaddr, unsigned long co
         * always true on real computers. It also has some slight problems
         * with the GART on x86-64. I've btw never tried DMA from PCI space
         * on this platform but don't be surprised if its problematic.
+        * [AK: something is very very wrong when a driver tests this symbol.
+        *  Someone should figure out what the comment writer really meant here and fix
+        *  the code. Or just remove that bad code. ]
         */
-#ifndef CONFIG_GART_IOMMU
+#ifndef CONFIG_IOMMU
        if ((num_physpages << (PAGE_SHIFT - 12)) <= AAC_MAX_HOSTPHYSMEMPAGES) {
                init->HostPhysMemPages = 
                        cpu_to_le32(num_physpages << (PAGE_SHIFT-12));
index 2db0620d544912a099181231bc75fc4dfd94976f..3374d34c4acdbe9a2bbf65b07db115a453c108eb 100644 (file)
@@ -52,7 +52,7 @@ extern int iommu_setup(char *opt);
  */
 #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys)
 
-#ifdef CONFIG_GART_IOMMU
+#ifdef CONFIG_IOMMU
 
 /*
  * x86-64 always supports DAC, but sometimes it is useful to force
index 8abf2a43c944dc937a845cc5870e4e98e41900ed..1064533e0959852fd19d3637a551fcb0aa64dfb8 100644 (file)
@@ -116,7 +116,7 @@ extern int skip_ioapic_setup;
 extern int acpi_ht;
 extern int acpi_disabled;
 
-#ifdef CONFIG_GART_IOMMU
+#ifdef CONFIG_IOMMU
 extern int fallback_aper_order;
 extern int fallback_aper_force;
 extern int iommu_aperture;