• Sean Christopherson's avatar
    KVM: Register cpuhp and syscore callbacks when enabling hardware · 9a798b13
    Sean Christopherson authored
    Register KVM's cpuhp and syscore callback when enabling virtualization
    in hardware instead of registering the callbacks during initialization,
    and let the CPU up/down framework invoke the inner enable/disable
    functions.  Registering the callbacks during initialization makes things
    more complex than they need to be, as KVM needs to be very careful about
    handling races between enabling CPUs being onlined/offlined and hardware
    being enabled/disabled.
    
    Intel TDX support will require KVM to enable virtualization during KVM
    initialization, i.e. will add another wrinkle to things, at which point
    sorting out the potential races with kvm_usage_count would become even
    more complex.
    
    Note, using the cpuhp framework has a subtle behavioral change: enabling
    will be done serially across all CPUs, whereas KVM currently sends an IPI
    to all CPUs in parallel.  While serializing virtualization enabling could
    create undesirable latency, the issue is limited to the 0=>1 transition of
    VM creation.  And even that can be mitigated, e.g. by letting userspace
    force virtualization to be enabled when KVM is initialized.
    
    Cc: Chao Gao <chao.gao@intel.com>
    Reviewed-by: default avatarKai Huang <kai.huang@intel.com>
    Acked-by: default avatarKai Huang <kai.huang@intel.com>
    Tested-by: default avatarFarrah Chen <farrah.chen@intel.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-ID: <20240830043600.127750-3-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    9a798b13
kvm_main.c 167 KB