However, I have looked into reworking to not use the extra_regs, and I seeYes, adding a struct to that union is fine and clarifies things. And
that the union in struct hw_perf_event currently contains various PMU-specific
structures (hardware, software, tracepoint, intel_cqm, itrace, amd_power,
and breakpoint).
For amd_iommu PMU, we need additional registers for holding amd_iommu-specific
parameters. So, it seems that we can just introduce amd_iommu-specific struct
instead of re-using the existing structure for hardware events.
I'm planning to add the following structure in the same union:
union {
......
struct { /* amd_iommu */
u8 iommu_csource;
u8 iommu_bank;
u8 iommu_cntr;
u16 iommu_devid;
u16 iommu_devid_msk;
u16 iommu_domid;
u16 iommu_domid_msk;
u32 iommu_pasid;
u32 iommu_pasid_msk;
};
};
Please let me know what you think, of if I am still missing your points.
just because I'm weird like that, there's a u8 hole after iommu_cntr.