Re: [PATCH v7 0/2] RISC-V IOMMU HPM support
Guo Ren <[email protected]>
| Newsgroups | org.infradead.lists.linux-riscv,dev.linux.lists.iommu,org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users |
|---|---|
| Message-ID | <CAJF2gTQ-1pKoBvnRSLkDGqwKDzon_yfyT74haifeGD=VRBanYg@mail.gmail.com> |
Hi Li Zong, Just two patches? Where did the riscv-iommu PMU driver patch go? -- Best Regards GUO Ren On Fri, Aug 28, 2026 at 3:07 PM Zong Li <[email protected]> wrote: > > This series implements support for the RISC-V IOMMU hardware performance > monitor. > > The RISC-V IOMMU PMU driver is implemented as an auxiliary device driver > created by the parent RISC-V IOMMU driver. Therefore, the child driver > can obtain resources and information from the parent device, such as > the MMIO base address and IRQ number. > > The thrid commit adds raw spinlock for race condition when PCI MSI/MSI-X > on IMSIC. As the commit message mentioned: > Events are bound to one CPU and the interrupt is affine to it, so the > perf callbacks running with interrupts disabled would be enough to > exclude the handler. But PCI MSI/MSI-X on IMSIC breaks that: > The irqchip sets IRQCHIP_MOVE_DEFERRED, so irq_set_affinity() reports > success while only recording the request, and the move is applied in > interrupt context upon the next device interrupt. Until then the > interrupt is still routed to the CPU IMSIC picked initially, so the > first overflow interrupt can run concurrently with the perf callbacks > on the CPU the events are bound to. > > I noticed that xgene_pmu and arm-cci have similar implementation, so add > it in riscv_iommu_pmu should be accepted. > > Changed in v6: > - Rebased onto the latest v7.3-rc > - Use sysfs_emit instead of cpumap_print_to_pagebuf > - Set up on_cpu and irq affinity by cpuhp callbacks > - Change type of on_cpu from unsigned int to int > - Reject filter operands of cycle event in event_init > - Check return value of counter number and masks in probe > - Add raw spinlock for race condition (third commit) > > Changed in v5: > - Pick up suggestions from sashiko-bot as follows > - Fix event group validation for sw event > - Bind IRQ to aux PMU dev instead of parent IOMMU dev > - Clear OF bit when event is NULL > - Improve hi-lo-hi patten > - Add back IRQF_SHARED flag due to mismatch > - Manage cpuhp and pmu register by devre > > Changed in v4: > - Rebased onto v7.3-rc > - Use is_sampling_event() instead of accessing vairable directly > - Rename the matching name from "iommu.pmu" to "riscv-iommu.pmu" > - Change the naming of PMU device for avoid ":" in PCIe case > - Add suppress_bind_attrs attribute > - Remove IRQF_SHARED flag > - Set irq affinity to local CPU of IOMMU > - Allocate ID by IDA for auxiliary device > - Pick up suggestions from sashiko-bot > > Changed in v3: > - Rebased onto v7.2-rc3 > - Use hi_lo_writeq/readq to access register > - Pick comments from sashiko-bot as follows > - Set IRQ CPU affinity > - Remove IRQF_ONESHOT flag when request irq > - Adjust cycle event check by checking event_id field only > - Fix bug for group events verificaiton > - Fix KASAN issue about casting 32-bit variable to unsigned long pointer > - Clear IPSR pending bit before starting counter > - Clear OF bit in event selector register in irq handler > - Release irq by devm instead of explicit free_irq > > Changed in v2: > - Rebased onto v7.2-rc1 > - Use hi-lo-hi mechanism to read counter. > Suggested by Guo Ren and David Laight > > Changed in v1: > - Rebased onto v6.19-rc8 > - Pick all suggestions and feedbacks from v1 series > - Add cpu hotplug implementation to avoid race enablement > - Move PMU-related definition from header to c file > - Change PMU driver to auxiliary device driver > > Changed in RFC: > - Rebase onto v6.13-rc7 > - Clear interrupt pending before handling interrupt > - Fix the counter value issue caused by OF bit in the cycle counter. > - Invoke riscv_iommu_hpm_disable() instead of riscv_iommu_pmu_uninit() > in riscv_iommu_remove() > > Zong Li (2): > iommu/riscv: create a auxiliary device for HPM > drivers/perf: riscv-iommu: protect shared state with a raw spinlock > > drivers/iommu/riscv/Kconfig | 1 + > drivers/iommu/riscv/iommu.c | 37 +++++++++++++++++++ > drivers/perf/riscv_iommu_pmu.c | 66 ++++++++++++++++++++++++++++++---- > 3 files changed, 98 insertions(+), 6 deletions(-) > > -- > 2.43.7 > _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv