From nobody Sun Feb 8 19:25:39 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1560937325; cv=none; d=zoho.com; s=zohoarc; b=h9QV2Zy/FOnOI3kc/8OOvHoTpjNJlDTZKH9NsikFaBXJ7g4Txr/zgUTfMtnwCXrbl/Xi3cqQNAXGd7Zi7lvh61ItIrLsXOWjr/T1slWoKcPJo05nG8d1inMYvL1YE3PWXdOqpeZcufvVmKJLF8GJAgrMhp0AIRVhBA0cdOhKAdk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560937325; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=UcvmuMeIzO4VhVpbELBpXHPpwIiqwPy94U6OIkGdoMc=; b=Y71MtnLWS/1WYUGsFBerv5YVFe/FeaAzK3QDdQlxkOPURNr+8L6PXkdjghdad4G7i50CfaCA7ytXFMxKq5/264t+C/Gsp+iKbjRhwY4k52MepC5kdLBEQ8v7CVwxQ60E44FUuJRM21XA2DzxuAh/lJsN6xQ9PskkYVR4gyuBb1k= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1560937325186234.87465905530053; Wed, 19 Jun 2019 02:42:05 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2118960CC; Wed, 19 Jun 2019 09:42:02 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E91B21001DCB; Wed, 19 Jun 2019 09:42:01 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id AA837206D6; Wed, 19 Jun 2019 09:42:01 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5J9cVjk024379 for ; Wed, 19 Jun 2019 05:38:31 -0400 Received: by smtp.corp.redhat.com (Postfix) id 70985183F0; Wed, 19 Jun 2019 09:38:31 +0000 (UTC) Received: from orkuz.int.mamuti.net (ovpn-204-21.brq.redhat.com [10.40.204.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 186F960634 for ; Wed, 19 Jun 2019 09:38:31 +0000 (UTC) Received: by orkuz.int.mamuti.net (Postfix, from userid 500) id AA6782A411F; Wed, 19 Jun 2019 11:38:23 +0200 (CEST) From: Jiri Denemark To: libvir-list@redhat.com Date: Wed, 19 Jun 2019 11:38:12 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 15/24] qemu_command: Use canonical names of CPU features X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 19 Jun 2019 09:42:03 +0000 (UTC) Content-Type: text/plain; charset="utf-8" When building QEMU command line, we should use the preferred spelling of each CPU feature without relying on compatibility aliases (which may be removed at some point). The "unavailable-features" CPU property is used as a witness for the correct names of the features in our translation table. Signed-off-by: Jiri Denemark --- src/qemu/qemu_capabilities.c | 8 +++++++- src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 2 ++ tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 1 + tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args | 6 +++--- tests/qemuxml2argvdata/eoi-disabled.x86_64-latest.args | 2 +- tests/qemuxml2argvdata/eoi-enabled.x86_64-latest.args | 2 +- .../kvmclock+eoi-disabled.x86_64-latest.args | 2 +- .../pv-spinlock-disabled.x86_64-latest.args | 2 +- .../pv-spinlock-enabled.x86_64-latest.args | 2 +- 10 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 3af6923e6f..c742838383 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -532,6 +532,7 @@ VIR_ENUM_IMPL(virQEMUCaps, "nbd-bitmap", "x86-max-cpu", "cpu-unavailable-features", + "canonical-cpu-features", ); =20 =20 @@ -2892,7 +2893,9 @@ virQEMUCapsCPUFeatureTranslate(virQEMUCapsPtr qemuCap= s, if (ARCH_IS_X86(qemuCaps->arch)) table =3D virQEMUCapsCPUFeaturesX86; =20 - if (!table || !feature) + if (!table || + !feature || + !virQEMUCapsGet(qemuCaps, QEMU_CAPS_CANONICAL_CPU_FEATURES)) return feature; =20 for (entry =3D table; entry->libvirt; entry++) { @@ -4398,6 +4401,9 @@ virQEMUCapsInitProcessCaps(virQEMUCapsPtr qemuCaps) * we are able to pass the custom 'device_id' for SCSI disks and cdrom= s. */ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SCSI_DISK_DEVICE_ID)) virQEMUCapsClear(qemuCaps, QEMU_CAPS_BLOCKDEV); + + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_UNAVAILABLE_FEATURES)) + virQEMUCapsSet(qemuCaps, QEMU_CAPS_CANONICAL_CPU_FEATURES); } =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index e1727a1a1c..29f13ae977 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -514,6 +514,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ QEMU_CAPS_NBD_BITMAP, /* nbd-server-add supports bitmap */ QEMU_CAPS_X86_MAX_CPU,/* max-x86_64-cpu type exists */ QEMU_CAPS_CPU_UNAVAILABLE_FEATURES, /* "unavailable-features" CPU prop= erty */ + QEMU_CAPS_CANONICAL_CPU_FEATURES, /* avoid CPU feature aliases */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 08da30d10c..15f2990189 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7045,6 +7045,8 @@ qemuBuildCpuFeature(virQEMUCapsPtr qemuCaps, const char *name, bool state) { + name =3D virQEMUCapsCPUFeatureToQEMU(qemuCaps, name); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_QUERY_CPU_MODEL_EXPANSION)) virBufferAsprintf(buf, ",%s=3D%s", name, state ? "on" : "off"); else diff --git a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_4.1.0.x86_64.xml index 24be3a546e..4cc91e677e 100644 --- a/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_4.1.0.x86_64.xml @@ -206,6 +206,7 @@ + 4000050 0 43100759 diff --git a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args b/te= sts/qemuxml2argvdata/cpu-translation.x86_64-latest.args index 7a1546fb36..9322b826f4 100644 --- a/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args +++ b/tests/qemuxml2argvdata/cpu-translation.x86_64-latest.args @@ -13,9 +13,9 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu Haswell,pclmuldq=3Don,ds_cpl=3Don,tsc_adjust=3Don,fxsr_opt=3Don,lahf_= lm=3Don,\ -cmp_legacy=3Don,nodeid_msr=3Don,perfctr_core=3Don,perfctr_nb=3Don,kvm_pv_e= oi=3Don,\ -kvm_pv_unhalt=3Don \ +-cpu Haswell,pclmulqdq=3Don,ds-cpl=3Don,tsc-adjust=3Don,fxsr-opt=3Don,lahf= -lm=3Don,\ +cmp-legacy=3Don,nodeid-msr=3Don,perfctr-core=3Don,perfctr-nb=3Don,kvm-pv-e= oi=3Don,\ +kvm-pv-unhalt=3Don \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 1,sockets=3D1,cores=3D1,threads=3D1 \ diff --git a/tests/qemuxml2argvdata/eoi-disabled.x86_64-latest.args b/tests= /qemuxml2argvdata/eoi-disabled.x86_64-latest.args index caae868abf..f811931759 100644 --- a/tests/qemuxml2argvdata/eoi-disabled.x86_64-latest.args +++ b/tests/qemuxml2argvdata/eoi-disabled.x86_64-latest.args @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu qemu32,kvm_pv_eoi=3Doff \ +-cpu qemu32,kvm-pv-eoi=3Doff \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 6,sockets=3D6,cores=3D1,threads=3D1 \ diff --git a/tests/qemuxml2argvdata/eoi-enabled.x86_64-latest.args b/tests/= qemuxml2argvdata/eoi-enabled.x86_64-latest.args index abafafa411..25c03ae4d2 100644 --- a/tests/qemuxml2argvdata/eoi-enabled.x86_64-latest.args +++ b/tests/qemuxml2argvdata/eoi-enabled.x86_64-latest.args @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu qemu32,kvm_pv_eoi=3Don \ +-cpu qemu32,kvm-pv-eoi=3Don \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 6,sockets=3D6,cores=3D1,threads=3D1 \ diff --git a/tests/qemuxml2argvdata/kvmclock+eoi-disabled.x86_64-latest.arg= s b/tests/qemuxml2argvdata/kvmclock+eoi-disabled.x86_64-latest.args index 23d2bcb87e..f13573df8a 100644 --- a/tests/qemuxml2argvdata/kvmclock+eoi-disabled.x86_64-latest.args +++ b/tests/qemuxml2argvdata/kvmclock+eoi-disabled.x86_64-latest.args @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu qemu32,kvmclock=3Doff,kvm_pv_eoi=3Doff \ +-cpu qemu32,kvmclock=3Doff,kvm-pv-eoi=3Doff \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 6,sockets=3D6,cores=3D1,threads=3D1 \ diff --git a/tests/qemuxml2argvdata/pv-spinlock-disabled.x86_64-latest.args= b/tests/qemuxml2argvdata/pv-spinlock-disabled.x86_64-latest.args index b78533cf39..13fd7253a9 100644 --- a/tests/qemuxml2argvdata/pv-spinlock-disabled.x86_64-latest.args +++ b/tests/qemuxml2argvdata/pv-spinlock-disabled.x86_64-latest.args @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu qemu32,kvm_pv_unhalt=3Doff \ +-cpu qemu32,kvm-pv-unhalt=3Doff \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 6,sockets=3D6,cores=3D1,threads=3D1 \ diff --git a/tests/qemuxml2argvdata/pv-spinlock-enabled.x86_64-latest.args = b/tests/qemuxml2argvdata/pv-spinlock-enabled.x86_64-latest.args index a016e80016..919bbd037e 100644 --- a/tests/qemuxml2argvdata/pv-spinlock-enabled.x86_64-latest.args +++ b/tests/qemuxml2argvdata/pv-spinlock-enabled.x86_64-latest.args @@ -13,7 +13,7 @@ QEMU_AUDIO_DRV=3Dnone \ -object secret,id=3DmasterKey0,format=3Draw,\ file=3D/tmp/lib/domain--1-QEMUGuest1/master-key.aes \ -machine pc,accel=3Dtcg,usb=3Doff,dump-guest-core=3Doff \ --cpu qemu32,kvm_pv_unhalt=3Don \ +-cpu qemu32,kvm-pv-unhalt=3Don \ -m 214 \ -overcommit mem-lock=3Doff \ -smp 6,sockets=3D6,cores=3D1,threads=3D1 \ --=20 2.22.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list