diff options
author | Marc Zyngier <maz@kernel.org> | 2019-11-07 17:04:12 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2019-11-08 12:14:36 +0100 |
commit | ef2e78ddadbb939ce79553b10dee0131d65d8f3e (patch) | |
tree | a183b990ed3df55405b66abf89c6e9de68c1cff5 /virt | |
parent | KVM: vgic-v4: Track the number of VLPIs per vcpu (diff) | |
download | linux-ef2e78ddadbb939ce79553b10dee0131d65d8f3e.tar.xz linux-ef2e78ddadbb939ce79553b10dee0131d65d8f3e.zip |
KVM: arm64: Opportunistically turn off WFI trapping when using direct LPI injection
Just like we do for WFE trapping, it can be useful to turn off
WFI trapping when the physical CPU is not oversubscribed (that
is, the vcpu is the only runnable process on this CPU) *and*
that we're using direct injection of interrupts.
The conditions are reevaluated on each vcpu_load(), ensuring that
we don't switch to this mode on a busy system.
On a GICv4 system, this has the effect of reducing the generation
of doorbell interrupts to zero when the right conditions are
met, which is a huge improvement over the current situation
(where the doorbells are screaming if the CPU ever hits a
blocking WFI).
Signed-off-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
Reviewed-by: Christoffer Dall <christoffer.dall@arm.com>
Link: https://lore.kernel.org/r/20191107160412.30301-3-maz@kernel.org
Diffstat (limited to 'virt')
-rw-r--r-- | virt/kvm/arm/arm.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c index bd2afcf9a13f..dac96e355f69 100644 --- a/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c @@ -386,9 +386,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) kvm_vcpu_pmu_restore_guest(vcpu); if (single_task_running()) - vcpu_clear_wfe_traps(vcpu); + vcpu_clear_wfx_traps(vcpu); else - vcpu_set_wfe_traps(vcpu); + vcpu_set_wfx_traps(vcpu); vcpu_ptrauth_setup_lazy(vcpu); } |