From 38901f1c1cae241fd4e3c5e63fcc690b921734b1 Mon Sep 17 00:00:00 2001 From: Andi Kleen Date: Fri, 4 Oct 2013 14:37:56 -0700 Subject: x86/iommu: Don't make AMD_GART depend on EXPERT and default y The AMD_GART driver was made EXPERT/EMBEDDED a long time ago to avoid unbootable 64bit systems with 32bit only devices. This was before swiotlb was there, which does the job of this fallback today. SWIOTLB is always on, so systems should always boot. The drawback is that every system has to compile that driver in (it cannot be a module). Also: - Newer AMD CPUs (the APUs) don't seem to have AMD_GART support at all anymore. - Newer AMD platforms have a much better real IOMMU - The AMD GART driver was never very good (lots of overhead, e.g. in flushing due to some workarounds) and it's doubtful it's really better than SWIOTLB. - On older K8 systems it didn't even work with all chipsets. - The 32bit device bounce buffer case should be rare/ non performance critical these days anyways. - On non AMD systems it is not needed at all. So drop the EXPERT dependency on AMD_GART and remove the default y. The driver can be still compiled in, just it's an explicit decision now, and people who don't want it can unselect it. I also clarified the description a bit. This allows to save ~8K text on most modern x86-64 systems. Signed-off-by: Andi Kleen Acked-by: Borislav Petkov Link: http://lkml.kernel.org/r/1380922676-23007-1-git-send-email-andi@firstfloor.org Signed-off-by: Ingo Molnar diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index ee2fb9d..c9d2b81 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -756,17 +756,16 @@ config DMI BIOS code. config GART_IOMMU - bool "GART IOMMU support" if EXPERT - default y + bool "Old AMD GART IOMMU support" select SWIOTLB depends on X86_64 && PCI && AMD_NB ---help--- 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 hardware IOMMU and a software bounce buffer based IOMMU used - on Intel systems and as fallback. + Provides a driver for the older AMD Athlon64/Opteron/Turion/Sempron GART + based hardware IOMMU. + Newer systems typically have a better AMD IOMMU. The code is only active when needed (enough memory and limited device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified too. -- cgit v0.10.2 From ced3c42c9fcba049ec9c76c8461ac194cafb20ba Mon Sep 17 00:00:00 2001 From: Ingo Molnar Date: Sun, 6 Oct 2013 11:45:20 +0200 Subject: x86/iommu: Clean up the CONFIG_GART_IOMMU config option a bit Improve the explanation of this config option. Cc: Andi Kleen Cc: Borislav Petkov Link: http://lkml.kernel.org/n/tip-gUMmysvsbl3mccbyf6olmxqg@git.kernel.org Signed-off-by: Ingo Molnar diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index c9d2b81..7081958 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -760,15 +760,21 @@ config GART_IOMMU select SWIOTLB depends on X86_64 && PCI && AMD_NB ---help--- - 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 older AMD Athlon64/Opteron/Turion/Sempron GART - based hardware IOMMU. - Newer systems typically have a better AMD IOMMU. - The code is only active when needed (enough memory and limited - device) unless CONFIG_IOMMU_DEBUG or iommu=force is specified - too. + Provides a driver for older AMD Athlon64/Opteron/Turion/Sempron + GART based hardware IOMMUs. + + The GART supports full DMA access for devices with 32-bit access + limitations, on systems with more than 3 GB. This is usually needed + for USB, sound, many IDE/SATA chipsets and some other devices. + + Newer systems typically have a modern AMD IOMMU, supported via + the CONFIG_AMD_IOMMU=y config option. + + In normal configurations this driver is only active when needed: + there's more than 3 GB of memory and the system contains a + 32-bit limited device. + + If unsure, say Y. config CALGARY_IOMMU bool "IBM Calgary IOMMU support" -- cgit v0.10.2