lkml.org 
[lkml]   [2007]   [Oct]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 09/11] KVM: Move kvm_guest_exit() after local_irq_enable()
    Date
    From: Laurent Vivier <Laurent.Vivier@bull.net>

    We need to make sure that the timer interrupt happens before we clear
    PF_VCPU, so the accounting code actually sees guest mode.

    http://lkml.org/lkml/2007/10/15/114

    Signed-off-by: Laurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    drivers/kvm/kvm_main.c | 11 ++++++++++-
    1 files changed, 10 insertions(+), 1 deletions(-)

    diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
    index af2d288..8c458f2 100644
    --- a/drivers/kvm/kvm_main.c
    +++ b/drivers/kvm/kvm_main.c
    @@ -2054,12 +2054,21 @@ again:

    kvm_x86_ops->run(vcpu, kvm_run);

    - kvm_guest_exit();
    vcpu->guest_mode = 0;
    local_irq_enable();

    ++vcpu->stat.exits;

    + /*
    + * We must have an instruction between local_irq_enable() and
    + * kvm_guest_exit(), so the timer interrupt isn't delayed by
    + * the interrupt shadow. The stat.exits increment will do nicely.
    + * But we need to prevent reordering, hence this barrier():
    + */
    + barrier();
    +
    + kvm_guest_exit();
    +
    preempt_enable();

    /*
    --
    1.5.3
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-21 13:13    [W:0.019 / U:33.400 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site