[PATCH] x86_64: Rename IOMMU option, fix help and mark option embedded.

- 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>
This commit is contained in:
Andi Kleen 2006-06-26 13:57:22 +02:00 committed by Linus Torvalds
parent 4d9bc79cd2
commit a813ce432f
11 changed files with 30 additions and 25 deletions

View file

@ -386,24 +386,26 @@ config HPET_EMULATE_RTC
bool "Provide RTC interrupt" bool "Provide RTC interrupt"
depends on HPET_TIMER && RTC=y depends on HPET_TIMER && RTC=y
config GART_IOMMU # Mark as embedded because too many people got it wrong.
bool "K8 GART IOMMU support" # The code disables itself when not needed.
config IOMMU
bool "IOMMU support" if EMBEDDED
default y default y
select SWIOTLB select SWIOTLB
select AGP select AGP
depends on PCI depends on PCI
help help
Support for hardware IOMMU in AMD's Opteron/Athlon64 Processors Support for full DMA access of devices with 32bit memory access only
and for the bounce buffering software IOMMU. on systems with more than 3GB. This is usually needed for USB,
Needed to run systems with more than 3GB of memory properly with sound, many IDE/SATA chipsets and some other devices.
32-bit PCI devices that do not support DAC (Double Address Cycle). Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART
The IOMMU can be turned off at runtime with the iommu=off parameter. based IOMMU and a software bounce buffer based IOMMU used on Intel
Normally the kernel will take the right choice by itself. systems and as fallback.
This option includes a driver for the AMD Opteron/Athlon64 IOMMU The code is only active when needed (enough memory and limited
northbridge and a software emulation used on other systems without device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified
hardware IOMMU. If unsure, say Y. too.
# need this always selected by GART_IOMMU for the VIA workaround # need this always selected by IOMMU for the VIA workaround
config SWIOTLB config SWIOTLB
bool bool
@ -503,7 +505,7 @@ config REORDER
config K8_NB config K8_NB
def_bool y def_bool y
depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA) depends on AGP_AMD64 || IOMMU || (PCI && NUMA)
endmenu endmenu

View file

@ -13,7 +13,7 @@ config DEBUG_RODATA
If in doubt, say "N". If in doubt, say "N".
config IOMMU_DEBUG config IOMMU_DEBUG
depends on GART_IOMMU && DEBUG_KERNEL depends on IOMMU && DEBUG_KERNEL
bool "Enable IOMMU debugging" bool "Enable IOMMU debugging"
help help
Force the IOMMU to on even when you have less than 4GB of Force the IOMMU to on even when you have less than 4GB of

View file

@ -28,7 +28,7 @@ obj-$(CONFIG_PM) += suspend.o
obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o
obj-$(CONFIG_CPU_FREQ) += cpufreq/ obj-$(CONFIG_CPU_FREQ) += cpufreq/
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 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_SWIOTLB) += pci-swiotlb.o
obj-$(CONFIG_KPROBES) += kprobes.o obj-$(CONFIG_KPROBES) += kprobes.o
obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o

View file

@ -319,7 +319,7 @@ void __init check_ioapic(void)
vendor &= 0xffff; vendor &= 0xffff;
switch (vendor) { switch (vendor) {
case PCI_VENDOR_ID_VIA: case PCI_VENDOR_ID_VIA:
#ifdef CONFIG_GART_IOMMU #ifdef CONFIG_IOMMU
if ((end_pfn > MAX_DMA32_PFN || if ((end_pfn > MAX_DMA32_PFN ||
force_iommu) && force_iommu) &&
!iommu_aperture_allowed) { !iommu_aperture_allowed) {

View file

@ -266,7 +266,7 @@ __init int iommu_setup(char *p)
swiotlb = 1; swiotlb = 1;
#endif #endif
#ifdef CONFIG_GART_IOMMU #ifdef CONFIG_IOMMU
gart_parse_options(p); gart_parse_options(p);
#endif #endif

View file

@ -702,7 +702,7 @@ void __init setup_arch(char **cmdline_p)
e820_setup_gap(); e820_setup_gap();
#ifdef CONFIG_GART_IOMMU #ifdef CONFIG_IOMMU
iommu_hole_init(); iommu_hole_init();
#endif #endif

View file

@ -55,9 +55,9 @@ config AGP_AMD
X on AMD Irongate, 761, and 762 chipsets. X on AMD Irongate, 761, and 762 chipsets.
config AGP_AMD64 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 depends on AGP && X86
default y if GART_IOMMU default y if IOMMU
help help
This option gives you AGP support for the GLX component of This option gives you AGP support for the GLX component of
X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs. X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs.

View 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 * W*s centric BIOS sometimes only set up the aperture in the AGP
* bridge, not the northbridge. On AMD64 this is handled early * 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. * on a 32bit kernel this needs to be redone.
* Unfortunately it is impossible to fix the aperture here because it's too late * 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 * 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 /* On AMD64 the PCI driver needs to initialize this driver early
for the IOMMU, so it has to be called via a backdoor. */ 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_init(agp_amd64_init);
module_exit(agp_amd64_cleanup); module_exit(agp_amd64_cleanup);
#endif #endif

View 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 * 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 * 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. * 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) { if ((num_physpages << (PAGE_SHIFT - 12)) <= AAC_MAX_HOSTPHYSMEMPAGES) {
init->HostPhysMemPages = init->HostPhysMemPages =
cpu_to_le32(num_physpages << (PAGE_SHIFT-12)); cpu_to_le32(num_physpages << (PAGE_SHIFT-12));

View file

@ -52,7 +52,7 @@ extern int iommu_setup(char *opt);
*/ */
#define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) #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 * x86-64 always supports DAC, but sometimes it is useful to force

View file

@ -116,7 +116,7 @@ extern int skip_ioapic_setup;
extern int acpi_ht; extern int acpi_ht;
extern int acpi_disabled; extern int acpi_disabled;
#ifdef CONFIG_GART_IOMMU #ifdef CONFIG_IOMMU
extern int fallback_aper_order; extern int fallback_aper_order;
extern int fallback_aper_force; extern int fallback_aper_force;
extern int iommu_aperture; extern int iommu_aperture;