Patch "KVM: x86: clean up kvm_arch_vcpu_runnable" has been added to the 4.2-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
KVM: x86: clean up kvm_arch_vcpu_runnable
to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
kvm-x86-clean-up-kvm_arch_vcpu_runnable.patch
and it can be found in the queue-4.2 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
5d9bc648b94dd719022343b8675e6c4381f0c45fMon Sep 17 00:00:00 2001
From: Paolo Bonzini <[email protected]>
Date: Tue, 13 Oct 2015 10:18:53 +0200
Subject: KVM: x86: clean up kvm_arch_vcpu_runnable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
From: Paolo Bonzini <[email protected]>
commit 5d9bc648b94dd719022343b8675e6c4381f0c45f upstream.
Split the huge conditional in two functions.
--- arch/x86/kvm/x86.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-)
arch/x86/kvm/x86.c +29 -10
@@ -6706,6 +6706,12 @@ static inline int vcpu_block(struct kvmreturn 1 ; } +static inline bool kvm_vcpu_running (struct kvm_vcpu *vcpu) +{ +return (vcpu->arch.mp_state ==KVM_MP_STATE_RUNNABLE && + !vcpu->arch.apf.halted); +} +static int vcpu_run (struct kvm_vcpu *vcpu) {int r;
@@ -6714,8 +6720,7 @@ static int vcpu_run(struct kvm_vcpu *vcp vcpu->srcu_idx =srcu_read_lock (&kvm->srcu);for (;;) { -if (vcpu->arch.mp_state ==KVM_MP_STATE_RUNNABLE && - !vcpu->arch.apf.halted) +if (kvm_vcpu_running (vcpu)) r =vcpu_enter_guest (vcpu);else r =vcpu_block (kvm, vcpu);
@@ -8011,19 +8016,33 @@ void kvm_arch_flush_shadow_memslot(struckvm_mmu_invalidate_zap_all_pages (kvm); } +static inline bool kvm_vcpu_has_events (struct kvm_vcpu *vcpu) +{ +if (!list_empty_careful (&vcpu->async_pf.done)) +return true; + +if (kvm_apic_has_events (vcpu)) +return true; + +if (vcpu->arch.pv.pv_unhalted) +return true; + +if (atomic_read (&vcpu->arch.nmi_queued)) +return true; + +if (kvm_arch_interrupt_allowed (vcpu) && +kvm_cpu_has_interrupt (vcpu)) +return true; + +return false; +} +int kvm_arch_vcpu_runnable (struct kvm_vcpu *vcpu) {if (is_guest_mode (vcpu) && kvm_x86_ops->check_nested_events) kvm_x86_ops->check_nested_events (vcpu, false); -return (vcpu->arch.mp_state ==KVM_MP_STATE_RUNNABLE && - !vcpu->arch.apf.halted) - || !list_empty_careful (&vcpu->async_pf.done) - ||kvm_apic_has_events (vcpu) - || vcpu->arch.pv.pv_unhalted - ||atomic_read (&vcpu->arch.nmi_queued) || - (kvm_arch_interrupt_allowed (vcpu) && -kvm_cpu_has_interrupt (vcpu)); +return kvm_vcpu_running (vcpu) ||kvm_vcpu_has_events (vcpu); }int kvm_arch_vcpu_should_kick (struct kvm_vcpu *vcpu)
Patches currently in stable-queue which might be from [email protected] are
queue-4.2/kvm-x86-fix-smi-to-halted-vcpu.patch queue-4.2/kvm-x86-clean-up-kvm_arch_vcpu_runnable.patch queue-4.2/kvm-x86-fix-rsm-into-64-bit-protected-mode.patch