linux-stable/virt/kvm/arm
Marc Zyngier 9b4a300443 KVM: arm/arm64: timer: Add active state caching
Programming the active state in the (re)distributor can be an
expensive operation so it makes some sense to try and reduce
the number of accesses as much as possible. So far, we
program the active state on each VM entry, but there is some
opportunity to do less.

An obvious solution is to cache the active state in memory,
and only program it in the HW when conditions change. But
because the HW can also change things under our feet (the active
state can transition from 1 to 0 when the guest does an EOI),
some precautions have to be taken, which amount to only caching
an "inactive" state, and always programing it otherwise.

With this in place, we observe a reduction of around 700 cycles
on a 2GHz GICv2 platform for a NULL hypercall.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
2016-02-29 18:34:22 +00:00
..
hyp arm64: KVM: Move vgic-v2 and timer save/restore to virt/kvm/arm/hyp 2016-02-29 18:34:18 +00:00
arch_timer.c KVM: arm/arm64: timer: Add active state caching 2016-02-29 18:34:22 +00:00
pmu.c arm64: KVM: Add a new vcpu device control group for PMUv3 2016-02-29 18:34:21 +00:00
trace.h arm/arm64: KVM: Add tracepoints for vgic and timer 2015-10-22 23:01:48 +02:00
vgic-v2-emul.c KVM: arm/arm64: rework MMIO abort handling to use KVM MMIO bus 2015-03-30 17:07:19 +01:00
vgic-v2.c KVM: arm/arm64: Merge vgic_set_lr() and vgic_sync_lr_elrsr() 2015-11-04 15:29:49 +01:00
vgic-v3-emul.c KVM: arm: vgic: Drop useless Group0 warning 2015-06-17 09:58:12 +01:00
vgic-v3.c arm64: KVM: Turn system register numbers to an enum 2015-12-14 11:30:43 +00:00
vgic.c KVM: arm/arm64: vgic: Ensure bitmaps are long enough 2016-02-23 19:02:48 +00:00
vgic.h KVM: arm/arm64: rework MMIO abort handling to use KVM MMIO bus 2015-03-30 17:07:19 +01:00