linux/arch
Linas Vepstas 5d2efba64b [POWERPC] Use 4kB iommu pages even on 64kB-page systems
The 10Gigabit ethernet device drivers appear to be able to chew
up all 256MB of TCE mappings on pSeries systems, as evidenced by
numerous error messages:

 iommu_alloc failed, tbl c0000000010d5c48 vaddr c0000000d875eff0 npages 1

Some experimentation indicates that this is essentially because
one 1500 byte ethernet MTU gets mapped as a 64K DMA region when
the large 64K pages are enabled. Thus, it doesn't take much to
exhaust all of the available DMA mappings for a high-speed card.

This patch changes the iommu allocator to work with its own
unique, distinct page size. Although the patch is long, its
actually quite simple: it just #defines a distinct IOMMU_PAGE_SIZE
and then uses this in all the places that matter.

As a side effect, it also dramatically improves network performance
on platforms with H-calls on iommu translation inserts/removes (since
we no longer call it 16 times for a 1500 bytes packet when the iommu HW
is still 4k).

In the future, we might want to make the IOMMU_PAGE_SIZE a variable
in the iommu_table instance, thus allowing support for different HW
page sizes in the iommu itself.

Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Olof Johansson <olof@lixom.net>
Acked-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-11-01 14:52:48 +11:00
..
alpha [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
arm [ARM] 3914/1: [Jornada7xx] - Typo Fix in cpu-sa1110.c (b != B) 2006-10-29 21:52:29 +00:00
arm26 [PATCH] remove bogus arch-specific syscall exports 2006-10-11 11:17:07 -07:00
avr32 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
cris [PATCH] cryptocop: double spin_lock_irqsave() 2006-10-30 12:08:41 -08:00
frv [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
h8300 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
i386 [PATCH] APM: URL of APM 1.2 specs has changed 2006-10-30 12:08:42 -08:00
ia64 Merge branch 'release' of master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6 2006-10-31 17:03:50 -08:00
m32r [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
m68k [PATCH] m68k: consolidate initcall sections 2006-10-29 12:07:41 -08:00
m68knommu [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
mips [MIPS] Fixup migration to GENERIC_TIME 2006-10-31 20:13:23 +00:00
parisc [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
powerpc [POWERPC] Use 4kB iommu pages even on 64kB-page systems 2006-11-01 14:52:48 +11:00
ppc [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
s390 Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6 2006-10-28 11:38:39 -07:00
sh sh: Titan defconfig update. 2006-10-31 12:53:29 +09:00
sh64 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
sparc Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 2006-10-27 15:36:21 -07:00
sparc64 [SPARC64]: Add some missing print_symbol() calls. 2006-10-30 19:33:33 -08:00
um [PATCH] uml: add _text definition to linker scripts 2006-10-31 08:07:00 -08:00
v850 [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00
x86_64 [PATCH] fix i386 regparm=3 RT signal handlers on x86_64 2006-10-30 12:12:21 -08:00
xtensa [PATCH] vmlinux.lds: consolidate initcall sections 2006-10-27 15:34:51 -07:00