[RFC CFT 0/6] Try to reduce lock contention on the SMMUv3 command queue

Will Deacon
2019-06-11T13:46:12Z

Hi all,

This patch series is an attempt to reduce lock contention when inserting
commands into the Arm SMMUv3 command queue. Unfortunately, our initial
benchmarking has shown mixed results across the board and the changes in
the last patch don't appear to justify their complexity. Based on that,
I only plan to queue the first patch for the time being.

Anyway, before I park this series, I thought it was probably worth
sharing it in case it's useful to somebody. If you have a system where
you believe I/O performance to be limited by the SMMUv3 command queue
then please try these patches and let me know what happens, even if it's
just more bad news.

Patches based on 5.2-rc3. I've also pushed them out to my iommu/devel
branch for the moment:

https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/log/?h=iommu/devel

Thanks,

Will

--->8

Cc: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Jayachandran Chandrasekharan Nair <jnair@marvell.com>
Cc: Jan Glauber <jglauber@marvell.com>
Cc: Jon Masters <jcm@redhat.com>
Cc: Eric Auger <eric.auger@redhat.com>
Cc: Zhen Lei <thunder.leizhen@huawei.com>
Cc: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Vijay Kilary <vkilari@codeaurora.org>
Cc: Joerg Roedel <joro@8bytes.org>

Will Deacon (6):
iommu/arm-smmu-v3: Increase maximum size of queues
iommu/arm-smmu-v3: Separate s/w and h/w views of prod and cons indexes
iommu/arm-smmu-v3: Drop unused 'q' argument from Q_OVF macro
iommu/arm-smmu-v3: Move low-level queue fields out of arm_smmu_queue
iommu/arm-smmu-v3: Operate directly on low-level queue where possible
iommu/arm-smmu-v3: Reduce contention during command-queue insertion

drivers/iommu/arm-smmu-v3.c | 725 ++++++++++++++++++++++++++++++++------------
1 file changed, 534 insertions(+), 191 deletions(-)