[Pkg-libvirt-maintainers] Bug#944248: Qemu dropped osxsave/ospke feature triggering upgrade issues

Michal Arbet michal.arbet at ultimum.io
Wed Nov 27 13:03:38 GMT 2019


Hello Guido,

Version was current buster 5.0.0-4
I've built new version with fix and open release bug here ->
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=944294
I've also forked libvirt git repo and open merge request here ->
https://salsa.debian.org/libvirt-team/libvirt/merge_requests/36  ( there is
conflict in debian/series as there is one commit after tag debian/5.0.0-4,
but not big issue)

Debdiff attached.



st 27. 11. 2019 v 12:10 odesílatel Guido Günther <agx at sigxcpu.org> napsal:

> Hi,
> On Wed, Nov 06, 2019 at 05:39:49PM +0100, Michal Arbet wrote:
> > Package: libvirt-daemon
> > Version: 5.0.0-4
> >
> > Hello,
> >
> > I am facing the same issue in debian as it is reported in ubuntu
> launchpad
> > bug
> > https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1825195
> >
> > Could you please fix and release security update ?
> > Patches from ubuntu package attached.
> >
> > I've tried to apply these patches to source in
> > git at salsa.debian.org:libvirt-team/libvirt.git
> > in debian/buster branch and they applied successfully.
>
>
> >
> > Thanks,
> > Michal Arbet
>
> > From b51bfa70554f4bc43cbd6841b78d67b391909184 Mon Sep 17 00:00:00 2001
> > From: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> > Date: Thu, 25 Apr 2019 11:51:55 +0200
> > Subject: [PATCH 2/2] qemuxml2argvtest: add test for remove cpu features
> >
> > CPU features that always were a no-op in qemu got removed there.
> > We no more specify them as that would trigger errors and fail to start
> > qemu. This test ensures that those features really are not rendered into
> > qemu command line.
> >
> > Without the related fix this test will trigger and fail like:
> >  In 'tests/qemuxml2argvdata/cpu-no-removed-features.args':
> >  Offset 371
> >  Expect [ ]
> >  Actual [,-osxsave,-ospke ]
> >
> > Signed-off-by: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> > Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> > Tested-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> >
> > Origin: backport,
> https://libvirt.org/git/?p=libvirt.git;a=commit;h=b51bfa70554f4bc43cbd6841b78d67b391909184
> > Bug-Ubuntu: https://bugs.launchpad.net/bugs/1825195
> > Last-Update: 2019-05-15
> >
> > ---
> >  .../cpu-no-removed-features.args              | 29 +++++++++++++++++++
> >  .../cpu-no-removed-features.xml               | 23 +++++++++++++++
> >  tests/qemuxml2argvtest.c                      |  1 +
> >  3 files changed, 53 insertions(+)
> >  create mode 100644 tests/qemuxml2argvdata/cpu-no-removed-features.args
> >  create mode 100644 tests/qemuxml2argvdata/cpu-no-removed-features.xml
> >
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/cpu-no-removed-features.args
> > @@ -0,0 +1,25 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-x86_64 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-machine pc,accel=kvm,usb=off,dump-guest-core=off \
> > +-cpu core2duo \
> > +-m 214 \
> > +-smp 6,sockets=6,cores=1,threads=1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-display none \
> > +-no-user-config \
> > +-nodefaults \
> > +-chardev
> socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/monitor.sock,\
> > +server,nowait \
> > +-mon chardev=charmonitor,id=monitor,mode=control \
> > +-rtc base=utc \
> > +-no-shutdown \
> > +-no-acpi \
> > +-usb \
> > +-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/cpu-no-removed-features.xml
> > @@ -0,0 +1,23 @@
> > +<domain type='kvm'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219100</memory>
> > +  <currentMemory unit='KiB'>219100</currentMemory>
> > +  <vcpu placement='static'>6</vcpu>
> > +  <os>
> > +    <type arch='x86_64' machine='pc'>hvm</type>
> > +    <boot dev='network'/>
> > +  </os>
> > +  <cpu match='exact'>
> > +    <model>core2duo</model>
> > +    <feature name='osxsave' policy='optional'/>
> > +    <feature name='ospke' policy='optional'/>
> > +  </cpu>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +      <emulator>/usr/bin/qemu-system-x86_64</emulator>
> > +  </devices>
> > +</domain>
> > --- a/tests/qemuxml2argvtest.c
> > +++ b/tests/qemuxml2argvtest.c
> > @@ -1771,6 +1771,7 @@ mymain(void)
> >      DO_TEST("cpu-fallback", QEMU_CAPS_KVM);
> >      DO_TEST_FAILURE("cpu-nofallback", QEMU_CAPS_KVM);
> >      DO_TEST("cpu-strict1", QEMU_CAPS_KVM);
> > +    DO_TEST("cpu-no-removed-features", QEMU_CAPS_KVM);
> >      DO_TEST("cpu-numa1", NONE);
> >      DO_TEST("cpu-numa2", NONE);
> >      DO_TEST("cpu-numa-no-memory-element", NONE);
>
> > From 2900575db892700fab8a4b8541474d9bd3444a4a Mon Sep 17 00:00:00 2001
> > From: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> > Date: Thu, 25 Apr 2019 11:04:29 +0200
> > Subject: [PATCH 1/2] qemu: do not define known no-op features
> >
> > Qemu dropped cpu features for osxsave and ospke [1][2].
> > The reason for the instant removal is that those features were never
> > configurable as discussed in [3].
> >
> > Fortunately the use cases adding those flags in the past are rare, but
> > they exist. One that I identified are e.g. older virt-install when used
> > with --cpu=host-model and there always could be the case of a user
> > adding it to the guest xml.
> >
> > This triggers an issue like:
> >   qemu-system-x86_64: can't apply global Broadwell-noTSX-x86_64-
> >   cpu.osxsave=on: Property '.osxsave' not found
> >
> > Ensure that this does no more break spawning newer qemu versions by
> > not rendering those features into the qemu command line.
> >
> > Fixes: https://bugs.launchpad.net/fedora/+source/qemu/+bug/1825195
> > Resolves: https://bugzilla.redhat.com/1644848
> >
> > [1]: https://git.qemu.org/?p=qemu.git;a=commit;h=f1a2352
> > [2]: https://git.qemu.org/?p=qemu.git;a=commit;h=9ccb978
> > [3]: https://www.mail-archive.com/qemu-devel@nongnu.org/msg561877.html
> >
> > Signed-off-by: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> > Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> > Tested-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
> >
> > Origin: backport,
> https://libvirt.org/git/?p=libvirt.git;a=commit;h=2900575db892700fab8a4b8541474d9bd3444a4a
> > Bug-Ubuntu: https://bugs.launchpad.net/bugs/1825195
> > Last-Update: 2019-05-15
> >
> > ---
> >  src/qemu/qemu_command.c                       | 23 +++++++++++++++++++
> >  .../qemuxml2argvdata/cpu-host-model-cmt.args  |  2 +-
> >  tests/qemuxml2argvdata/cpu-tsc-frequency.args |  4 ++--
> >  3 files changed, 26 insertions(+), 3 deletions(-)
> >
> > --- a/src/qemu/qemu_command.c
> > +++ b/src/qemu/qemu_command.c
> > @@ -6844,6 +6844,27 @@ qemuBuildGlobalControllerCommandLine(vir
> >      return 0;
> >  }
> >
> > +/**
> > + * qemuFeatureNoEffect:
> > + * @feature: CPU Feature
> > + *
> > + * Returns true, if the feature is known to have (never had) an effect
> on QEMU.
> > + * Those features might be dropped in qemu without a longer deprecation
> cycle
> > + * and must therefore be known e.g. to no more define them on command
> line.
> > + */
> > +static bool
> > +qemuFeatureNoEffect(virCPUFeatureDefPtr feature)
> > +{
> > +    if (!feature->name)
> > +        return false;
> > +
> > +    if (STREQ(feature->name, "osxsave"))
> > +        return true;
> > +    if (STREQ(feature->name, "ospke"))
> > +        return true;
> > +
> > +    return false;
> > +}
> >
> >  static int
> >  qemuBuildCpuModelArgStr(virQEMUDriverPtr driver,
> > @@ -6912,6 +6933,8 @@ qemuBuildCpuModelArgStr(virQEMUDriverPtr
> >          virBufferAsprintf(buf, ",vendor=%s", cpu->vendor_id);
> >
> >      for (i = 0; i < cpu->nfeatures; i++) {
> > +        if (qemuFeatureNoEffect(&(cpu->features[i])))
> > +            continue;
> >          switch ((virCPUFeaturePolicy) cpu->features[i].policy) {
> >          case VIR_CPU_FEATURE_FORCE:
> >          case VIR_CPU_FEATURE_REQUIRE:
> > --- a/tests/qemuxml2argvdata/cpu-host-model-cmt.args
> > +++ b/tests/qemuxml2argvdata/cpu-host-model-cmt.args
> > @@ -9,7 +9,7 @@ QEMU_AUDIO_DRV=none \
> >  -S \
> >  -machine pc,accel=tcg,usb=off,dump-guest-core=off \
> >  -cpu
> Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\
> >
> -+smx,+est,+tm2,+xtpr,+pdcm,+osxsave,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \
> > ++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm \
> >  -m 214 \
> >  -smp 6,sockets=6,cores=1,threads=1 \
> >  -uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > --- a/tests/qemuxml2argvdata/cpu-tsc-frequency.args
> > +++ b/tests/qemuxml2argvdata/cpu-tsc-frequency.args
> > @@ -9,7 +9,7 @@ QEMU_AUDIO_DRV=none \
> >  -S \
> >  -machine pc,accel=kvm,usb=off,dump-guest-core=off \
> >  -cpu
> Haswell,+vme,+ds,+acpi,+ss,+ht,+tm,+pbe,+dtes64,+monitor,+ds_cpl,+vmx,\
> >
> -+smx,+est,+tm2,+xtpr,+pdcm,+osxsave,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,\
> > ++smx,+est,+tm2,+xtpr,+pdcm,+f16c,+rdrand,+pdpe1gb,+abm,+lahf_lm,\
> >  +invtsc,tsc-frequency=3504000000 \
> >  -m 214 \
> >  -smp 1,sockets=1,cores=1,threads=1 \
>
> which qemu version did you hit this with?
>  -- Guido
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-libvirt-maintainers/attachments/20191127/c1b9474f/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libvirt_5.0.0-4+deb10u1.debdiff
Type: application/octet-stream
Size: 13501 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-libvirt-maintainers/attachments/20191127/c1b9474f/attachment-0001.obj>


More information about the Pkg-libvirt-maintainers mailing list