• Sean Christopherson's avatar
    KVM: SVM: Treat SVM as unsupported when running as an SEV guest · ccd85d90
    Sean Christopherson authored
    Don't let KVM load when running as an SEV guest, regardless of what
    CPUID says.  Memory is encrypted with a key that is not accessible to
    the host (L0), thus it's impossible for L0 to emulate SVM, e.g. it'll
    see garbage when reading the VMCB.
    
    Technically, KVM could decrypt all memory that needs to be accessible to
    the L0 and use shadow paging so that L0 does not need to shadow NPT, but
    exposing such information to L0 largely defeats the purpose of running as
    an SEV guest.  This can always be revisited if someone comes up with a
    use case for running VMs inside SEV guests.
    
    Note, VMLOAD, VMRUN, etc... will also #GP on GPAs with C-bit set, i.e. KVM
    is doomed even if the SEV guest is debuggable and the hypervisor is willing
    to decrypt the VMCB.  This may or may not be fixed on CPUs that have the
    SVME_ADDR_CHK fix.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210202212017.2486595-1-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    ccd85d90
svm.c 120 KB