• W
    KVM: nVMX: Fix nested VPID vmx exec control · 63cb6d5f
    Wanpeng Li 提交于
    This can be reproduced by running kvm-unit-tests/vmx.flat on L0 w/ vpid disabled.
    
    Test suite: VPID
    Unhandled exception 6 #UD at ip 00000000004051a6
    error_code=0000      rflags=00010047      cs=00000008
    rax=0000000000000000 rcx=0000000000000001 rdx=0000000000000047 rbx=0000000000402f79
    rbp=0000000000456240 rsi=0000000000000001 rdi=0000000000000000
    r8=000000000000000a  r9=00000000000003f8 r10=0000000080010011 r11=0000000000000000
    r12=0000000000000003 r13=0000000000000708 r14=0000000000000000 r15=0000000000000000
    cr0=0000000080010031 cr2=0000000000000000 cr3=0000000007fff000 cr4=0000000000002020
    cr8=0000000000000000
    STACK: @4051a6 40523e 400f7f 402059 40028f
    
    We should hide and forbid VPID in L1 if it is disabled on L0. However, nested VPID
    enable bit is set unconditionally during setup nested vmx exec controls though VPID
    is not exposed through nested VMX capablity. This patch fixes it by don't set nested
    VPID enable bit if it is disabled on L0.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: stable@vger.kernel.org
    Fixes: 5c614b35 (KVM: nVMX: nested VPID emulation)
    Signed-off-by: NWanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    63cb6d5f
vmx.c 329.4 KB