lkml.org 
[lkml]   [2007]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 30/41] KVM: SVM: forbid guest to execute monitor/mwait
    Date
    From: Joerg Roedel <joerg.roedel@amd.com>

    This patch forbids the guest to execute monitor/mwait instructions on
    SVM. This is necessary because the guest can execute these instructions
    if they are available even if the kvm cpuid doesn't report its
    existence.

    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Avi Kivity <avi@qumranet.com>
    ---
    drivers/kvm/svm.c | 6 +++++-
    drivers/kvm/svm.h | 6 ++++++
    2 files changed, 11 insertions(+), 1 deletions(-)

    diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
    index ddc0505..0542d33 100644
    --- a/drivers/kvm/svm.c
    +++ b/drivers/kvm/svm.c
    @@ -511,7 +511,9 @@ static void init_vmcb(struct vmcb *vmcb)
    (1ULL << INTERCEPT_VMSAVE) |
    (1ULL << INTERCEPT_STGI) |
    (1ULL << INTERCEPT_CLGI) |
    - (1ULL << INTERCEPT_SKINIT);
    + (1ULL << INTERCEPT_SKINIT) |
    + (1ULL << INTERCEPT_MONITOR) |
    + (1ULL << INTERCEPT_MWAIT);

    control->iopm_base_pa = iopm_base;
    control->msrpm_base_pa = msrpm_base;
    @@ -1292,6 +1294,8 @@ static int (*svm_exit_handlers[])(struct kvm_vcpu *vcpu,
    [SVM_EXIT_STGI] = invalid_op_interception,
    [SVM_EXIT_CLGI] = invalid_op_interception,
    [SVM_EXIT_SKINIT] = invalid_op_interception,
    + [SVM_EXIT_MONITOR] = invalid_op_interception,
    + [SVM_EXIT_MWAIT] = invalid_op_interception,
    };


    diff --git a/drivers/kvm/svm.h b/drivers/kvm/svm.h
    index df731c3..5e93814 100644
    --- a/drivers/kvm/svm.h
    +++ b/drivers/kvm/svm.h
    @@ -44,6 +44,9 @@ enum {
    INTERCEPT_RDTSCP,
    INTERCEPT_ICEBP,
    INTERCEPT_WBINVD,
    + INTERCEPT_MONITOR,
    + INTERCEPT_MWAIT,
    + INTERCEPT_MWAIT_COND,
    };


    @@ -298,6 +301,9 @@ struct __attribute__ ((__packed__)) vmcb {
    #define SVM_EXIT_RDTSCP 0x087
    #define SVM_EXIT_ICEBP 0x088
    #define SVM_EXIT_WBINVD 0x089
    +#define SVM_EXIT_MONITOR 0x08a
    +#define SVM_EXIT_MWAIT 0x08b
    +#define SVM_EXIT_MWAIT_COND 0x08c
    #define SVM_EXIT_NPF 0x400

    #define SVM_EXIT_ERR -1
    --
    1.5.0.5
    -
    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-04-01 16:43    [W:4.678 / U:0.116 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site