• P
    KVM: SEV: Prohibit migration of a VM that has mirrors · 17d44a96
    Paolo Bonzini 提交于
    VMs that mirror an encryption context rely on the owner to keep the
    ASID allocated.  Performing a KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM
    would cause a dangling ASID:
    
    1. copy context from A to B (gets ref to A)
    2. move context from A to L (moves ASID from A to L)
    3. close L (releases ASID from L, B still references it)
    
    The right way to do the handoff instead is to create a fresh mirror VM
    on the destination first:
    
    1. copy context from A to B (gets ref to A)
    [later] 2. close B (releases ref to A)
    3. move context from A to L (moves ASID from A to L)
    4. copy context from L to M
    
    So, catch the situation by adding a count of how many VMs are
    mirroring this one's encryption context.
    
    Fixes: 0b020f5a ("KVM: SEV: Add support for SEV-ES intra host migration")
    Message-Id: <20211123005036.2954379-11-pbonzini@redhat.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    17d44a96
sev_migrate_tests.c 9.1 KB