• Paolo Bonzini's avatar
    Merge branch 'kvm-redo-enable-virt' into HEAD · c09dd2bb
    Paolo Bonzini authored
    Register KVM's cpuhp and syscore callbacks when enabling virtualization in
    hardware, as the sole purpose of said callbacks is to disable and re-enable
    virtualization as needed.
    
    The primary motivation for this series is to simplify dealing with enabling
    virtualization for Intel's TDX, which needs to enable virtualization
    when kvm-intel.ko is loaded, i.e. long before the first VM is created.
    
    That said, this is a nice cleanup on its own.  By registering the callbacks
    on-demand, the callbacks themselves don't need to check kvm_usage_count,
    because their very existence implies a non-zero count.
    
    Patch 1 (re)adds a dedicated lock for kvm_usage_count.  This avoids a
    lock ordering issue between cpus_read_lock() and kvm_lock.  The lock
    ordering issue still exist in very rare cases, and will be fixed for
    good by switching vm_list to an (S)RCU-protected list.
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    c09dd2bb
x86.c 374 KB