aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2008-09-18 09:23:43 -0400
committerIngo Molnar <mingo@elte.hu>2008-09-19 06:59:06 -0400
commit2842e5bf3115193f05dc9dac20f940e7abf44c1a (patch)
tree31461a4fb45db1868f4bfb9f99251db7a5ce6d33 /arch
parent270cab2426cdc6307725e4f1f46ecf8ab8e69193 (diff)
x86: move GART TLB flushing options to generic code
The GART currently implements the iommu=[no]fullflush command line parameters which influence its IO/TLB flushing strategy. This patch makes these parameters generic so that they can be used by the AMD IOMMU too. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/pci-dma.c13
-rw-r--r--arch/x86/kernel/pci-gart_64.c13
2 files changed, 13 insertions, 13 deletions
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c
index 0a1408abcc62..d2f2c0158dc1 100644
--- a/arch/x86/kernel/pci-dma.c
+++ b/arch/x86/kernel/pci-dma.c
@@ -16,6 +16,15 @@ EXPORT_SYMBOL(dma_ops);
16 16
17static int iommu_sac_force __read_mostly; 17static int iommu_sac_force __read_mostly;
18 18
19/*
20 * If this is disabled the IOMMU will use an optimized flushing strategy
21 * of only flushing when an mapping is reused. With it true the GART is
22 * flushed for every mapping. Problem is that doing the lazy flush seems
23 * to trigger bugs with some popular PCI cards, in particular 3ware (but
24 * has been also also seen with Qlogic at least).
25 */
26int iommu_fullflush;
27
19#ifdef CONFIG_IOMMU_DEBUG 28#ifdef CONFIG_IOMMU_DEBUG
20int panic_on_overflow __read_mostly = 1; 29int panic_on_overflow __read_mostly = 1;
21int force_iommu __read_mostly = 1; 30int force_iommu __read_mostly = 1;
@@ -171,6 +180,10 @@ static __init int iommu_setup(char *p)
171 } 180 }
172 if (!strncmp(p, "nomerge", 7)) 181 if (!strncmp(p, "nomerge", 7))
173 iommu_merge = 0; 182 iommu_merge = 0;
183 if (!strncmp(p, "fullflush", 8))
184 iommu_fullflush = 1;
185 if (!strncmp(p, "nofullflush", 11))
186 iommu_fullflush = 0;
174 if (!strncmp(p, "forcesac", 8)) 187 if (!strncmp(p, "forcesac", 8))
175 iommu_sac_force = 1; 188 iommu_sac_force = 1;
176 if (!strncmp(p, "allowdac", 8)) 189 if (!strncmp(p, "allowdac", 8))
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index 9739d5682093..508ef470b27f 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -45,15 +45,6 @@ static unsigned long iommu_pages; /* .. and in pages */
45 45
46static u32 *iommu_gatt_base; /* Remapping table */ 46static u32 *iommu_gatt_base; /* Remapping table */
47 47
48/*
49 * If this is disabled the IOMMU will use an optimized flushing strategy
50 * of only flushing when an mapping is reused. With it true the GART is
51 * flushed for every mapping. Problem is that doing the lazy flush seems
52 * to trigger bugs with some popular PCI cards, in particular 3ware (but
53 * has been also also seen with Qlogic at least).
54 */
55int iommu_fullflush = 1;
56
57/* Allocation bitmap for the remapping area: */ 48/* Allocation bitmap for the remapping area: */
58static DEFINE_SPINLOCK(iommu_bitmap_lock); 49static DEFINE_SPINLOCK(iommu_bitmap_lock);
59/* Guarded by iommu_bitmap_lock: */ 50/* Guarded by iommu_bitmap_lock: */
@@ -901,10 +892,6 @@ void __init gart_parse_options(char *p)
901#endif 892#endif
902 if (isdigit(*p) && get_option(&p, &arg)) 893 if (isdigit(*p) && get_option(&p, &arg))
903 iommu_size = arg; 894 iommu_size = arg;
904 if (!strncmp(p, "fullflush", 8))
905 iommu_fullflush = 1;
906 if (!strncmp(p, "nofullflush", 11))
907 iommu_fullflush = 0;
908 if (!strncmp(p, "noagp", 5)) 895 if (!strncmp(p, "noagp", 5))
909 no_agp = 1; 896 no_agp = 1;
910 if (!strncmp(p, "noaperture", 10)) 897 if (!strncmp(p, "noaperture", 10))