Break up monolithic iommu table/lock into finer graularity pools and lock
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Thu, 9 Apr 2015 19:33:30 +0000 (15:33 -0400)
committerDavid S. Miller <davem@davemloft.net>
Sat, 18 Apr 2015 19:32:59 +0000 (12:32 -0700)
commitff7d37a502022149655c18035b99a53391be0383
tree262ef5021055702d1edfb2982c618720cde4489c
parentc12f048ffdf3a5802239426dc290290929268dc9
Break up monolithic iommu table/lock into finer graularity pools and lock

Investigation of multithreaded iperf experiments on an ethernet
interface show the iommu->lock as the hottest lock identified by
lockstat, with something of the order of  21M contentions out of
27M acquisitions, and an average wait time of 26 us for the lock.
This is not efficient. A more scalable design is to follow the ppc
model, where the iommu_map_table has multiple pools, each stretching
over a segment of the map, and with a separate lock for each pool.
This model allows for better parallelization of the iommu map search.

This patch adds the iommu range alloc/free function infrastructure.

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/iommu-common.h [new file with mode: 0644]
lib/Makefile
lib/iommu-common.c [new file with mode: 0644]