Re: [PATCH v2 06/14] KVM: arm64: Remap PMUv3 events onto hardware

From: Marc Zyngier
Date: Wed Feb 19 2025 - 11:46:03 EST


On Mon, 03 Feb 2025 18:31:03 +0000,
Oliver Upton <oliver.upton@xxxxxxxxx> wrote:
>
> Use the provided helper to map PMUv3 event IDs onto hardware, if the
> driver exposes such a helper. This is expected to be quite rare, and
> only useful for non-PMUv3 hardware.
>
> Tested-by: Janne Grunau <j@xxxxxxxxxx>
> Signed-off-by: Oliver Upton <oliver.upton@xxxxxxxxx>
> ---
> arch/arm64/kvm/pmu-emul.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm64/kvm/pmu-emul.c b/arch/arm64/kvm/pmu-emul.c
> index 62349b670cf9..60cf973e2af9 100644
> --- a/arch/arm64/kvm/pmu-emul.c
> +++ b/arch/arm64/kvm/pmu-emul.c
> @@ -673,6 +673,18 @@ static bool kvm_pmc_counts_at_el2(struct kvm_pmc *pmc)
> return kvm_pmc_read_evtreg(pmc) & ARMV8_PMU_INCLUDE_EL2;
> }
>
> +static u64 kvm_map_pmu_event(struct kvm *kvm, u64 eventsel)
> +{
> + struct arm_pmu *pmu = kvm->arch.arm_pmu;
> + int hw_event;
> +
> + if (!pmu->map_pmuv3_event)
> + return eventsel;
> +
> + hw_event = pmu->map_pmuv3_event(eventsel);
> + return (hw_event < 0) ? eventsel : hw_event;

I find this a bit odd. If we can translate events, but failed to do
so, we still install the originally requested event, and we have no
idea what this maps to on the HW.

I'd rather we just don't install that event at all rather than
counting something random.

Thanks,

M.

--
Without deviation from the norm, progress is not possible.