• Babu Moger's avatar
    KVM: SVM: Clear the CR4 register on reset · 9e46f6c6
    Babu Moger authored
    This problem was reported on a SVM guest while executing kexec.
    Kexec fails to load the new kernel when the PCID feature is enabled.
    
    When kexec starts loading the new kernel, it starts the process by
    resetting the vCPU's and then bringing each vCPU online one by one.
    The vCPU reset is supposed to reset all the register states before the
    vCPUs are brought online. However, the CR4 register is not reset during
    this process. If this register is already setup during the last boot,
    all the flags can remain intact. The X86_CR4_PCIDE bit can only be
    enabled in long mode. So, it must be enabled much later in SMP
    initialization.  Having the X86_CR4_PCIDE bit set during SMP boot can
    cause a boot failures.
    
    Fix the issue by resetting the CR4 register in init_vmcb().
    Signed-off-by: default avatarBabu Moger <babu.moger@amd.com>
    Message-Id: <161471109108.30811.6392805173629704166.stgit@bmoger-ubuntu>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9e46f6c6
svm.c 122 KB