• Paolo Bonzini's avatar
    KVM: x86: handle GBPAGE CPUID adjustment for EPT with generic code · fb7d4377
    Paolo Bonzini authored
    The clearing of the GBPAGE CPUID bit for VMX is wrong; support for 1GB
    pages in EPT has no relationship to whether 1GB pages should be marked as
    supported in CPUID.  This has no ill effect because we're only clearing
    the bit, but we're not marking 1GB pages as available when EPT is disabled
    (even though they are actually supported thanks to shadowing).  Instead,
    forcibly enable 1GB pages in the shadow paging case.
    
    This also eliminates an instance of the undesirable "unsigned f_* =
    *_supported ? F(*) : 0" pattern in the common CPUID handling code,
    and paves the way toward eliminating ->get_lpage_level().
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    fb7d4377
cpuid.c 26.9 KB