diff options
author | Marc Zyngier <maz@kernel.org> | 2023-03-30 19:47:51 +0200 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2023-03-30 20:01:10 +0200 |
commit | 8a5eb2d210807e7dbe9ece7075533014cf4b9c27 (patch) | |
tree | 00a50fc7113a9b6c3c7fd38a3028376e2a156c2d /arch/arm64/kvm/arm.c | |
parent | KVM: arm64: timers: Abstract per-timer IRQ access (diff) | |
download | linux-8a5eb2d210807e7dbe9ece7075533014cf4b9c27.tar.xz linux-8a5eb2d210807e7dbe9ece7075533014cf4b9c27.zip |
KVM: arm64: timers: Move the timer IRQs into arch_timer_vm_data
Having the timer IRQs duplicated into each vcpu isn't great, and
becomes absolutely awful with NV. So let's move these into
the per-VM arch_timer_vm_data structure.
This simplifies a lot of code, but requires us to introduce a
mutex so that we can reason about userspace trying to change
an interrupt number while another vcpu is running, something
that wasn't really well handled so far.
Reviewed-by: Colton Lewis <coltonlewis@google.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230330174800.2677007-12-maz@kernel.org
Diffstat (limited to 'arch/arm64/kvm/arm.c')
-rw-r--r-- | arch/arm64/kvm/arm.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 1c8a4bbae684..4c5e9dfbf83a 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -148,6 +148,8 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) kvm_vgic_early_init(kvm); + kvm_timer_init_vm(kvm); + /* The maximum number of VCPUs is limited by the host's GIC model */ kvm->max_vcpus = kvm_arm_default_max_vcpus(); |