lkml.org 
[lkml]   [2019]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC patch 15/15] x86/kvm: Use GENERIC_EXIT_WORKPENDING
    Use the generic infrastructure to check for and handle pending work before
    entering into guest mode.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    ---
    arch/x86/kvm/x86.c | 17 +++++------------
    1 file changed, 5 insertions(+), 12 deletions(-)

    --- a/arch/x86/kvm/x86.c
    +++ b/arch/x86/kvm/x86.c
    @@ -52,6 +52,7 @@
    #include <linux/irqbypass.h>
    #include <linux/sched/stat.h>
    #include <linux/sched/isolation.h>
    +#include <linux/entry-common.h>
    #include <linux/mem_encrypt.h>

    #include <trace/events/kvm.h>
    @@ -7984,8 +7985,8 @@ static int vcpu_enter_guest(struct kvm_v
    if (kvm_lapic_enabled(vcpu) && vcpu->arch.apicv_active)
    kvm_x86_ops->sync_pir_to_irr(vcpu);

    - if (vcpu->mode == EXITING_GUEST_MODE || kvm_request_pending(vcpu)
    - || need_resched() || signal_pending(current)) {
    + if (vcpu->mode == EXITING_GUEST_MODE || kvm_request_pending(vcpu) ||
    + exit_to_guestmode_work_pending()) {
    vcpu->mode = OUTSIDE_GUEST_MODE;
    smp_wmb();
    local_irq_enable();
    @@ -8178,17 +8179,9 @@ static int vcpu_run(struct kvm_vcpu *vcp

    kvm_check_async_pf_completion(vcpu);

    - if (signal_pending(current)) {
    - r = -EINTR;
    - vcpu->run->exit_reason = KVM_EXIT_INTR;
    - ++vcpu->stat.signal_exits;
    + r = exit_to_guestmode(kvm, vcpu);
    + if (r)
    break;
    - }
    - if (need_resched()) {
    - srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);
    - cond_resched();
    - vcpu->srcu_idx = srcu_read_lock(&kvm->srcu);
    - }
    }

    srcu_read_unlock(&kvm->srcu, vcpu->srcu_idx);

    \
     
     \ /
      Last update: 2019-09-19 17:11    [W:3.252 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site