linux/arch/powerpc/platforms/cell
Anton Blanchard b4c3a8729a powerpc/iommu: Implement IOMMU pools to improve multiqueue adapter performance
At the moment all queues in a multiqueue adapter will serialise
against the IOMMU table lock. This is proving to be a big issue,
especially with 10Gbit ethernet.

This patch creates 4 pools and tries to spread the load across
them. If the table is under 1GB in size we revert back to the
original behaviour of 1 pool and 1 largealloc pool.

We create a hash to map CPUs to pools. Since we prefer interrupts to
be affinitised to primary CPUs, without some form of hashing we are
very likely to end up using the same pool. As an example, POWER7
has 4 way SMT and with 4 pools all primary threads will map to the
same pool.

The largealloc pool is reduced from 1/2 to 1/4 of the space to
partially offset the overhead of breaking the table up into pools.

Some performance numbers were obtained with a Chelsio T3 adapter on
two POWER7 boxes, running a 100 session TCP round robin test.

Performance improved 69% with this patch applied.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2012-07-03 14:14:48 +10:00
..
spufs vfs: Rename end_writeback() to clear_inode() 2012-05-06 13:43:41 +08:00
axon_msi.c powerpc/irqdomain: Fix broken NR_IRQ references 2012-04-30 10:45:26 +10:00
beat_htab.c powerpc: Random little legacy iSeries removal tidy ups 2012-03-28 11:33:23 +11:00
beat_hvCall.S [POWERPC] celleb: Move files for Beat hvcall interfaces 2008-04-24 21:08:13 +10:00
beat_interrupt.c powerpc/irqdomain: Fix broken NR_IRQ references 2012-04-30 10:45:26 +10:00
beat_interrupt.h powerpc: Remove stubbed beat smp support 2011-05-19 15:30:59 +10:00
beat_iommu.c powerpc/cell: Beat dma ops cleanup 2010-11-29 15:48:20 +11:00
beat_spu_priv1.c powerpc: remove non-required uses of include <linux/module.h> 2011-10-31 19:30:44 -04:00
beat_syscall.h [POWERPC] celleb: Move files for Beat hvcall interfaces 2008-04-24 21:08:13 +10:00
beat_udbg.c powerpc/cell: Use correct types in beat files 2009-01-08 16:25:16 +11:00
beat_wrapper.h powerpc: cell/beat_wrapper.h is implicitly using memcpy functions 2011-10-31 19:30:40 -04:00
beat.c powerpc/irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
beat.h [POWERPC] celleb: Move miscellaneous files for Beat 2008-04-24 21:08:14 +10:00
cbe_cpufreq_pervasive.c powerpc/cell: local_irq_save takes an unsigned long 2009-01-08 16:25:13 +11:00
cbe_cpufreq_pmi.c powerpc: Fix up modules that should be including module.h 2011-10-31 19:30:38 -04:00
cbe_cpufreq.c powerpc: Fix up modules that should be including module.h 2011-10-31 19:30:38 -04:00
cbe_cpufreq.h
cbe_powerbutton.c powerpc: Fix up modules that should be including module.h 2011-10-31 19:30:38 -04:00
cbe_regs.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
cbe_thermal.c cpu: convert 'cpu' and 'machinecheck' sysdev_class to a regular subsystem 2011-12-21 14:29:42 -08:00
celleb_pci.c powerpc: Remove alloc_maybe_bootmem for zalloc version 2011-05-19 15:30:57 +10:00
celleb_pci.h powerpc/pci: Move IO workarounds to the common kernel dir 2011-04-27 14:18:29 +10:00
celleb_scc_epci.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
celleb_scc_pciex.c powerpc/irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
celleb_scc_sio.c [POWERPC] celleb: Move the SCC related code for celleb 2008-04-24 21:08:13 +10:00
celleb_scc_uhc.c [POWERPC] celleb: Move the SCC related code for celleb 2008-04-24 21:08:13 +10:00
celleb_scc.h [POWERPC] celleb: Add support for PCI Express 2008-04-24 21:08:14 +10:00
celleb_setup.c powerpc: add export.h to files making use of EXPORT_SYMBOL 2011-10-31 19:30:37 -04:00
cpufreq_spudemand.c powerpc: Fix up modules that should be including module.h 2011-10-31 19:30:38 -04:00
interrupt.c irq_domain/powerpc: constify irq_domain_ops 2012-02-16 06:11:24 -07:00
interrupt.h powerpc/cell: Rename ipi functions to match current abstractions 2011-05-26 13:38:58 +10:00
iommu.c powerpc/iommu: Implement IOMMU pools to improve multiqueue adapter performance 2012-07-03 14:14:48 +10:00
Kconfig net: fix IBM EMAC driver after rename. 2011-08-18 21:33:49 -07:00
Makefile powerpc: Remove stubbed beat smp support 2011-05-19 15:30:59 +10:00
pervasive.c powerpc/cell: Cleanup sysreset_hack for IBM cell blades 2008-07-22 10:39:31 +10:00
pervasive.h powerpc/cell: Cleanup sysreset_hack for IBM cell blades 2008-07-22 10:39:31 +10:00
pmu.c powerpc/irq: Remove IRQF_DISABLED 2011-11-08 14:51:46 +11:00
qpace_setup.c powerpc: Mark const init data with __initconst instead of __initdata 2012-04-02 14:00:03 +10:00
ras.c powerpc/cell: Add of_node_put to avoid memory leak 2010-09-02 14:07:33 +10:00
ras.h
setup.c powerpc: Mark const init data with __initconst instead of __initdata 2012-04-02 14:00:03 +10:00
smp.c Disintegrate asm/system.h for PowerPC 2012-03-28 18:30:02 +01:00
spider-pci.c powerpc/pci: Move IO workarounds to the common kernel dir 2011-04-27 14:18:29 +10:00
spider-pic.c irq_domain/powerpc: constify irq_domain_ops 2012-02-16 06:11:24 -07:00
spu_base.c Merge branch 'driver-core-next' into Linux 3.2 2012-01-06 11:42:52 -08:00
spu_callbacks.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
spu_fault.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
spu_manage.c powerpc: various straight conversions from module.h --> export.h 2011-10-31 19:30:44 -04:00
spu_notify.c powerpc: fix implicit notifier use in converting to export.h 2011-10-31 19:30:41 -04:00
spu_priv1_mmio.c powerpc: remove non-required uses of include <linux/module.h> 2011-10-31 19:30:44 -04:00
spu_priv1_mmio.h
spu_syscalls.c switch spu_create(2) to use of SYSCALL_DEFINE4, make it use umode_t 2012-01-03 22:55:16 -05:00