This series of patches contains cleanups for the GART IOMMU implementation in Linux. It mostly renames symbols to make clear that they belong only to the GART and not to the implementations for other IOMMUs. It also makes some unnecessary exported functions static in the GART implementation. -
This patch renames the IOMMU config option to GART_IOMMU because in fact it
means the GART and not general support for an IOMMU on x86.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
arch/x86/kernel/Makefile_64 | 2 +-
arch/x86/kernel/early-quirks.c | 2 +-
arch/x86/kernel/pci-dma_64.c | 6 +++---
arch/x86_64/Kconfig | 4 ++--
arch/x86_64/Kconfig.debug | 2 +-
arch/x86_64/defconfig | 2 +-
drivers/char/agp/Kconfig | 4 ++--
drivers/char/agp/amd64-agp.c | 2 +-
drivers/usb/core/message.c | 2 +-
include/asm-x86/gart.h | 2 +-
include/asm-x86/pci_64.h | 2 +-
11 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/arch/x86/kernel/Makefile_64 b/arch/x86/kernel/Makefile_64
index dec06e7..02cfd08 100644
--- a/arch/x86/kernel/Makefile_64
+++ b/arch/x86/kernel/Makefile_64
@@ -29,7 +29,7 @@ obj-$(CONFIG_PM) += suspend_64.o
obj-$(CONFIG_HIBERNATION) += suspend_asm_64.o
obj-$(CONFIG_CPU_FREQ) += cpu/cpufreq/
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
-obj-$(CONFIG_IOMMU) += pci-gart_64.o aperture_64.o
+obj-$(CONFIG_GART_IOMMU) += pci-gart_64.o aperture_64.o
obj-$(CONFIG_CALGARY_IOMMU) += pci-calgary_64.o tce_64.o
obj-$(CONFIG_SWIOTLB) += pci-swiotlb_64.o
obj-$(CONFIG_KPROBES) += kprobes_64.o
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index d6e6e83..5330745 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -23,7 +23,7 @@
static void __init via_bugs(void)
{
-#ifdef CONFIG_IOMMU
+#ifdef CONFIG_GART_IOMMU
if ((end_pfn > MAX_DMA32_PFN || force_iommu) &&
!iommu_aperture_allowed) {
printk(KERN_INFO
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c
index 730339f..66b3dc5 100644
--- a/arch/x86/kernel/pci-dma_64.c
+++ b/arch/x86/kernel/pci-dma_64.c
@@ -275,7 +275,7 @@ __init int iommu_setup(char *p)
swiotlb = 1;
#endif
-#ifdef ...Acked-by: Muli Ben-Yehuda <muli@il.ibm.com> Cheers, Muli -- SYSTOR 2007 --- 1st Annual Haifa Systems and Storage Conference 2007 http://www.haifa.il.ibm.com/Workshops/systor2007/ Virtualization workshop: Oct 29th, 2007 | Storage workshop: Oct 30th, 2007 -
This patch makes some functions and variables static in pci-gart_64.c which are
not used somewhere else.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
arch/x86/kernel/pci-gart_64.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index 0e72abf..7097ef8 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -36,11 +36,11 @@
#include <asm/dma.h>
#include <asm/k8.h>
-unsigned long iommu_bus_base; /* GART remapping area (physical) */
+static unsigned long iommu_bus_base; /* GART remapping area (physical) */
static unsigned long iommu_size; /* size of remapping area bytes */
static unsigned long iommu_pages; /* .. and in pages */
-u32 *iommu_gatt_base; /* Remapping table */
+static u32 *iommu_gatt_base; /* Remapping table */
/* If this is disabled the IOMMU will use an optimized flushing strategy
of only flushing when an mapping is reused. With it true the GART is flushed
@@ -135,8 +135,8 @@ static void flush_gart(void)
/* Debugging aid for drivers that don't free their IOMMU tables */
static void **iommu_leak_tab;
static int leak_trace;
-int iommu_leak_pages = 20;
-void dump_leak(void)
+static int iommu_leak_pages = 20;
+static void dump_leak(void)
{
int i;
static int dump;
--
1.5.2.5
-
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com> Cheers, Muli -- SYSTOR 2007 --- 1st Annual Haifa Systems and Storage Conference 2007 http://www.haifa.il.ibm.com/Workshops/systor2007/ Virtualization workshop: Oct 29th, 2007 | Storage workshop: Oct 30th, 2007 -
This patch renames the 4 symbols iommu_hole_init(), iommu_aperture,
iommu_aperture_allowed, iommu_aperture_disabled.
It replaces the iommu_ with gart_ in the symbol name. All these symbols are
only used for the GART implementation of IOMMUs.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
arch/x86/kernel/aperture_64.c | 12 ++++++------
arch/x86/kernel/early-quirks.c | 4 ++--
arch/x86/kernel/pci-dma_64.c | 2 +-
arch/x86/kernel/pci-gart_64.c | 8 ++++----
include/asm-x86/gart.h | 12 ++++++------
5 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 70c854f..3423d00 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -25,9 +25,9 @@
#include <asm/dma.h>
#include <asm/k8.h>
-int iommu_aperture;
-int iommu_aperture_disabled __initdata = 0;
-int iommu_aperture_allowed __initdata = 0;
+int gart_aperture;
+int gart_aperture_disabled __initdata = 0;
+int gart_aperture_allowed __initdata = 0;
int fallback_aper_order __initdata = 1; /* 64MB */
int fallback_aper_force __initdata = 0;
@@ -204,14 +204,14 @@ static __u32 __init search_agp_bridge(u32 *order, int *valid_agp)
return 0;
}
-void __init iommu_hole_init(void)
+void __init gart_hole_init(void)
{
int fix, num;
u32 aper_size, aper_alloc = 0, aper_order = 0, last_aper_order = 0;
u64 aper_base, last_aper_base = 0;
int valid_agp = 0;
- if (iommu_aperture_disabled || !fix_aperture || !early_pci_allowed())
+ if (gart_aperture_disabled || !fix_aperture || !early_pci_allowed())
return;
printk(KERN_INFO "Checking aperture...\n");
@@ -222,7 +222,7 @@ void __init iommu_hole_init(void)
continue;
iommu_detected = 1;
- iommu_aperture = 1;
+ gart_aperture = 1;
aper_order = (read_pci_config(0, num, 3, 0x90) >> 1) & 7;
aper_size = (32 * 1024 * 1024) << aper_order;
diff --git a/arch/x86/kernel/early-quirks.c ...That makes it still potentially conflicting with the AGP GART code. -Andi -
Maybe yes. But the AGP GART driver conflicts with the GART IOMMU config
option. So I don't see a problem here.
Joerg
--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
-
On Tue, Oct 23, 2007 at 07:47:11PM +0200, Joerg Roedel wrote: > On Tue, Oct 23, 2007 at 07:43:47PM +0200, Andi Kleen wrote: > > On Tuesday 23 October 2007 19:41:33 Joerg Roedel wrote: > > > This patch renames the 4 symbols iommu_hole_init(), iommu_aperture, > > > iommu_aperture_allowed, iommu_aperture_disabled. > > > > > > It replaces the iommu_ with gart_ in the symbol name. All these symbols are > > > only used for the GART implementation of IOMMUs. > > > > That makes it still potentially conflicting with the AGP GART code. > > Maybe yes. But the AGP GART driver conflicts with the GART IOMMU config > option. So I don't see a problem here. It shouldn't. It's perfectly feasible to use both IOMMU and GART for AGP at the same time. Dave -- http://www.codemonkey.org.uk -
And even if did, it's a big difference between being not able to compile in two drivers in the same kernel and not being able to use them at the same time. Now, it looks to me the AGP GART code mostly calls itself agpgart. -hpa -
You can already compile them in all. The functions are not really conflicting -- otherwise allyesconfig would not work. I think his goal was to get an prefix that describes the module uniquely. gart_* clearly does not fulfill that criteria. So basically he's replacing an ambigious-with-other-IOMMU-implementations prefix with an ambigious-with-AGP prefix. Seems like a rather pointless change. -And -
Ok, sorry, right. I misunderstood the Kconfig entry for the AGP GART
driver. I will change the prefix to gart_iommu and resubmit.
Joerg
--
| AMD Saxony Limited Liability Company & Co. KG
Operating | Wilschdorfer Landstr. 101, 01109 Dresden, Germany
System | Register Court Dresden: HRA 4896
Research | General Partner authorized to represent:
Center | AMD Saxony LLC (Wilmington, Delaware, US)
| General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy
-
Not at all - the present situation where GART specific code masquerades as generic IOMMU code is confusing. I've heard from more than one person who was confused by "how come I can enable an IOMMU while CONFIG_IOMMU is off?" and "how come some iommu_xxx options (which were really gart options...) don't actually affect the (Calgary) IOMMU"? If the variable names clash the correct solution is to s/gart/agpgart/ in the AGP code and then continue renaming gart specific bits 'gart' rather than 'iommu'. Cheers, Muli -- SYSTOR 2007 --- 1st Annual Haifa Systems and Storage Conference 2007 http://www.haifa.il.ibm.com/Workshops/systor2007/ Virtualization workshop: Oct 29th, 2007 | Storage workshop: Oct 30th, 2007 -
This patch renames the include file asm-x86/iommu.h to asm-x86/gart.h to make
clear to which IOMMU implementation it belongs. The patch also adds "GART" to
the Kconfig line.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
arch/x86/kernel/aperture_64.c | 2 +-
arch/x86/kernel/early-quirks.c | 4 ++--
arch/x86/kernel/pci-calgary_64.c | 2 +-
arch/x86/kernel/pci-dma_64.c | 2 +-
arch/x86/kernel/pci-gart_64.c | 2 +-
arch/x86/kernel/pci-nommu_64.c | 2 +-
arch/x86/kernel/pci-swiotlb_64.c | 2 +-
arch/x86/kernel/reboot_64.c | 2 +-
arch/x86_64/Kconfig | 2 +-
drivers/pci/intel-iommu.c | 2 +-
include/asm-x86/{iommu.h => gart.h} | 4 ++--
11 files changed, 13 insertions(+), 13 deletions(-)
rename include/asm-x86/{iommu.h => gart.h} (92%)
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c
index 8f681ca..70c854f 100644
--- a/arch/x86/kernel/aperture_64.c
+++ b/arch/x86/kernel/aperture_64.c
@@ -20,7 +20,7 @@
#include <linux/ioport.h>
#include <asm/e820.h>
#include <asm/io.h>
-#include <asm/iommu.h>
+#include <asm/gart.h>
#include <asm/pci-direct.h>
#include <asm/dma.h>
#include <asm/k8.h>
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index dc34acb..d6e6e83 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -17,8 +17,8 @@
#include <asm/io_apic.h>
#include <asm/apic.h>
-#ifdef CONFIG_IOMMU
-#include <asm/iommu.h>
+#ifdef CONFIG_GART_IOMMU
+#include <asm/gart.h>
#endif
static void __init via_bugs(void)
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
index 1a20fe3..6bf1f71 100644
--- a/arch/x86/kernel/pci-calgary_64.c
+++ b/arch/x86/kernel/pci-calgary_64.c
@@ -36,7 +36,7 @@
#include <linux/pci.h>
#include <linux/delay.h>
#include <linux/scatterlist.h>
-#include <asm/iommu.h>
+#include <asm/gart.h>
#include ...