summaryrefslogtreecommitdiffstats
path: root/include/kvm/arm_vgic.h
diff options
context:
space:
mode:
authorMarc Zyngier <marc.zyngier@arm.com>2016-02-02 19:35:34 +0000
committerMarc Zyngier <marc.zyngier@arm.com>2016-03-09 04:22:20 +0000
commit59f00ff9afc028053fa9281407627e95008ebd5c (patch)
tree68ae8ad7133b4707c9dd15a93b3ec263e33d1a3b /include/kvm/arm_vgic.h
parent9b4a3004439d5be680faf41f4267968ca11bb9f6 (diff)
downloadblackbird-op-linux-59f00ff9afc028053fa9281407627e95008ebd5c.tar.gz
blackbird-op-linux-59f00ff9afc028053fa9281407627e95008ebd5c.zip
KVM: arm/arm64: vgic-v2: Avoid accessing GICH registers
GICv2 registers are *slow*. As in "terrifyingly slow". Which is bad. But we're equaly bad, as we make a point in accessing them even if we don't have any interrupt in flight. A good solution is to first find out if we have anything useful to write into the GIC, and if we don't, to simply not do it. This involves tracking which LRs actually have something valid there. Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Diffstat (limited to 'include/kvm/arm_vgic.h')
-rw-r--r--include/kvm/arm_vgic.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h
index 13a3d537811b..f473fd65fab5 100644
--- a/include/kvm/arm_vgic.h
+++ b/include/kvm/arm_vgic.h
@@ -321,6 +321,8 @@ struct vgic_cpu {
/* Protected by the distributor's irq_phys_map_lock */
struct list_head irq_phys_map_list;
+
+ u64 live_lrs;
};
#define LR_EMPTY 0xff
OpenPOWER on IntegriCloud