linux/virt/kvm/arm
Christoffer Dall accb99bcd0 KVM: arm/arm64: Simplify bg_timer programming
Instead of calling into kvm_timer_[un]schedule from the main kvm
blocking path, test if the VCPU is on the wait queue from the load/put
path and perform the background timer setup/cancel in this path.

This has the distinct advantage that we no longer race between load/put
and schedule/unschedule and programming and canceling of the bg_timer
always happens when the timer state is not loaded.

Note that we must now remove the checks in kvm_timer_blocking that do
not schedule a background timer if one of the timers can fire, because
we no longer have a guarantee that kvm_vcpu_check_block() will be called
before kvm_timer_blocking.

Reported-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2019-02-19 21:05:36 +00:00
..
hyp arm64: KVM: Consistently advance singlestep when emulating instructions 2018-12-18 14:11:37 +00:00
vgic arm/arm64: KVM: Introduce kvm_call_hyp_ret() 2019-02-19 21:05:24 +00:00
aarch32.c kvm/arm: use PSR_AA32 definitions 2018-07-05 17:24:15 +01:00
arch_timer.c KVM: arm/arm64: Simplify bg_timer programming 2019-02-19 21:05:36 +00:00
arm.c KVM: arm/arm64: Simplify bg_timer programming 2019-02-19 21:05:36 +00:00
mmio.c arm64: KVM: Skip MMIO insn after emulation 2018-12-18 14:10:36 +00:00
mmu.c KVM: arm/arm64: Factor out VMID into struct kvm_vmid 2019-02-19 21:05:35 +00:00
perf.c KVM: arm/arm64: Move shared files to virt/kvm/arm 2017-05-04 13:57:26 +02:00
pmu.c KVM: arm64: Rewrite system register accessors to read/write functions 2018-03-19 10:53:16 +00:00
psci.c sched/swait: Rename to exclusive 2018-06-20 11:35:56 +02:00
trace.h arm/arm64: KVM: Add ARM_EXCEPTION_IS_TRAP macro 2018-12-19 17:47:53 +00:00