aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2007-08-16 23:57:39 -0400
committerPaul Mackerras <paulus@samba.org>2007-08-25 02:58:26 -0400
commitdfa70f81a05fa857fb1428ac2a88da84ecd50dd9 (patch)
treec1ef83137c6d98dfc41701cf7e9c86b9fdf8d5e7 /arch/powerpc
parent1a8f46100b657f533ce677e79bc27c6794c91c46 (diff)
[POWERPC] pasemi: Another IOMMU bugfix for 64K PAGE_SIZE
More fallout from the switch from PAGE_SIZE based IOMMU to the native page size for the driver. By pure luck it happened to work most of the time, since we end up invalidating the wrong entries in the TLB. Signed-off-by: Olof Johansson <olof@lixom.net> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/platforms/pasemi/iommu.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/powerpc/platforms/pasemi/iommu.c b/arch/powerpc/platforms/pasemi/iommu.c
index f33b21b9f5d4..9014d55c717b 100644
--- a/arch/powerpc/platforms/pasemi/iommu.c
+++ b/arch/powerpc/platforms/pasemi/iommu.c
@@ -93,7 +93,7 @@ static void iobmap_build(struct iommu_table *tbl, long index,
93 93
94 pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr); 94 pr_debug("iobmap: build at: %lx, %lx, addr: %lx\n", index, npages, uaddr);
95 95
96 bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; 96 bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT;
97 97
98 ip = ((u32 *)tbl->it_base) + index; 98 ip = ((u32 *)tbl->it_base) + index;
99 99
@@ -118,7 +118,7 @@ static void iobmap_free(struct iommu_table *tbl, long index,
118 118
119 pr_debug("iobmap: free at: %lx, %lx\n", index, npages); 119 pr_debug("iobmap: free at: %lx, %lx\n", index, npages);
120 120
121 bus_addr = (tbl->it_offset + index) << PAGE_SHIFT; 121 bus_addr = (tbl->it_offset + index) << IOBMAP_PAGE_SHIFT;
122 122
123 ip = ((u32 *)tbl->it_base) + index; 123 ip = ((u32 *)tbl->it_base) + index;
124 124
@@ -137,7 +137,7 @@ static void iommu_table_iobmap_setup(void)
137 iommu_table_iobmap.it_busno = 0; 137 iommu_table_iobmap.it_busno = 0;
138 iommu_table_iobmap.it_offset = 0; 138 iommu_table_iobmap.it_offset = 0;
139 /* it_size is in number of entries */ 139 /* it_size is in number of entries */
140 iommu_table_iobmap.it_size = 0x80000000 >> PAGE_SHIFT; 140 iommu_table_iobmap.it_size = 0x80000000 >> IOBMAP_PAGE_SHIFT;
141 141
142 /* Initialize the common IOMMU code */ 142 /* Initialize the common IOMMU code */
143 iommu_table_iobmap.it_base = (unsigned long)iob_l2_base; 143 iommu_table_iobmap.it_base = (unsigned long)iob_l2_base;