Skip to content

Commit 16535d5

Browse files
committed
KVM: arm64: nv: Honor MDCR_EL2.HLP
Counters that fall in the hypervisor range (i.e. N >= HPMN) have a separate control for enabling 64 bit overflow. Take it into account. Reviewed-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20241025182354.3364124-17-oliver.upton@linux.dev Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
1 parent fe827f9 commit 16535d5

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

arch/arm64/kvm/pmu-emul.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,11 @@ static bool kvm_pmc_is_64bit(struct kvm_pmc *pmc)
8989

9090
static bool kvm_pmc_has_64bit_overflow(struct kvm_pmc *pmc)
9191
{
92-
u64 val = kvm_vcpu_read_pmcr(kvm_pmc_to_vcpu(pmc));
92+
struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc);
93+
u64 val = kvm_vcpu_read_pmcr(vcpu);
94+
95+
if (kvm_pmu_counter_is_hyp(vcpu, pmc->idx))
96+
return __vcpu_sys_reg(vcpu, MDCR_EL2) & MDCR_EL2_HLP;
9397

9498
return (pmc->idx < ARMV8_PMU_CYCLE_IDX && (val & ARMV8_PMU_PMCR_LP)) ||
9599
(pmc->idx == ARMV8_PMU_CYCLE_IDX && (val & ARMV8_PMU_PMCR_LC));

0 commit comments

Comments
 (0)