[PATCH v2 0/2] Avoid spurious ptimer interrupts for non-zero cntpoff

Ganapatrao Kulkarni
2023-09-04T11:42:53Z

Guest-Hypervisor(NV use-case) uses ptimer as an arch_timer.
While running Guest-Hypervisor from a VHE host on a platform which
supports FEAT_ECV/CNTPOFF_EL2, burst of spurious ptimer interrupts
were generated for a non-zero offset, causing the boot to hang.

The issue is due to the value of CNTPOFF_EL2 is treated as zero while
on VHE host. This patch fixes the issue by adjusting the CVAL of a
loaded ptimer across the entry and exit of a guest.

v2:
Updated as per review comment [1].
[1] https://lore.kernel.org/lkml/a4dac5af-44e2-0485-446f-fae09fa66a3c@os.amperecomputing.com/

This patchset is rebased on NV-V10[2][3].

[2] https://lore.kernel.org/linux-arm-kernel/19c775ad-9573-b4d4-886d-c631b468856f@redhat.com/T/
[3] https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/log/?h=kvm-arm64/nv-6.5-WIP-6.4

Ganapatrao Kulkarni (2):
KVM: arm64: timers: Move helper has_cntpoff to a header file
KVM: arm64: timers: Adjust CVAL of a ptimer across guest entry and
exits

arch/arm64/include/asm/virt.h | 5 +++
arch/arm64/kvm/arch_timer.c | 65 ++++++++++++++++++++++++++++-----
arch/arm64/kvm/hyp/vhe/switch.c | 13 +++++++
include/kvm/arm_arch_timer.h | 1 +
4 files changed, 74 insertions(+), 10 deletions(-)

--
2.41.0