• J
    qemu: Fix regression when hyperv/vendor_id feature is used · 04535336
    Jiri Denemark 提交于
    qemuProcessVerifyHypervFeatures is supposed to check whether all
    requested hyperv features were actually honored by QEMU/KVM. This is
    done by checking the corresponding CPUID bits reported by the virtual
    CPU. In other words, it doesn't work for string properties, such as
    VIR_DOMAIN_HYPERV_VENDOR_ID (there is no CPUID bit we could check). We
    could theoretically check all 96 bits corresponding to the vendor
    string, but luckily we don't have to check the feature at all. If QEMU
    is too old to support hyperv features, the domain won't even start.
    Otherwise, it is always supported.
    
    Without this patch, libvirt refuses to start a domain which contains
    
      <features>
        <hyperv>
          <vendor_id state='on' value='...'/>
        </hyperv>
      </features>
    
    reporting internal error: "unknown CPU feature __kvm_hv_vendor_id.
    
    This regression was introduced by commit v3.1.0-186-ge9dbe701, which
    (by fixing the virCPUDataCheckFeature condition in
    qemuProcessVerifyHypervFeatures) revealed an old bug in the feature
    verification code. It's been there ever since the verification was
    implemented by commit v1.3.3-rc1-5-g95bbe4bf, which effectively did not
    check VIR_DOMAIN_HYPERV_VENDOR_ID at all.
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1439424Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
    (cherry picked from commit ae102b5d)
    04535336
qemu_process.c 210.7 KB