All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC 0/8] iommu/arm-smmu-v3: add support for ECMDQ register mode
@ 2021-06-26 11:01 ` Zhen Lei
  0 siblings, 0 replies; 53+ messages in thread
From: Zhen Lei @ 2021-06-26 11:01 UTC (permalink / raw)
  To: Will Deacon, Robin Murphy, Joerg Roedel, linux-arm-kernel, iommu,
	linux-kernel
  Cc: Zhen Lei

SMMU v3.3 added a new feature, which is Enhanced Command queue interface
for reducing contention when submitting Commands to the SMMU, in this
patch set, ECMDQ is the abbreviation of Enhanced Command Queue.

When the hardware supports ECMDQ and each core can exclusively use one ECMDQ,
each core does not need to compete with other cores when using its own ECMDQ.
This means that each core can insert commands in parallel. If each ECMDQ can
execute commands in parallel, the overall performance may be better. However,
our hardware currently does not support multiple ECMDQ execute commands in
parallel.

In order to reuse existing code, I originally still call arm_smmu_cmdq_issue_cmdlist()
to insert commands. Even so, however, there was a performance improvement of nearly 12%
in strict mode.

The test environment is the EMU, which simulates the connection of the 200 Gbit/s NIC.
Number of queues:    passthrough   lazy   strict(ECMDQ)  strict(CMDQ)
      6                  188        180       162           145        --> 11.7% improvement
      8                  188        188       184           183        --> 0.55% improvement

In recent days, I implemented a new function without competition with other
cores to replace arm_smmu_cmdq_issue_cmdlist() when a core can have an ECMDQ.
I'm guessing it might get better performance results. Because the EMU is too
slow, it will take a while before the relevant data is available.


Zhen Lei (8):
  iommu/arm-smmu-v3: Use command queue batching helpers to improve
    performance
  iommu/arm-smmu-v3: Add and use static helper function
    arm_smmu_cmdq_issue_cmd_with_sync()
  iommu/arm-smmu-v3: Add and use static helper function
    arm_smmu_get_cmdq()
  iommu/arm-smmu-v3: Extract reusable function
    __arm_smmu_cmdq_skip_err()
  iommu/arm-smmu-v3: Add support for ECMDQ register mode
  iommu/arm-smmu-v3: Ensure that a set of associated commands are
    inserted in the same ECMDQ
  iommu/arm-smmu-v3: Add arm_smmu_ecmdq_issue_cmdlist() for non-shared
    ECMDQ
  iommu/arm-smmu-v3: Add support for less than one ECMDQ per core

 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 483 ++++++++++++++++++--
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h |  37 ++
 2 files changed, 489 insertions(+), 31 deletions(-)

-- 
2.26.0.106.g9fadedd



^ permalink raw reply	[flat|nested] 53+ messages in thread

end of thread, other threads:[~2021-08-11 11:18 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-26 11:01 [PATCH RFC 0/8] iommu/arm-smmu-v3: add support for ECMDQ register mode Zhen Lei
2021-06-26 11:01 ` Zhen Lei
2021-06-26 11:01 ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 1/8] iommu/arm-smmu-v3: Use command queue batching helpers to improve performance Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 2/8] iommu/arm-smmu-v3: Add and use static helper function arm_smmu_cmdq_issue_cmd_with_sync() Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-08-10 18:24   ` Will Deacon
2021-08-10 18:24     ` Will Deacon
2021-08-10 18:24     ` Will Deacon
2021-08-11  2:16     ` Leizhen (ThunderTown)
2021-08-11  2:16       ` Leizhen (ThunderTown)
2021-08-11  2:16       ` Leizhen (ThunderTown)
2021-08-11 10:09       ` Will Deacon
2021-08-11 10:09         ` Will Deacon
2021-08-11 10:09         ` Will Deacon
2021-08-11 10:31         ` John Garry
2021-08-11 10:31           ` John Garry
2021-08-11 10:31           ` John Garry
2021-08-11 10:33           ` Will Deacon
2021-08-11 10:33             ` Will Deacon
2021-08-11 10:33             ` Will Deacon
2021-08-11 11:15             ` John Garry
2021-08-11 11:15               ` John Garry
2021-08-11 11:15               ` John Garry
2021-06-26 11:01 ` [PATCH RFC 3/8] iommu/arm-smmu-v3: Add and use static helper function arm_smmu_get_cmdq() Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 4/8] iommu/arm-smmu-v3: Extract reusable function __arm_smmu_cmdq_skip_err() Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 5/8] iommu/arm-smmu-v3: Add support for ECMDQ register mode Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 15:49   ` kernel test robot
2021-06-28  1:43     ` Leizhen
2021-06-26 11:01 ` [PATCH RFC 6/8] iommu/arm-smmu-v3: Ensure that a set of associated commands are inserted in the same ECMDQ Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 7/8] iommu/arm-smmu-v3: Add arm_smmu_ecmdq_issue_cmdlist() for non-shared ECMDQ Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01 ` [PATCH RFC 8/8] iommu/arm-smmu-v3: Add support for less than one ECMDQ per core Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-06-26 11:01   ` Zhen Lei
2021-08-10 18:35 ` [PATCH RFC 0/8] iommu/arm-smmu-v3: add support for ECMDQ register mode Will Deacon
2021-08-10 18:35   ` Will Deacon
2021-08-10 18:35   ` Will Deacon
2021-08-11  2:07   ` Leizhen (ThunderTown)
2021-08-11  2:07     ` Leizhen (ThunderTown)
2021-08-11  2:07     ` Leizhen (ThunderTown)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.