lkml.org 
[lkml]   [2012]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH 16/18] KVM: add kvm_arch_vcpu_prevent_run to prevent VM ENTER when NMI is received
    On 06/28/2012 09:08 AM, Tomoki Sekiyama wrote:
    > Since NMI can not be disabled around VM enter, there is a race between
    > receiving NMI to kick a guest and entering the guests on slave CPUs.If the
    > NMI is received just before entering VM, after the NMI handler is invoked,
    > it continues entering the guest and the effect of the NMI will be lost.
    >
    > This patch adds kvm_arch_vcpu_prevent_run(), which causes VM exit right
    > after VM enter. The NMI handler uses this to ensure the execution of the
    > guest is cancelled after NMI.
    >
    >
    > +/*
    > + * Make VMRESUME fail using preemption timer with timer value = 0.
    > + * On processors that doesn't support preemption timer, VMRESUME will fail
    > + * by internal error.
    > + */
    > +static void vmx_prevent_run(struct kvm_vcpu *vcpu, int prevent)
    > +{
    > + if (prevent)
    > + vmcs_set_bits(PIN_BASED_VM_EXEC_CONTROL,
    > + PIN_BASED_PREEMPTION_TIMER);
    > + else
    > + vmcs_clear_bits(PIN_BASED_VM_EXEC_CONTROL,
    > + PIN_BASED_PREEMPTION_TIMER);
    > +}

    This may interrupt another RMW sequence, which will then overwrite the
    control. So it needs to be called only if inside the entry sequence
    (otherwise can just set a KVM_REQ_IMMEDIATE_EXIT in vcpu->requests).

    --
    error compiling committee.c: too many arguments to function




    \
     
     \ /
      Last update: 2012-06-28 19:21    [W:0.023 / U:1.044 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site