diff options
author | Andi Kleen <ak@suse.de> | 2006-06-26 07:57:22 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 13:48:17 -0400 |
commit | a813ce432f27c4f5011c7b5ac9d2bbbfeb41d9a7 (patch) | |
tree | 377a1aeb76547faf06ecd93b9da9b4c90817b2d4 | |
parent | 4d9bc79cd28b779610d9590b3a96a28a0f64a25a (diff) |
[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>
-rw-r--r-- | arch/x86_64/Kconfig | 30 | ||||
-rw-r--r-- | arch/x86_64/Kconfig.debug | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/Makefile | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/pci-dma.c | 2 | ||||
-rw-r--r-- | arch/x86_64/kernel/setup.c | 2 | ||||
-rw-r--r-- | drivers/char/agp/Kconfig | 4 | ||||
-rw-r--r-- | drivers/char/agp/amd64-agp.c | 4 | ||||
-rw-r--r-- | drivers/scsi/aacraid/comminit.c | 5 | ||||
-rw-r--r-- | include/asm-x86_64/pci.h | 2 | ||||
-rw-r--r-- | include/asm-x86_64/proto.h | 2 |
11 files changed, 31 insertions, 26 deletions
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig index fc75275d8c72..e8c52a1eec06 100644 --- a/arch/x86_64/Kconfig +++ b/arch/x86_64/Kconfig | |||
@@ -386,24 +386,26 @@ config HPET_EMULATE_RTC | |||
386 | bool "Provide RTC interrupt" | 386 | bool "Provide RTC interrupt" |
387 | depends on HPET_TIMER && RTC=y | 387 | depends on HPET_TIMER && RTC=y |
388 | 388 | ||
389 | config GART_IOMMU | 389 | # Mark as embedded because too many people got it wrong. |
390 | bool "K8 GART IOMMU support" | 390 | # The code disables itself when not needed. |
391 | config IOMMU | ||
392 | bool "IOMMU support" if EMBEDDED | ||
391 | default y | 393 | default y |
392 | select SWIOTLB | 394 | select SWIOTLB |
393 | select AGP | 395 | select AGP |
394 | depends on PCI | 396 | depends on PCI |
395 | help | 397 | help |
396 | Support for hardware IOMMU in AMD's Opteron/Athlon64 Processors | 398 | Support for full DMA access of devices with 32bit memory access only |
397 | and for the bounce buffering software IOMMU. | 399 | on systems with more than 3GB. This is usually needed for USB, |
398 | Needed to run systems with more than 3GB of memory properly with | 400 | sound, many IDE/SATA chipsets and some other devices. |
399 | 32-bit PCI devices that do not support DAC (Double Address Cycle). | 401 | Provides a driver for the AMD Athlon64/Opteron/Turion/Sempron GART |
400 | The IOMMU can be turned off at runtime with the iommu=off parameter. | 402 | based IOMMU and a software bounce buffer based IOMMU used on Intel |
401 | Normally the kernel will take the right choice by itself. | 403 | systems and as fallback. |
402 | This option includes a driver for the AMD Opteron/Athlon64 IOMMU | 404 | The code is only active when needed (enough memory and limited |
403 | northbridge and a software emulation used on other systems without | 405 | device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified |
404 | hardware IOMMU. If unsure, say Y. | 406 | too. |
405 | 407 | ||
406 | # need this always selected by GART_IOMMU for the VIA workaround | 408 | # need this always selected by IOMMU for the VIA workaround |
407 | config SWIOTLB | 409 | config SWIOTLB |
408 | bool | 410 | bool |
409 | 411 | ||
@@ -503,7 +505,7 @@ config REORDER | |||
503 | 505 | ||
504 | config K8_NB | 506 | config K8_NB |
505 | def_bool y | 507 | def_bool y |
506 | depends on AGP_AMD64 || GART_IOMMU || (PCI && NUMA) | 508 | depends on AGP_AMD64 || IOMMU || (PCI && NUMA) |
507 | 509 | ||
508 | endmenu | 510 | endmenu |
509 | 511 | ||
diff --git a/arch/x86_64/Kconfig.debug b/arch/x86_64/Kconfig.debug index ea31b4c62105..0226f08be874 100644 --- a/arch/x86_64/Kconfig.debug +++ b/arch/x86_64/Kconfig.debug | |||
@@ -13,7 +13,7 @@ config DEBUG_RODATA | |||
13 | If in doubt, say "N". | 13 | If in doubt, say "N". |
14 | 14 | ||
15 | config IOMMU_DEBUG | 15 | config IOMMU_DEBUG |
16 | depends on GART_IOMMU && DEBUG_KERNEL | 16 | depends on IOMMU && DEBUG_KERNEL |
17 | bool "Enable IOMMU debugging" | 17 | bool "Enable IOMMU debugging" |
18 | help | 18 | help |
19 | Force the IOMMU to on even when you have less than 4GB of | 19 | Force the IOMMU to on even when you have less than 4GB of |
diff --git a/arch/x86_64/kernel/Makefile b/arch/x86_64/kernel/Makefile index f927d11065fe..fd106bdddd6d 100644 --- a/arch/x86_64/kernel/Makefile +++ b/arch/x86_64/kernel/Makefile | |||
@@ -28,7 +28,7 @@ obj-$(CONFIG_PM) += suspend.o | |||
28 | obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o | 28 | obj-$(CONFIG_SOFTWARE_SUSPEND) += suspend_asm.o |
29 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ | 29 | obj-$(CONFIG_CPU_FREQ) += cpufreq/ |
30 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 30 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
31 | obj-$(CONFIG_GART_IOMMU) += pci-gart.o aperture.o | 31 | obj-$(CONFIG_IOMMU) += pci-gart.o aperture.o |
32 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o | 32 | obj-$(CONFIG_SWIOTLB) += pci-swiotlb.o |
33 | obj-$(CONFIG_KPROBES) += kprobes.o | 33 | obj-$(CONFIG_KPROBES) += kprobes.o |
34 | obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o | 34 | obj-$(CONFIG_X86_PM_TIMER) += pmtimer.o |
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index 519cd4e6f9e7..c768d8a036d0 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -319,7 +319,7 @@ void __init check_ioapic(void) | |||
319 | vendor &= 0xffff; | 319 | vendor &= 0xffff; |
320 | switch (vendor) { | 320 | switch (vendor) { |
321 | case PCI_VENDOR_ID_VIA: | 321 | case PCI_VENDOR_ID_VIA: |
322 | #ifdef CONFIG_GART_IOMMU | 322 | #ifdef CONFIG_IOMMU |
323 | if ((end_pfn > MAX_DMA32_PFN || | 323 | if ((end_pfn > MAX_DMA32_PFN || |
324 | force_iommu) && | 324 | force_iommu) && |
325 | !iommu_aperture_allowed) { | 325 | !iommu_aperture_allowed) { |
diff --git a/arch/x86_64/kernel/pci-dma.c b/arch/x86_64/kernel/pci-dma.c index 117bcebe9ebc..33926c367250 100644 --- a/arch/x86_64/kernel/pci-dma.c +++ b/arch/x86_64/kernel/pci-dma.c | |||
@@ -266,7 +266,7 @@ __init int iommu_setup(char *p) | |||
266 | swiotlb = 1; | 266 | swiotlb = 1; |
267 | #endif | 267 | #endif |
268 | 268 | ||
269 | #ifdef CONFIG_GART_IOMMU | 269 | #ifdef CONFIG_IOMMU |
270 | gart_parse_options(p); | 270 | gart_parse_options(p); |
271 | #endif | 271 | #endif |
272 | 272 | ||
diff --git a/arch/x86_64/kernel/setup.c b/arch/x86_64/kernel/setup.c index 9dadb9a1db2a..816203d57e11 100644 --- a/arch/x86_64/kernel/setup.c +++ b/arch/x86_64/kernel/setup.c | |||
@@ -702,7 +702,7 @@ void __init setup_arch(char **cmdline_p) | |||
702 | 702 | ||
703 | e820_setup_gap(); | 703 | e820_setup_gap(); |
704 | 704 | ||
705 | #ifdef CONFIG_GART_IOMMU | 705 | #ifdef CONFIG_IOMMU |
706 | iommu_hole_init(); | 706 | iommu_hole_init(); |
707 | #endif | 707 | #endif |
708 | 708 | ||
diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index 46685a540772..9826a399fa02 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig | |||
@@ -55,9 +55,9 @@ config AGP_AMD | |||
55 | X on AMD Irongate, 761, and 762 chipsets. | 55 | X on AMD Irongate, 761, and 762 chipsets. |
56 | 56 | ||
57 | config AGP_AMD64 | 57 | config AGP_AMD64 |
58 | tristate "AMD Opteron/Athlon64 on-CPU GART support" if !GART_IOMMU | 58 | tristate "AMD Opteron/Athlon64 on-CPU GART support" if !IOMMU |
59 | depends on AGP && X86 | 59 | depends on AGP && X86 |
60 | default y if GART_IOMMU | 60 | default y if IOMMU |
61 | help | 61 | help |
62 | This option gives you AGP support for the GLX component of | 62 | This option gives you AGP support for the GLX component of |
63 | X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs. | 63 | X using the on-CPU northbridge of the AMD Athlon64/Opteron CPUs. |
diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index 229d015757f9..f690ee8cb732 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c | |||
@@ -292,7 +292,7 @@ static int __devinit aperture_valid(u64 aper, u32 size) | |||
292 | /* | 292 | /* |
293 | * W*s centric BIOS sometimes only set up the aperture in the AGP | 293 | * W*s centric BIOS sometimes only set up the aperture in the AGP |
294 | * bridge, not the northbridge. On AMD64 this is handled early | 294 | * bridge, not the northbridge. On AMD64 this is handled early |
295 | * in aperture.c, but when GART_IOMMU is not enabled or we run | 295 | * in aperture.c, but when IOMMU is not enabled or we run |
296 | * on a 32bit kernel this needs to be redone. | 296 | * on a 32bit kernel this needs to be redone. |
297 | * Unfortunately it is impossible to fix the aperture here because it's too late | 297 | * Unfortunately it is impossible to fix the aperture here because it's too late |
298 | * to allocate that much memory. But at least error out cleanly instead of | 298 | * to allocate that much memory. But at least error out cleanly instead of |
@@ -775,7 +775,7 @@ static void __exit agp_amd64_cleanup(void) | |||
775 | 775 | ||
776 | /* On AMD64 the PCI driver needs to initialize this driver early | 776 | /* On AMD64 the PCI driver needs to initialize this driver early |
777 | for the IOMMU, so it has to be called via a backdoor. */ | 777 | for the IOMMU, so it has to be called via a backdoor. */ |
778 | #ifndef CONFIG_GART_IOMMU | 778 | #ifndef CONFIG_IOMMU |
779 | module_init(agp_amd64_init); | 779 | module_init(agp_amd64_init); |
780 | module_exit(agp_amd64_cleanup); | 780 | module_exit(agp_amd64_cleanup); |
781 | #endif | 781 | #endif |
diff --git a/drivers/scsi/aacraid/comminit.c b/drivers/scsi/aacraid/comminit.c index 35b0a6ebd3f5..7cea514e810a 100644 --- a/drivers/scsi/aacraid/comminit.c +++ b/drivers/scsi/aacraid/comminit.c | |||
@@ -104,8 +104,11 @@ static int aac_alloc_comm(struct aac_dev *dev, void **commaddr, unsigned long co | |||
104 | * always true on real computers. It also has some slight problems | 104 | * always true on real computers. It also has some slight problems |
105 | * with the GART on x86-64. I've btw never tried DMA from PCI space | 105 | * with the GART on x86-64. I've btw never tried DMA from PCI space |
106 | * on this platform but don't be surprised if its problematic. | 106 | * on this platform but don't be surprised if its problematic. |
107 | * [AK: something is very very wrong when a driver tests this symbol. | ||
108 | * Someone should figure out what the comment writer really meant here and fix | ||
109 | * the code. Or just remove that bad code. ] | ||
107 | */ | 110 | */ |
108 | #ifndef CONFIG_GART_IOMMU | 111 | #ifndef CONFIG_IOMMU |
109 | if ((num_physpages << (PAGE_SHIFT - 12)) <= AAC_MAX_HOSTPHYSMEMPAGES) { | 112 | if ((num_physpages << (PAGE_SHIFT - 12)) <= AAC_MAX_HOSTPHYSMEMPAGES) { |
110 | init->HostPhysMemPages = | 113 | init->HostPhysMemPages = |
111 | cpu_to_le32(num_physpages << (PAGE_SHIFT-12)); | 114 | cpu_to_le32(num_physpages << (PAGE_SHIFT-12)); |
diff --git a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h index 2db0620d5449..3374d34c4acd 100644 --- a/include/asm-x86_64/pci.h +++ b/include/asm-x86_64/pci.h | |||
@@ -52,7 +52,7 @@ extern int iommu_setup(char *opt); | |||
52 | */ | 52 | */ |
53 | #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) | 53 | #define PCI_DMA_BUS_IS_PHYS (dma_ops->is_phys) |
54 | 54 | ||
55 | #ifdef CONFIG_GART_IOMMU | 55 | #ifdef CONFIG_IOMMU |
56 | 56 | ||
57 | /* | 57 | /* |
58 | * x86-64 always supports DAC, but sometimes it is useful to force | 58 | * x86-64 always supports DAC, but sometimes it is useful to force |
diff --git a/include/asm-x86_64/proto.h b/include/asm-x86_64/proto.h index 8abf2a43c944..1064533e0959 100644 --- a/include/asm-x86_64/proto.h +++ b/include/asm-x86_64/proto.h | |||
@@ -116,7 +116,7 @@ extern int skip_ioapic_setup; | |||
116 | extern int acpi_ht; | 116 | extern int acpi_ht; |
117 | extern int acpi_disabled; | 117 | extern int acpi_disabled; |
118 | 118 | ||
119 | #ifdef CONFIG_GART_IOMMU | 119 | #ifdef CONFIG_IOMMU |
120 | extern int fallback_aper_order; | 120 | extern int fallback_aper_order; |
121 | extern int fallback_aper_force; | 121 | extern int fallback_aper_force; |
122 | extern int iommu_aperture; | 122 | extern int iommu_aperture; |