• Sean Christopherson's avatar
    KVM: x86: Refactor the MMIO SPTE generation handling · cae7ed3c
    Sean Christopherson authored
    The code to propagate the memslots generation number into MMIO sptes is
    a bit convoluted.  The "what" is relatively straightfoward, e.g. the
    comment explaining which bits go where is quite readable, but the "how"
    requires a lot of staring to understand what is happening.  For example,
    'MMIO_GEN_LOW_SHIFT' is actually used to calculate the high bits of the
    spte, while 'MMIO_SPTE_GEN_LOW_SHIFT' is used to calculate the low bits.
    
    Refactor the code to:
    
      - use #defines whose values align with the bits defined in the comment
      - use consistent code for both the high and low mask
      - explicitly highlight the handling of bit 0 (update in-progress flag)
      - explicitly call out that the defines are for MMIO sptes (to avoid
        confusion with the per-vCPU MMIO cache, which uses the full memslots
        generation)
    
    In addition to making the code a little less magical, this paves the way
    for moving the update in-progress flag to bit 63 without having to
    simultaneously rewrite all of the MMIO spte code.
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    cae7ed3c
mmu.c 159 KB