diff options
author | Andrew Jones <drjones@redhat.com> | 2017-06-04 14:43:57 +0200 |
---|---|---|
committer | Christoffer Dall <cdall@linaro.org> | 2017-06-04 16:53:55 +0200 |
commit | 424c989b1a664a270727550506321af0a605c302 (patch) | |
tree | 752a20556538c34790cc5e4cdcdc96268dddad3f /virt/kvm/arm/psci.c | |
parent | cc9b43f99d5ff4df75d11e75c0bfaf08f1ff5a9a (diff) | |
download | linux-424c989b1a664a270727550506321af0a605c302.tar.gz linux-424c989b1a664a270727550506321af0a605c302.tar.bz2 linux-424c989b1a664a270727550506321af0a605c302.zip |
KVM: arm/arm64: optimize VCPU RUN
We can make a small optimization by not checking the state of
the power_off field on each run. This is done by treating
power_off like pause, only checking it when we get the EXIT
VCPU request. When a VCPU powers off another VCPU the EXIT
request is already made, so we just need to make sure the
request is also made on self power off. kvm_vcpu_kick() isn't
necessary for these cases, as the VCPU would just be kicking
itself, but we add it anyway as a self kick doesn't cost much,
and it makes the code more future-proof.
Signed-off-by: Andrew Jones <drjones@redhat.com>
Reviewed-by: Christoffer Dall <cdall@linaro.org>
Signed-off-by: Christoffer Dall <cdall@linaro.org>
Diffstat (limited to 'virt/kvm/arm/psci.c')
-rw-r--r-- | virt/kvm/arm/psci.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/virt/kvm/arm/psci.c b/virt/kvm/arm/psci.c index f189d0ad30d5..4a436685c552 100644 --- a/virt/kvm/arm/psci.c +++ b/virt/kvm/arm/psci.c @@ -65,6 +65,8 @@ static unsigned long kvm_psci_vcpu_suspend(struct kvm_vcpu *vcpu) static void kvm_psci_vcpu_off(struct kvm_vcpu *vcpu) { vcpu->arch.power_off = true; + kvm_make_request(KVM_REQ_VCPU_EXIT, vcpu); + kvm_vcpu_kick(vcpu); } static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) |