Skip to content
  • Alex Williamson's avatar
    x86: Clear MTRRs on vCPU reset · 9db2efd9
    Alex Williamson authored
    
    
    The SDM specifies (June 2014 Vol3 11.11.5):
    
        On a hardware reset, the P6 and more recent processors clear the
        valid flags in variable-range MTRRs and clear the E flag in the
        IA32_MTRR_DEF_TYPE MSR to disable all MTRRs. All other bits in the
        MTRRs are undefined.
    
    We currently do none of that, so whatever MTRR settings you had prior
    to reset is what you have after reset.  Usually this doesn't matter
    because KVM often ignores the guest mappings and uses write-back
    anyway.  However, if you have an assigned device and an IOMMU that
    allows NoSnoop for that device, KVM defers to the guest memory
    mappings which are now stale after reset.  The result is that OVMF
    rebooting on such a configuration takes a full minute to LZMA
    decompress the firmware volume, a process that is nearly instant on
    the initial boot.
    
    Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
    Reviewed-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Cc: qemu-stable@nongnu.org
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9db2efd9