[PATCH v1 1/3] iommu/riscv: Add iommu perf driver
guoyaxing at bosc.ac.cn
guoyaxing at bosc.ac.cn
Tue Sep 16 03:27:23 PDT 2025
Hi, Will
From: Will Deacon
Date: 2025-09-15 18:38
To: Yaxing Guo
CC: linux-riscv; iommu; tjeznach; joro; robin.murphy; paul.walmsley; palmer; aou; alex; anxu; wangran
Subject: Re: [PATCH v1 1/3] iommu/riscv: Add iommu perf driver
On Mon, Sep 15, 2025 at 10:09:09AM +0800, Yaxing Guo wrote:
>> This patch introduces a performance monitor driver for RISC-V IOMMU
>> iohpm implementions that support hardware performance counters.
>> The driver expose RISC-V-IOMMU-specific performance events (eg. cycles,
>> tlb miss ...)through the Linux perf subsystem, enabling developers
>> to profile and optimize I/O translation performance.
>>
>> Key features:
>> - Implements a perf PMU driver for RISC-V IOMMU.
>>
>> - Exposes IOMMU perf events, such as 'cycles', 'tlb_miss'... via
>> /sys/devices/riscv-iommu-pmu/events/, allowing use with perf
>> tools:
>> perf stat -C 0 -e riscv-iommu-pmu/cycles/ ...
>> perf stat -C 0 -e riscv-iommu-pmu/tlb_miss/ ...
>> ...
>> - Supports event filtering through configureable attributes exposed
>> in /sys/devices/riscv-iommu-pmu/format/, including:
>> dv_gscv, pv_pscv,did_gscid,pid_pscid,idt (riscv iommu spec 5-23).
>>
>> - Implements overflow interrupt handling.
>>
>> - Adds device tree binding support via optional 'pmu-name' property
>> allowing platform-specific IOMMU implementations to specify a custom
>> defined event ID list. If not provided, the driver defaults to only
>> supporting 'cycles'. When set to 'dummy', it enables all 9 standard
>> event IDs as defined in riscv iommu spec(5-23).
>>
>> Signed-off-by: Yaxing Guo <guoyaxing at bosc.ac.cn>
>> ---
>> drivers/iommu/riscv/iommu-perf.c | 535 +++++++++++++++++++++++++++++++
>> drivers/iommu/riscv/iommu-perf.h | 88 +++++
>> drivers/iommu/riscv/iommu.h | 8 +
>> 3 files changed, 631 insertions(+)
>> create mode 100644 drivers/iommu/riscv/iommu-perf.c
>> create mode 100644 drivers/iommu/riscv/iommu-perf.h
> PMU drivers are better placed under drivers/perf/
> (the Arm SMMUv3 PMU driver lives there, for example).
I did a quick reading of SMMU pmu driver in drivers/perf/. However, If the RISC-V IOMMU PMU driver is placed under drivers/perf/ as the SMMU did, it would cause an overlap in the iomem resource region between the two devices(iommu & iommu pmu), because it needs to share interrupt-related registers (such as the IPSR register) with the main IOMMU driver.
Yaxing Guo
> Will
More information about the linux-riscv
mailing list