• R
    hyperv: ensure VP index equal to QEMU cpu_index · e9688fab
    Roman Kagan 提交于
    Hyper-V identifies vCPUs by Virtual Processor (VP) index which can be
    queried by the guest via HV_X64_MSR_VP_INDEX msr.  It is defined by the
    spec as a sequential number which can't exceed the maximum number of
    vCPUs per VM.
    
    It has to be owned by QEMU in order to preserve it across migration.
    
    However, the initial implementation in KVM didn't allow to set this
    msr, and KVM used its own notion of VP index.  Fortunately, the way
    vCPUs are created in QEMU/KVM makes it likely that the KVM value is
    equal to QEMU cpu_index.
    
    So choose cpu_index as the value for vp_index, and push that to KVM on
    kernels that support setting the msr.  On older ones that don't, query
    the kernel value and assert that it's in sync with QEMU.
    
    Besides, since handling errors from vCPU init at hotplug time is
    impossible, disable vCPU hotplug.
    
    This patch also introduces accessor functions to encapsulate the mapping
    between a vCPU and its vp_index.
    Signed-off-by: NRoman Kagan <rkagan@virtuozzo.com>
    Message-Id: <20180702134156.13404-3-rkagan@virtuozzo.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    e9688fab
hyperv.h 1.1 KB