]> git.baikalelectronics.ru Git - kernel.git/commit
KVM: arm/arm64: Optimize away redundant LR tracking
authorPavel Fedin <p.fedin@samsung.com>
Tue, 27 Oct 2015 08:37:29 +0000 (11:37 +0300)
committerChristoffer Dall <christoffer.dall@linaro.org>
Wed, 4 Nov 2015 14:29:49 +0000 (15:29 +0100)
commite2204814b58b317246bc9a6f5f4d8d7f9b084b30
treefe519309bd917369e61cde515ebc7bc9915d9409
parent8c76889e10659d62ca11ffe927dd659ec2f4cacf
KVM: arm/arm64: Optimize away redundant LR tracking

Currently we use vgic_irq_lr_map in order to track which LRs hold which
IRQs, and lr_used bitmap in order to track which LRs are used or free.

vgic_irq_lr_map is actually used only for piggy-back optimization, and
can be easily replaced by iteration over lr_used. This is good because in
future, when LPI support is introduced, number of IRQs will grow up to at
least 16384, while numbers from 1024 to 8192 are never going to be used.
This would be a huge memory waste.

In its turn, lr_used is also completely redundant since
d55899951d9f96e42ce30a9bef446ae2707814fe ("arm/arm64: KVM: Keep elrsr/aisr
in sync with software model"), because together with lr_used we also update
elrsr. This allows to easily replace lr_used with elrsr, inverting all
conditions (because in elrsr '1' means 'free').

Signed-off-by: Pavel Fedin <p.fedin@samsung.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
include/kvm/arm_vgic.h
virt/kvm/arm/vgic-v2.c
virt/kvm/arm/vgic-v3.c
virt/kvm/arm/vgic.c