• Mingwei Zhang's avatar
    KVM: SVM: improve the code readability for ASID management · bb2baeb2
    Mingwei Zhang authored
    KVM SEV code uses bitmaps to manage ASID states. ASID 0 was always skipped
    because it is never used by VM. Thus, in existing code, ASID value and its
    bitmap postion always has an 'offset-by-1' relationship.
    
    Both SEV and SEV-ES shares the ASID space, thus KVM uses a dynamic range
    [min_asid, max_asid] to handle SEV and SEV-ES ASIDs separately.
    
    Existing code mixes the usage of ASID value and its bitmap position by
    using the same variable called 'min_asid'.
    
    Fix the min_asid usage: ensure that its usage is consistent with its name;
    allocate extra size for ASID 0 to ensure that each ASID has the same value
    with its bitmap position. Add comments on ASID bitmap allocation to clarify
    the size change.
    Signed-off-by: default avatarMingwei Zhang <mizhang@google.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Marc Orr <marcorr@google.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Alper Gun <alpergun@google.com>
    Cc: Dionna Glaze <dionnaglaze@google.com>
    Cc: Sean Christopherson <seanjc@google.com>
    Cc: Vipin Sharma <vipinsh@google.com>
    Cc: Peter Gonda <pgonda@google.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Message-Id: <20210802180903.159381-1-mizhang@google.com>
    [Fix up sev_asid_free to also index by ASID, as suggested by Sean
     Christopherson, and use nr_asids in sev_cpu_init. - Paolo]
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    bb2baeb2
sev.c 65.5 KB