Hello community, here is the log from the commit of package libvirt for openSUSE:Factory checked in at 2017-04-20 20:47:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libvirt (Old) and /work/SRC/openSUSE:Factory/.libvirt.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libvirt" Thu Apr 20 20:47:50 2017 rev:226 rq:487722 version:3.2.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libvirt/libvirt.changes 2017-04-07 14:18:45.983721809 +0200 +++ /work/SRC/openSUSE:Factory/.libvirt.new/libvirt.changes 2017-04-20 20:47:52.194095395 +0200 @@ -1,0 +2,8 @@ +Wed Apr 12 22:06:09 UTC 2017 - [email protected] + +- qemu: Fix regression when hyperv/vendor_id feature is used + Added patch: + ae102b5d7-qemu-fix-regression-when-hyperv-vendor_id-feature-is-used.patch + boo#1033893 + +------------------------------------------------------------------- New: ---- ae102b5d7-qemu-fix-regression-when-hyperv-vendor_id-feature-is-used.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libvirt.spec ++++++ --- /var/tmp/diff_new_pack.yEaLzx/_old 2017-04-20 20:47:55.753592112 +0200 +++ /var/tmp/diff_new_pack.yEaLzx/_new 2017-04-20 20:47:55.757591546 +0200 @@ -317,6 +317,7 @@ Source99: baselibs.conf Source100: %{name}-rpmlintrc # Upstream patches +Patch0: ae102b5d7-qemu-fix-regression-when-hyperv-vendor_id-feature-is-used.patch # Patches pending upstream review Patch100: libxl-dom-reset.patch Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch @@ -885,6 +886,7 @@ %prep %setup -q +%patch0 -p1 %patch100 -p1 %patch101 -p1 %patch150 -p1 ++++++ ae102b5d7-qemu-fix-regression-when-hyperv-vendor_id-feature-is-used.patch ++++++ >From ae102b5d7bccd29bc6015a3e0acefeaa90d097ac Mon Sep 17 00:00:00 2001 From: Jiri Denemark <[email protected]> Date: Thu, 6 Apr 2017 13:52:30 +0200 Subject: [PATCH] qemu: Fix regression when hyperv/vendor_id feature is used 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-ge9dbe7011, 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-g95bbe4bf5, which effectively did not check VIR_DOMAIN_HYPERV_VENDOR_ID at all. https://bugzilla.redhat.com/show_bug.cgi?id=1439424 Signed-off-by: Jiri Denemark <[email protected]> --- src/qemu/qemu_process.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index e450d06..8323a18 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3793,6 +3793,10 @@ qemuProcessVerifyHypervFeatures(virDomainDefPtr def, int rc; for (i = 0; i < VIR_DOMAIN_HYPERV_LAST; i++) { + /* always supported string property */ + if (i == VIR_DOMAIN_HYPERV_VENDOR_ID) + continue; + if (def->hyperv_features[i] != VIR_TRISTATE_SWITCH_ON) continue; @@ -3821,13 +3825,13 @@ qemuProcessVerifyHypervFeatures(virDomainDefPtr def, case VIR_DOMAIN_HYPERV_SYNIC: case VIR_DOMAIN_HYPERV_STIMER: case VIR_DOMAIN_HYPERV_RESET: - case VIR_DOMAIN_HYPERV_VENDOR_ID: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("host doesn't support hyperv '%s' feature"), virDomainHypervTypeToString(i)); return -1; /* coverity[dead_error_begin] */ + case VIR_DOMAIN_HYPERV_VENDOR_ID: case VIR_DOMAIN_HYPERV_LAST: break; } -- 1.7.1
