From nobody Mon Feb 9 01:21:47 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=1560863528; cv=none; d=zoho.com; s=zohoarc; b=IKmP3SPln59RuQGwKXTUFIl8WqiQ4lc1L5P0EulSfoZiTg0Uoa1R4rIwqkiW++CrWvThbSQCanS0E7Pllzl3rxcSCRD6bhgabm7wPEyPd2qLVRVB52u/h6Vym4iP7gmcvyZpZHNCRUhIJZ60q2bMQKax5LoiAb/Do7q/HLXYYas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1560863528; 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=pPyLd6LXyRW5eXVQhaypNGuzz2tsgfhbZWgO1ndKfms=; b=VBox1/f+LE8gQgeNTo85ABbhslPIuD4uBijPVQASosNTxm9qnUZx2fX+1SYXV1ABwSv8wfJaASQ0D/sdWIzcSBreBSngYLMN8OBolEaJ2ullbw5BSmbDObnOAb+tswV927ux2kxZoJk6URHJa8HPN4vPg/C5b/yBRjuK+gDP3pY= 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 1560863528599305.2332990599459; Tue, 18 Jun 2019 06:12:08 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 381A499C1D; Tue, 18 Jun 2019 13:12:06 +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 0B55582764; Tue, 18 Jun 2019 13:12:06 +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 C5578206DB; Tue, 18 Jun 2019 13:12:05 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x5IDAhBl018799 for ; Tue, 18 Jun 2019 09:10:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4F5581001DD7; Tue, 18 Jun 2019 13:10:43 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id F11081001DCB for ; Tue, 18 Jun 2019 13:10:42 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Tue, 18 Jun 2019 15:10:23 +0200 Message-Id: <7f3f5c8ec318502b51b8a2e75eba6a316f5d0fa8.1560863172.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 14/15] qemu: conf: Add debug option to allow disabling qemu capabilities 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.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 18 Jun 2019 13:12:07 +0000 (UTC) Content-Type: text/plain; charset="utf-8" In cases when e.g. a new feature breaks upstream behaviour it's useful to allow users to disable the new feature to verify the regression and possibly use it as a workaround until a fix is available. The new qemu.conf option named "capability_filters" allows to remove qemu capabilities from the detected bitmap. This patch introduces the configuration infrastructure to parse the option and pass it around. Signed-off-by: Peter Krempa Reviewed-by: J=C3=A1n Tomko --- src/qemu/libvirtd_qemu.aug | 3 +++ src/qemu/qemu.conf | 7 +++++++ src/qemu/qemu_conf.c | 17 +++++++++++++++++ src/qemu/qemu_conf.h | 2 ++ src/qemu/test_libvirtd_qemu.aug.in | 3 +++ 5 files changed, 32 insertions(+) diff --git a/src/qemu/libvirtd_qemu.aug b/src/qemu/libvirtd_qemu.aug index b311f02da6..6821cc4a29 100644 --- a/src/qemu/libvirtd_qemu.aug +++ b/src/qemu/libvirtd_qemu.aug @@ -126,6 +126,8 @@ module Libvirtd_qemu =3D let swtpm_entry =3D str_entry "swtpm_user" | str_entry "swtpm_group" + let capability_filters_entry =3D str_array_entry "capability_filters" + (* Each entry in the config is one of the following ... *) let entry =3D default_tls_entry | vnc_entry @@ -147,6 +149,7 @@ module Libvirtd_qemu =3D | vxhs_entry | nbd_entry | swtpm_entry + | capability_filters_entry let comment =3D [ label "#comment" . del /#[ \t]*/ "# " . store /([^ \= t\n][^\n]*)?/ . del /\n/ "\n" ] let empty =3D [ label "#empty" . eol ] diff --git a/src/qemu/qemu.conf b/src/qemu/qemu.conf index 5a85789d81..1969b3f0a1 100644 --- a/src/qemu/qemu.conf +++ b/src/qemu/qemu.conf @@ -825,3 +825,10 @@ # #swtpm_user =3D "tss" #swtpm_group =3D "tss" + +# For debugging and testing purposes it's sometimes useful to be able to d= isable +# libvirt behaviour based on the capabilities of the qemu process. This op= tion +# allows to do so. DO _NOT_ use in production and beaware that the behavio= ur +# may change across versions. +# +#capability_filters =3D [ "capname" ] diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 745e0f21bd..8312f99f80 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -381,6 +381,8 @@ static void virQEMUDriverConfigDispose(void *obj) VIR_FREE(cfg->memoryBackingDir); VIR_FREE(cfg->swtpmStorageDir); + + virStringListFree(cfg->capabilityfilters); } @@ -984,6 +986,18 @@ virQEMUDriverConfigLoadSWTPMEntry(virQEMUDriverConfigP= tr cfg, } +static int +virQEMUDriverConfigLoadCapsFiltersEntry(virQEMUDriverConfigPtr cfg, + virConfPtr conf) +{ + if (virConfGetValueStringList(conf, "capability_filters", false, + &cfg->capabilityfilters) < 0) + return -1; + + return 0; +} + + int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPtr cfg, const char *filename, bool privileged) @@ -1053,6 +1067,9 @@ int virQEMUDriverConfigLoadFile(virQEMUDriverConfigPt= r cfg, if (virQEMUDriverConfigLoadSWTPMEntry(cfg, conf) < 0) goto cleanup; + if (virQEMUDriverConfigLoadCapsFiltersEntry(cfg, conf) < 0) + goto cleanup; + ret =3D 0; cleanup: diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h index 386e774653..8bef009bc9 100644 --- a/src/qemu/qemu_conf.h +++ b/src/qemu/qemu_conf.h @@ -218,6 +218,8 @@ struct _virQEMUDriverConfig { uid_t swtpm_user; gid_t swtpm_group; + + char **capabilityfilters; }; /* Main driver state */ diff --git a/src/qemu/test_libvirtd_qemu.aug.in b/src/qemu/test_libvirtd_qe= mu.aug.in index fea1d308b7..50b728ad22 100644 --- a/src/qemu/test_libvirtd_qemu.aug.in +++ b/src/qemu/test_libvirtd_qemu.aug.in @@ -104,3 +104,6 @@ module Test_libvirtd_qemu =3D { "pr_helper" =3D "/usr/bin/qemu-pr-helper" } { "swtpm_user" =3D "tss" } { "swtpm_group" =3D "tss" } +{ "capability_filters" + { "1" =3D "capname" } +} --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list