]> git.ipfire.org Git - thirdparty/libvirt.git/log
thirdparty/libvirt.git
9 days agoTranslated using Weblate (Spanish)
Weblate [Sun, 27 Jul 2025 22:57:10 +0000 (22:57 +0000)] 
Translated using Weblate (Spanish)

Currently translated at 59.2% (6484 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: Weblate <noreply-mt-weblate@weblate.org>
9 days agoTranslated using Weblate (Spanish)
Fco. Javier F. Serrador [Sun, 27 Jul 2025 22:57:10 +0000 (22:57 +0000)] 
Translated using Weblate (Spanish)

Currently translated at 59.2% (6484 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: "Fco. Javier F. Serrador" <fserrador@gmail.com>
Translated using Weblate (Spanish)

Currently translated at 58.1% (6362 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: "Fco. Javier F. Serrador" <fserrador@gmail.com>
Translated using Weblate (Spanish)

Currently translated at 55.7% (6098 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: "Fco. Javier F. Serrador" <fserrador@gmail.com>
Translated using Weblate (Spanish)

Currently translated at 55.6% (6091 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: "Fco. Javier F. Serrador" <fserrador@gmail.com>
Translated using Weblate (Spanish)

Currently translated at 54.7% (5987 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: "Fco. Javier F. Serrador" <fserrador@gmail.com>
9 days agoTranslated using Weblate (Spanish)
Emilio Herrera [Sun, 27 Jul 2025 22:57:09 +0000 (22:57 +0000)] 
Translated using Weblate (Spanish)

Currently translated at 53.6% (5871 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/es/

Signed-off-by: Emilio Herrera <ehespinosa57@gmail.com>
9 days agoTranslated using Weblate (Portuguese)
Américo Monteiro [Sun, 27 Jul 2025 22:57:09 +0000 (22:57 +0000)] 
Translated using Weblate (Portuguese)

Currently translated at 52.3% (5724 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 52.1% (5701 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 51.3% (5611 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 51.0% (5580 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 50.5% (5529 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 49.0% (5367 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 48.6% (5326 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 48.1% (5263 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 47.7% (5221 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 47.5% (5204 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 47.1% (5159 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 46.7% (5118 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 46.4% (5075 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 45.7% (5003 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 45.6% (4988 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 45.2% (4946 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 44.3% (4854 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 44.1% (4830 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 42.2% (4616 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 41.8% (4577 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 40.5% (4435 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 37.1% (4066 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 34.8% (3814 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 32.6% (3571 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 32.5% (3564 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 31.5% (3452 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 31.3% (3426 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 28.8% (3155 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 28.1% (3084 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 27.2% (2980 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 26.1% (2862 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 22.5% (2471 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 22.3% (2445 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 19.6% (2146 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 19.5% (2135 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 19.5% (2133 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 19.3% (2116 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 18.6% (2036 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 18.4% (2023 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 18.0% (1971 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 17.1% (1877 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 17.0% (1868 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 17.0% (1865 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 16.9% (1855 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 16.7% (1830 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 16.0% (1759 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 16.0% (1755 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 15.7% (1723 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 15.6% (1711 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 15.2% (1672 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 15.2% (1668 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 15.1% (1653 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 14.9% (1632 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 14.4% (1583 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 14.4% (1579 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 13.8% (1520 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 13.8% (1519 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 12.9% (1414 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 12.6% (1388 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 12.2% (1339 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 12.1% (1331 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 11.8% (1292 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 11.5% (1263 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 10.2% (1116 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 9.6% (1058 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 9.4% (1035 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 9.3% (1020 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 9.1% (1004 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 8.7% (952 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 7.8% (858 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
Translated using Weblate (Portuguese)

Currently translated at 7.6% (841 of 10937 strings)

Translation: libvirt/libvirt
Translate-URL: https://translate.fedoraproject.org/projects/libvirt/libvirt/pt/

Signed-off-by: Américo Monteiro <a_monteiro@gmx.com>
12 days agoNEWS: mention disabling deprecated features by default on s390 CPU models
Collin Walling [Thu, 24 Jul 2025 18:36:23 +0000 (14:36 -0400)] 
NEWS: mention disabling deprecated features by default on s390 CPU models

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Jiri Denemark <jdenemar@redhat.com>
12 days agoqemu: add default_cpu_deprecated_features configuration option
Boris Fiuczynski [Mon, 30 Jun 2025 03:19:30 +0000 (23:19 -0400)] 
qemu: add default_cpu_deprecated_features configuration option

Allow to define the default for deprecated_features when the attribute
is not set in the cpu defintion of a domain XML. If these features are
still desired, they may be reenabled via the deprecated_features='on'
attribute.

Some existing tests utilize this updated behavior, so update the CPU
features on the corresponding args files.

Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Signed-off-by: Collin Walling <walling@linux.ibm.com>
Acked-by: Thomas Huth <thuth@redhat.com>
12 days agotests: new qemuxmlactive tests for s390x
Boris Fiuczynski [Mon, 30 Jun 2025 03:19:29 +0000 (23:19 -0400)] 
tests: new qemuxmlactive tests for s390x

Add tests for active/inactive XML with deprecated_features attribute.

Note that for the qemuxmlactivetest, it is not possible to test an
inactive guest XML with the absence of "deprecated_features" attribute
and expect the active XML to have the attribute present.  This is due to
the fact that the tests never touch the code path in qemu_process that
trigger this change in the domain definition.

Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Acked-by: Thomas Huth <thuth@redhat.com>
12 days agoqemu: process: refactor deprecated features code
Collin Walling [Mon, 30 Jun 2025 03:19:28 +0000 (23:19 -0400)] 
qemu: process: refactor deprecated features code

Group up the deprecated features code into a single block to keep things
clean; only check if the deprecated_features attribute is present
once and then do relevent work.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Acked-by: Thomas Huth <thuth@redhat.com>
12 days agoqemu: caps: add virCPUFeaturePolicy param to virQEMUCapsUpdateCPUDeprecatedFeatures
Collin Walling [Mon, 30 Jun 2025 03:19:27 +0000 (23:19 -0400)] 
qemu: caps: add virCPUFeaturePolicy param to virQEMUCapsUpdateCPUDeprecatedFeatures

Currently, virQEMUCapsUpdateCPUDeprecatedFeatures only allows for
disabling deprecated features.  This locks the deprecated_features
attribute to only do something if set to 'off'.

Let's add a virCPUFeaturePolicy to the function's parameters which will
allow the caller to decide what happens to these features.

Add a test with guest XML using deprecated_features='on' to ensure the
API is working properly.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Acked-by: Thomas Huth <thuth@redhat.com>
12 days agodocs: domain: document deprecated_features attribute
Collin Walling [Mon, 30 Jun 2025 03:19:26 +0000 (23:19 -0400)] 
docs: domain: document deprecated_features attribute

Provide documentation for the deprecated_features XML attribute.
Available since 11.0.0, and supported for S390.

Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Acked-by: Thomas Huth <thuth@redhat.com>
12 days agodocs: domain: Add documentation for Intel TDX guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:25 +0000 (03:21 -0400)] 
docs: domain: Add documentation for Intel TDX guest

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemuxmlconftest: Add latest version of 'launch-security-tdx*' test data
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:24 +0000 (03:21 -0400)] 
qemuxmlconftest: Add latest version of 'launch-security-tdx*' test data

We now have the '+inteltdx' variant dumped from a modern qemu with tdx support,
add qemuxmlconftest data for that variant.

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemu: Support domain reset command for TDX guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:23 +0000 (03:21 -0400)] 
qemu: Support domain reset command for TDX guest

TDX guest doesn't support system_reset, so have to kill the old QEMU and
start a new one to simulate the reset. This can be achieved by calling
qemuProcessFakeRebootViaRecreate().

Simiar as FakeReboot, QEMU sends SHUTDOWN event with "host-signal" reason
which can trigger another FakeReset. Check if a FakeReset is ongoing and
bypass "host-signal" processing which originally comes from FakeReset.

Domain lock is already hold in qemuDomainReset() before calling
qemuProcessFakeRebootViaRecreate(), so bypass locking in it.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Send event VIR_DOMAIN_EVENT_[STOPPED|STARTED] during recreation
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:21 +0000 (03:21 -0400)] 
qemu: Send event VIR_DOMAIN_EVENT_[STOPPED|STARTED] during recreation

For secure guest, FakeReboot kills original QEMU instance and
create new one which is quite different from normal guest.

To reflect this fact, VIR_DOMAIN_EVENT_[STOPPED|STARTED]
are sent to control plane with new introduced reasons
VIR_DOMAIN_EVENT_[STOPPED|STARTED]_RECREATION.

That would let control plane software understand that these
events are from a fake reboot.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemu: Avoid duplicate FakeReboot for secure guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:20 +0000 (03:21 -0400)] 
qemu: Avoid duplicate FakeReboot for secure guest

For secure guest, FakeReboot kills original QEMU instance and
create new one. During this process, QEMU send SHUTDOWN event
with "host-signal" reason which can trigger another FakeReboot.

Check if a FakeReboot is ongoing and bypass "host-signal"
processing which originally comes from FakeReboot.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Support reboot command in guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:19 +0000 (03:21 -0400)] 
qemu: Support reboot command in guest

We can reboot a TDX guest with 'virsh reboot' or 'virsh shutdown' if action
for onPoweroff is 'restart'. But running reboot command in guest shell will
always lead to shutdown.

This behavior is not consistent with normal guest, fix it by checking
shutdown reason and action configuration to trigger FakeReboot.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Add FakeReboot support for TDX guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:18 +0000 (03:21 -0400)] 
qemu: Add FakeReboot support for TDX guest

Utilize the existing fake reboot mechanism to do reboot for TDX guest.

Different from normal guest, TDX guest doesn't support system_reset,
so have to kill the old guest and start a new one to simulate the reboot.

Co-developed-by: Chenyi Qiang <chenyi.qiang@intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Add command line for TDX Quote Generation Service(QGS)
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:17 +0000 (03:21 -0400)] 
qemu: Add command line for TDX Quote Generation Service(QGS)

'tdx-guest' object supports a "quote-generation-socket" property for
attestation purpose. When "quote-generation-socket" is configured in
guest xml, libvirt generates unix socket format cmdline for QEMU.

'Path' element can be omitted, default path "/var/run/tdx-qgs/qgs.socket"
is used in this case.

QEMU command line example:
  qemu-system-x86_64 \
    -object '{"qom-type":"tdx-guest","id":"lsec0","mrconfigid":"xxx","mrowner":"xxx","mrownerconfig":"xxx","quote-generation-socket":{"type":"unix","path":"/var/run/tdx-qgs/qgs.socket"},"attributes":268435457}' \
    -machine pc-q35-6.0,confidential-guest-support=lsec0

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoconf: Add Intel TDX Quote Generation Service(QGS) support
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:16 +0000 (03:21 -0400)] 
conf: Add Intel TDX Quote Generation Service(QGS) support

Add element "quoteGenerationService" to tdx launch security type.
It contains only an optional unix socket address attribute,
when omitted, libvirt will use default QGS server address
"/var/run/tdx-qgs/qgs.socket".

UNIX sockets offer the required functionality with greater
security than vsock, so libvirt only provides support for unix
socket.

XML example:

  <launchSecurity type='tdx'>
    <policy>0x10000001</policy>
    <mrConfigId>xxx</mrConfigId>
    <mrOwner>xxx</mrOwner>
    <mrOwnerConfig>xxx</mrOwnerConfig>
    <quoteGenerationService path='/var/run/tdx-qgs/qgs.socket'/>
  </launchSecurity>

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemu_firmware: Pick the right firmware for TDX guests
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:15 +0000 (03:21 -0400)] 
qemu_firmware: Pick the right firmware for TDX guests

The firmware descriptors have 'intel-tdx' feature which
describes whether firmware is suitable for TDX guests.
Provide necessary implementation to detect the feature and pick
the right firmware if guest is TDX enabled.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemu: log the crash information for TDX
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:14 +0000 (03:21 -0400)] 
qemu: log the crash information for TDX

Since QEMU 10.1.0 commit id '6e250463b08b' guest crash information for
TDX is available in the QEMU monitor, e.g.:

    {
        "timestamp": {
            "seconds": 1752118704,
            "microseconds": 27480
        },
        "event": "GUEST_PANICKED",
        "data": {
            "action": "pause",
            "info": {
                "error-code": 0,
                "message": "TD misconfiguration: SEPT #VE has to be disabled",
                "type": "tdx"
            }
        }
    }

    Let's log this information into the domain log file, e.g.:

    2025-07-10 03:39:18.243+0000: panic tdx: error_code='0x0' message='TD misconfiguration: SEPT #VE has to be disabled'

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
12 days agoqemu: Force special parameters enabled for TDX guest
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:13 +0000 (03:21 -0400)] 
qemu: Force special parameters enabled for TDX guest

TDX guest requires some special parameters to boot, currently:

 "kernel_irqchip=split"
 "pmu!=on"
 "smm!=on"
 "-bios"

If not specified explicitly, QEMU should configure this option implicitly
when start a TDX guest.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoconf: Expose TDX type in domain launch security capability
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:12 +0000 (03:21 -0400)] 
conf: Expose TDX type in domain launch security capability

As the tdx launch security type support is added, expose it in domain
capabilities so that domain definition validation check can take
effect.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Add command line and validation for TDX type
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:11 +0000 (03:21 -0400)] 
qemu: Add command line and validation for TDX type

QEMU will provides 'tdx-guest' object which is used to launch encrypted
VMs on Intel platform using TDX feature.

Command line looks like:
$QEMU ... \
  -object '{"qom-type":"tdx-guest","id":"lsec0","mrconfigid":"xxx","mrowner":"xxx","mrownerconfig":"xxx","attributes":268435457}' \
  -machine pc-q35-6.0,confidential-guest-support=lsec0

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoconf: Validate TDX launchSecurity element mrConfigId/mrOwner/mrOwnerConfig
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:10 +0000 (03:21 -0400)] 
conf: Validate TDX launchSecurity element mrConfigId/mrOwner/mrOwnerConfig

mrConfigId/mrOwner/mrOwnerConfig are base64 encoded SHA384 digest,
can be provided for TDX attestation.

Check their decoded lengths to ensure they are 48 bytes.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoconf: Add tdx as launch security type
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:09 +0000 (03:21 -0400)] 
conf: Add tdx as launch security type

When 'tdx' is used, the VM will be launched with Intel TDX feature enabled.
TDX feature supports running encrypted VM (Trust Domain, TD) under the
control of KVM. A TD runs in a CPU model which protects the confidentiality
of its memory and its CPU state from other software.

There are four optional child elements. Element policy is 64bit hex, bit 0
is set to enable TDX debug, bit 28 is set to enable sept-ve-disable, other
bits are reserved currently. When policy isn't specified, QEMU will use its
own default value 0x10000000. mrConfigId, mrOwner and mrOwnerConfig are
base64 encoded SHA384 digest string.

For example:

 <launchSecurity type='tdx'>
   <policy>0x10000001</policy>
   <mrConfigId>xxx</mrConfigId>
   <mrOwner>xxx</mrOwner>
   <mrOwnerConfig>xxx</mrOwnerConfig>
 </launchSecurity>

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoconf: Expose TDX feature in domain capabilities
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:08 +0000 (03:21 -0400)] 
conf: Expose TDX feature in domain capabilities

Extend qemu TDX capability to domain capabilities.

Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
12 days agoqemu: Add QEMU_CAPS_TDX_GUEST capability
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:07 +0000 (03:21 -0400)] 
qemu: Add QEMU_CAPS_TDX_GUEST capability

QEMU_CAPS_TDX_GUEST set means TDX supported with this QEMU.

Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
12 days agoqemucapabilitiestest: Add data for the qemu-10.1.0 dev cycle on x86_64 for the '...
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:06 +0000 (03:21 -0400)] 
qemucapabilitiestest: Add data for the qemu-10.1.0 dev cycle on x86_64 for the '+inteltdx' variant

Add data based on 'v10.0.0-1724-gf9a3def17b'.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
12 days agoqemucapabilitiesdata: Document '+inteltdx' variant
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:05 +0000 (03:21 -0400)] 
qemucapabilitiesdata: Document '+inteltdx' variant

Upcoming patch will introduce test data from an TDX-enabled host.
Document the new variant.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
12 days agoqemu: Check if INTEL Trust Domain Extention support is enabled
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:04 +0000 (03:21 -0400)] 
qemu: Check if INTEL Trust Domain Extention support is enabled

Implement TDX check in order to generate domain feature capability
correctly in case the availability of the feature changed.

For INTEL TDX the verification is:
 - checking if "/sys/module/kvm_intel/parameters/tdx" contains the
   value 'Y': meaning TDX is enabled in the host kernel.

Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
12 days agotools: Secure guest check for Intel in virt-host-validate
Zhenzhong Duan [Thu, 10 Jul 2025 07:21:03 +0000 (03:21 -0400)] 
tools: Secure guest check for Intel in virt-host-validate

Add check in virt-host-validate for secure guest support
on x86 for Intel Trust Domain Extentions.

Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
2 weeks agomeson: Report library versions in the summary
Michal Privoznik [Thu, 23 Mar 2023 08:15:53 +0000 (09:15 +0100)] 
meson: Report library versions in the summary

The summary() directive accepts dependency() too [1] in which
case it also prints version of the dependency found. This may
come handy when reading build process transcripts.

1: https://mesonbuild.com/Reference-manual_functions.html#summary

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2 weeks agomeson: Convert attr_dep to dependency()
Michal Privoznik [Tue, 4 Mar 2025 08:23:51 +0000 (09:23 +0100)] 
meson: Convert attr_dep to dependency()

Currently, libattr is detected using cc.find_library() because at
historically, the library was lacking pkg-config file. But that
changed with libattr-2.4.48 (released 7+ years ago) and even
prehistoric distros have it now. Switch to dependency().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2 weeks agoqemu: Add support for RBD namespace.
Han Han [Wed, 26 May 2021 13:35:11 +0000 (21:35 +0800)] 
qemu: Add support for RBD namespace.

Since Nautilus ceph supports separate image namespaces within a pool for
tenant isolation and QEMU adds it as a rbd blockdev options from 5.0.0.
The source name with format "<pool>/<namespace>/<image>" could be used to
access a rbd image with namespace.

Add unit tests for this attribute.

https://bugzilla.redhat.com/show_bug.cgi?id=1816909

Closes: https://gitlab.com/libvirt/libvirt/-/issues/405
Signed-off-by: Han Han <hhan@redhat.com>
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agovirStorageSource: Eliminate 'volume' field
Peter Krempa [Fri, 11 Nov 2022 14:42:52 +0000 (15:42 +0100)] 
virStorageSource: Eliminate 'volume' field

While historically we've stored the 'pool' and 'image' properties of RBD
and gluster images in separate fields but they are presented in a single
field in the XML. This creates multiple points where they need to be
separated and combined.

Introduce helper 'virStorageSourceNetworkProtocolPathSplit' which will
do that at the point of use rather than everywhere in the code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agovirStorageFileBackendGlusterInit: Refactor cleanup
Peter Krempa [Wed, 25 Jun 2025 07:51:56 +0000 (09:51 +0200)] 
virStorageFileBackendGlusterInit: Refactor cleanup

Automatically free 'priv' and call 'glfs_fini()' directly from the two
error paths.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoconf: Turn 'protocol' field of virStorageSource into proper enum type
Peter Krempa [Fri, 11 Nov 2022 12:05:33 +0000 (13:05 +0100)] 
conf: Turn 'protocol' field of virStorageSource into proper enum type

Convert the member to the appropriate type, fix few offending parse
calls and remove explicit typecasts in switch().

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoqemu: qemuDomainObjPrivateXMLParseVcpu refactor
Kirill Shchetiniuk [Tue, 22 Jul 2025 15:12:05 +0000 (17:12 +0200)] 
qemu: qemuDomainObjPrivateXMLParseVcpu refactor

Refactored the qemuDomainObjPrivateXMLParseVcpu function to use the
appropriate virXMLPropUInt function to parse unsigned integers,
avoiding unccessery string parsing operations.

Signed-off-by: Kirill Shchetiniuk <kshcheti@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoconf: virDomainChrDefParseTargetXML refactor
Kirill Shchetiniuk [Tue, 22 Jul 2025 15:12:04 +0000 (17:12 +0200)] 
conf: virDomainChrDefParseTargetXML refactor

Refactored the default case port option parsing logic to use the
appropriate virXMLPropInt function.

Signed-off-by: Kirill Shchetiniuk <kshcheti@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoutil: virSecretLookupParseSecret refactor
Kirill Shchetiniuk [Tue, 22 Jul 2025 15:12:03 +0000 (17:12 +0200)] 
util: virSecretLookupParseSecret refactor

Refactored the virSecretLookupParseSecret fucntion to use the
virXMLPropUUID fucntion, avoid getting the string and parsing it
later. Previously two separate error states merged into one by using
boolean NXOR operation.

Signed-off-by: Kirill Shchetiniuk <kshcheti@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoconf: virNetDevVPortProfileParse refactor
Kirill Shchetiniuk [Tue, 22 Jul 2025 15:12:02 +0000 (17:12 +0200)] 
conf: virNetDevVPortProfileParse refactor

Refactored the virNetDevVPortProfileParse function to use the appropriate
virXMLProp* functions to parse input configuration XML.

Signed-off-by: Kirill Shchetiniuk <kshcheti@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agovirBitmapNextClearBit: Correct virBitmapNextClearBit function header comment
Aaron M. Brown [Tue, 22 Jul 2025 17:59:49 +0000 (13:59 -0400)] 
virBitmapNextClearBit: Correct virBitmapNextClearBit function header comment

This patch corrects the header comment for virBitmapNextClearBIt.
Currently, the header comment reads:

`@pos can be -1 to search for the first set bit.`

However, this statement is false.

We can prove this by referencing the virbitmaptest functions, i.e
virbitmaptest.c:223, in which i = 0

if (virBitmapNextClearBIt(bitmap, -1) != 0)
    return -1

Because this is a zero set, this case would fail if the header statement was true as is.

Signed-off-by: Aaron M. Brown <aaronmbr@linux.ibm.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoqemu: driver: Reformat function headers for block job APIs
Peter Krempa [Tue, 1 Jul 2025 16:00:56 +0000 (18:00 +0200)] 
qemu: driver: Reformat function headers for block job APIs

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxGetSecurityMountOptions: refactor printing
Peter Krempa [Fri, 18 Jul 2025 14:49:11 +0000 (16:49 +0200)] 
virSecuritySELinuxGetSecurityMountOptions: refactor printing

Fix linebreaks and remove the use of ternary operator.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxGenImageLabel: Refactor cleanup
Peter Krempa [Fri, 18 Jul 2025 14:41:10 +0000 (16:41 +0200)] 
virSecuritySELinuxGenImageLabel: Refactor cleanup

Automatically free temporary variables in order to remove 'cleanup'
section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxRestoreInputLabel: Return values directly
Peter Krempa [Fri, 18 Jul 2025 14:21:32 +0000 (16:21 +0200)] 
virSecuritySELinuxRestoreInputLabel: Return values directly

Skip the use of temporary variable.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxSetFilecon: Automatically free 'econ' temp variable
Peter Krempa [Fri, 18 Jul 2025 14:20:21 +0000 (16:20 +0200)] 
virSecuritySELinuxSetFilecon: Automatically free 'econ' temp variable

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxGetProcessLabel: Automatically free 'ctx' temp variable
Peter Krempa [Fri, 18 Jul 2025 14:19:26 +0000 (16:19 +0200)] 
virSecuritySELinuxGetProcessLabel: Automatically free 'ctx' temp variable

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxReserveLabel: Refactor cleanup
Peter Krempa [Fri, 18 Jul 2025 14:17:59 +0000 (16:17 +0200)] 
virSecuritySELinuxReserveLabel: Refactor cleanup

Automatically free temporary variables in order to remove 'cleanup'
section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxGenNewContext: Refactor cleanup
Peter Krempa [Fri, 18 Jul 2025 14:11:33 +0000 (16:11 +0200)] 
virSecuritySELinuxGenNewContext: Refactor cleanup

Use automatic freeing of temporary variables and remove cleanup section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxContextAddRange: Refactor cleanup of 'context_t'
Peter Krempa [Fri, 18 Jul 2025 14:08:40 +0000 (16:08 +0200)] 
virSecuritySELinuxContextAddRange: Refactor cleanup of 'context_t'

Use the new autoptr helper to free the temporary variables and refactor
cleanup.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agosecurity_selinux: Declare internal autoptr cleanup helper for 'context_t'
Peter Krempa [Fri, 18 Jul 2025 14:07:11 +0000 (16:07 +0200)] 
security_selinux: Declare internal autoptr cleanup helper for 'context_t'

The selinux headers have a 'typedef context_s_t *context_t;' definition
in the header so we declare autoptr cleanup function for 'context_s_t'
and use it instead of 'context_t' definitions.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxSetTapFDLabel: Refactor cleanup
Peter Krempa [Tue, 27 May 2025 14:27:43 +0000 (16:27 +0200)] 
virSecuritySELinuxSetTapFDLabel: Refactor cleanup

Automatically free temporary variables and remove the need for 'cleanup'
section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxSet(Daemon)SocketLabel: Refactor cleanup
Peter Krempa [Tue, 27 May 2025 14:23:26 +0000 (16:23 +0200)] 
virSecuritySELinuxSet(Daemon)SocketLabel: Refactor cleanup

Automatically free temporary variables and change 'cleanup' label to
'error'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinux(Set|Restore)ChardevLabel: Refactor cleanup
Peter Krempa [Tue, 27 May 2025 14:17:12 +0000 (16:17 +0200)] 
virSecuritySELinux(Set|Restore)ChardevLabel: Refactor cleanup

Declare 'in'/'out' only in the bocks which use them and automatically
free them. Since cleanup section was removed we don't need a 'ret'
variable any more.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinux(Set|Restore)HostdevCapsLabel: Refactor cleanup
Peter Krempa [Tue, 27 May 2025 14:17:00 +0000 (16:17 +0200)] 
virSecuritySELinux(Set|Restore)HostdevCapsLabel: Refactor cleanup

Declare 'path' only in blocks where it's used and autofree it.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxRestoreFileLabels: Refactor variable freeing
Peter Krempa [Mon, 19 May 2025 13:31:21 +0000 (15:31 +0200)] 
virSecuritySELinuxRestoreFileLabels: Refactor variable freeing

Declare 'filename' inside the loop that is using it and use automatic
freeing.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinux(Set|Restore)TPMFileLabel: Automatically free 'cancel_path'
Peter Krempa [Mon, 19 May 2025 13:29:24 +0000 (15:29 +0200)] 
virSecuritySELinux(Set|Restore)TPMFileLabel: Automatically free 'cancel_path'

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxRestoreFileLabel: Refactor cleanup
Peter Krempa [Mon, 19 May 2025 13:27:44 +0000 (15:27 +0200)] 
virSecuritySELinuxRestoreFileLabel: Refactor cleanup

Automatically free 'fcon' and 'newpath' and remove the 'cleanup' label
and 'ret' variable.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxMCSFind: Refactor variable clearing
Peter Krempa [Mon, 19 May 2025 13:24:34 +0000 (15:24 +0200)] 
virSecuritySELinuxMCSFind: Refactor variable clearing

Use automatic freeing for 'mcs' and adjust the code.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agovirSecuritySELinuxTransactionRun: Refactor cleanup
Peter Krempa [Mon, 19 May 2025 13:20:33 +0000 (15:20 +0200)] 
virSecuritySELinuxTransactionRun: Refactor cleanup

Automatically free 'paths' and remove temporary variable.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agosecurity/security_driver.c/h: Fix function header formatting
Peter Krempa [Mon, 19 May 2025 11:52:05 +0000 (13:52 +0200)] 
security/security_driver.c/h: Fix function header formatting

Fix the misaligned arguments by switching over to modern style.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonews: document new crypto TLS priority string settings
Daniel P. Berrangé [Tue, 22 Jul 2025 10:35:36 +0000 (11:35 +0100)] 
news: document new crypto TLS priority string settings

Reviewed-by: Ján Tomko <jtomko@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agonwfilter: Check before removing and reinserting iptable base chains
Dion Bosschieter [Wed, 16 Jul 2025 10:08:58 +0000 (12:08 +0200)] 
nwfilter: Check before removing and reinserting iptable base chains

Upon VM bootstrapping (start,restore,incoming migration)
iptablesCreateBaseChainsFW is called and unconditionally deletes and
reinserts top-level firewall chain jumps (e.g. INPUT, FORWARD rules).
This briefly allows packets to continue, allowing packets through
until the base chain iptables -I commands run.

This commit ensures that the base chains are only created once per layer
(IPV4/IPV6) and checks whether the expected rules already exist using
`iptables -L`. If they do, no delete/insert operations are performed.

By checking for the existence of rules we can prevent more rules from
being created if they already exist. Possibly speeding up nwfilter by
reducing the amount of iptable commands it executes. This however is not
part of this patch.

Closes: https://gitlab.com/libvirt/libvirt/-/issues/784
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dion Bosschieter <dionbosschieter@gmail.com>
2 weeks agoqemu: add ability to set TLS priority string with QEMU
Daniel P. Berrangé [Wed, 16 Jul 2025 15:40:01 +0000 (16:40 +0100)] 
qemu: add ability to set TLS priority string with QEMU

QEMU will either use the GNUTLS default priority string of "NORMAL",
or on Fedora/RHEL related distros, "@QEMU,SYSTEM", which resolves to
a configuration in /etc/crypto-policies/back-ends/gnutls.config.

The latter gives the sysadmin the ability to change the priority
string used for GNUTLS at deployment time, either system side, or
exclusively for QEMU, avoiding the hardcoded GNUTLS defaults.

There are still some limitations to this:

 * Priorities cannot be set for different areas of QEMU
   functionality (migration, vnc, nbd, etc)

 * Priorities are fixed at the time when QEMU first
   triggers GNUTLS to load its config file, often
   immediately at startup.

We recently uncovered a QEMU bug that causes crashes in live
migration with TLS-1.3, where the easiest workaround is to
change the TLS priorities. We can't change this on the running
QEMU, but fortunately it is possible to change it on the target
QEMU and the TLS handshake will make it take effect on both
src and dst.

The problem is, while fixing the immediate incoming and outgoing
live migration problems, the workaround will apply to everything
else that QEMU does for the rest of the time that process exists.

We want to make it possible to set the TLS priorities only for
the current migrations, such that if the target QEMU has a fixed
GNUTLS, it will not have its TLS priorities hobbled for the next
live migration.

To achieve this we need libvirt to be able to (optionally) set
the TLS priority string with QEMU. While live migration is the
most pressing need, the new qemu.conf parameters are wired up
for every subsystem for greater selectivity in future.

With this we can activate the GNUTLS workaround for running
QEMU processes by editting qemu.conf and restarting virtqemud,
and later undo this the same way.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agoqemu: sanitize blank lines in config file
Daniel P. Berrangé [Wed, 16 Jul 2025 15:30:52 +0000 (16:30 +0100)] 
qemu: sanitize blank lines in config file

We mostly use 2 blank lines between config file entries to
improve readability. Fix where we don't do that.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agoqemu: fix order of VNC TLS config entries
Daniel P. Berrangé [Wed, 16 Jul 2025 15:32:05 +0000 (16:32 +0100)] 
qemu: fix order of VNC TLS config entries

For TLS config parameters, the 'verify' option always comes before the
'secret_uuid' option, except in the VNC case which has them reversed.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agobhyve: implement timeout for bhyveload
Roman Bogorodskiy [Sun, 13 Jul 2025 08:17:11 +0000 (10:17 +0200)] 
bhyve: implement timeout for bhyveload

The bhyveload(8) command does not have a native non-interactive mode.
It means that in case of errors, e.g. invalid boot media, it
just drops into a loader prompt and waits for user input. This behaviour
makes it tricky for users to understand what's going on.

To address that, run it with the timeout(1) tool which sends SIGTERM
after a certain timeout, and then optionally sends SIGKILL if the
command keeps hanging.

These timeout values could be configured in the bhyve.conf. Setting
timeout to 0 mean that bhyveload(8) will be executed directly, without
timeout(1).

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agobhyve: don't reset domain autostart flag on destroy
Roman Bogorodskiy [Sun, 20 Jul 2025 13:55:07 +0000 (15:55 +0200)] 
bhyve: don't reset domain autostart flag on destroy

Currently, virBhyveProcessStop() uses the virDomainDeleteConfig()
helper to clean up domain status. It passes BHYVE_STATE_DIR as
a configuration dir and NULL as autostart dir, so the helper does its
job, even though it has a different purpose. However, the issue is that
it also resets the autostart (and autostartOnce) property.

This results in a situation that when a persistent domain with autostart
enabled gets destroyed, its autostart state is reported as disabled,
which is not correct.

To fix that, implement the bhyveProcessRemoveDomainStatus() which
removes the status file without side effects on the virDomainObj object.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com
2 weeks agoqemu_tpm: Do not use persistent definition during pre-start checks
Martin Kletzander [Fri, 18 Jul 2025 12:47:58 +0000 (14:47 +0200)] 
qemu_tpm: Do not use persistent definition during pre-start checks

Commit 3451987fca7c used the persistent TPM Definition in both calls to
qemuTPMVirCommandSwtpmAddTPMState() but in one of the two cases it
might've been NULL and what's more, it is not the right definition which
should've been used.  Change that to @tpm which is the current
definition.  The other call does not have access to the current
definition and is only called during updating the profile.  But for the
sake of fewer future mistakes, keep the other one as is because there is
no issue with calling it that way and adding logic that just skips the
extra check on NULL could mistake someone in the future.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
2 weeks agoFix: missing a single quote in doc example
Lukas Greve [Sun, 20 Jul 2025 09:01:43 +0000 (11:01 +0200)] 
Fix: missing a single quote in doc example

The missing single quote (') in the code snippet results
in it not being validated by virt-xml-validate

Signed-off-by: Lukas Greve <please@refre.ch>
2 weeks agotests: nssdata: add empty status file
Ján Tomko [Wed, 16 Jul 2025 11:33:49 +0000 (13:33 +0200)] 
tests: nssdata: add empty status file

Add a test to make sure we will keep ignoring empty
status files properly in the future.

https://bugzilla.redhat.com/show_bug.cgi?id=2364285

Fixes: 63a3d70697dc44ef2f8b40f7c8e9aa869227a7da
Signed-off-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Martin Kletzander <mkletzan@redhat.com>
2 weeks agonss: Debug print JSON files as they are parsed
Michal Privoznik [Tue, 24 Jun 2025 08:17:44 +0000 (10:17 +0200)] 
nss: Debug print JSON files as they are parsed

It may help in case the NSS plugin ever faces a corrupted JSON

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonss: Print module name
Michal Privoznik [Thu, 19 Jun 2025 08:50:57 +0000 (10:50 +0200)] 
nss: Print module name

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonss: Include filename in debug printings
Michal Privoznik [Thu, 19 Jun 2025 08:42:46 +0000 (10:42 +0200)] 
nss: Include filename in debug printings

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonss: Make logging conditional on an envvar
Michal Privoznik [Wed, 18 Jun 2025 06:57:46 +0000 (08:57 +0200)] 
nss: Make logging conditional on an envvar

As promised in previous commit, make NSS modules silent by
default and enable debug printings if LIBVIRT_NSS_DEBUG envvar is
set.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonss: Move logging into a separate file and turn it temporarily on
Michal Privoznik [Wed, 18 Jun 2025 06:49:29 +0000 (08:49 +0200)] 
nss: Move logging into a separate file and turn it temporarily on

Currently, when somebody wants to debug the NSS plugin, they have
to change a line in libvirt_nss.h (to enable debug printings) and
recompile the module. This may work for us, developers, but we
can not expect this from users.

For now, this turns debug printings unconditionally on. Making it
conditional on an envvar is handled in the next commit.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agonss: Promote debug message to proper error when time() fails
Michal Privoznik [Fri, 4 Jul 2025 11:49:12 +0000 (13:49 +0200)] 
nss: Promote debug message to proper error when time() fails

The difference between DEBUG() and ERROR() macros is that the
latter also prints (stringified) errno. Inside of findLease()
there's one line where time() is called which is documented as:

  On error, ((time_t) -1) is returned, and errno is set to
  indicate the error.

Therefore, don't just print DEBUG() but ERROR() so that the cause
for the error is printed too.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agorpc: virnettlscert: Rename virNetTLSCertLoadCAListFromFile to virNetTLSCertLoadListFr...
Peter Krempa [Thu, 10 Jul 2025 14:02:40 +0000 (16:02 +0200)] 
rpc: virnettlscert: Rename virNetTLSCertLoadCAListFromFile to virNetTLSCertLoadListFromFile

The function can load a generic list of certs, it doesn't necessarily
have to be the list of CAs. Rename the function, and change error to be
generic.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agovirNetTLSCertCheckPair: Fix function definition formatting
Peter Krempa [Thu, 10 Jul 2025 14:01:03 +0000 (16:01 +0200)] 
virNetTLSCertCheckPair: Fix function definition formatting

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agovirNetTLSContextNewPath: Refactor temporary variable usage
Peter Krempa [Thu, 10 Jul 2025 13:58:28 +0000 (15:58 +0200)] 
virNetTLSContextNewPath: Refactor temporary variable usage

Use autofree for all temporary variables and return the result directly.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agorpc: virnettlscontext: Fix formatting of function definitions
Peter Krempa [Thu, 10 Jul 2025 13:57:51 +0000 (15:57 +0200)] 
rpc: virnettlscontext: Fix formatting of function definitions

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agoNEWS: Mention virConnectHypervisorBaselineCPU improvements
Jiri Denemark [Fri, 4 Jul 2025 14:54:47 +0000 (16:54 +0200)] 
NEWS: Mention virConnectHypervisorBaselineCPU improvements

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2 weeks agovirsh: Add support for VIR_CONNECT_BASELINE_CPU_IGNORE_HOST flag
Jiri Denemark [Wed, 25 Jun 2025 11:53:42 +0000 (13:53 +0200)] 
virsh: Add support for VIR_CONNECT_BASELINE_CPU_IGNORE_HOST flag

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoqemu: Implement VIR_CONNECT_BASELINE_CPU_IGNORE_HOST
Jiri Denemark [Mon, 23 Jun 2025 13:46:37 +0000 (15:46 +0200)] 
qemu: Implement VIR_CONNECT_BASELINE_CPU_IGNORE_HOST

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoIntroduce VIR_CONNECT_BASELINE_CPU_IGNORE_HOST flag
Jiri Denemark [Mon, 23 Jun 2025 13:37:53 +0000 (15:37 +0200)] 
Introduce VIR_CONNECT_BASELINE_CPU_IGNORE_HOST flag

With this new flag virConnectHypervisorBaselineCPU can be used on any
host (rather than being limited to hosts described by individual CPUs
passed to the API). Using the flag makes the API behave similarly to the
old virConnectBaselineCPU. The main difference is the CPU definition
accepted by both APIs: the old one only accepts host CPU definition,
i.e., without 'policy' attributes as seen in the host capabilities XML.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoChange documentation style of virConnectBaselineCPUFlags
Jiri Denemark [Mon, 23 Jun 2025 13:37:36 +0000 (15:37 +0200)] 
Change documentation style of virConnectBaselineCPUFlags

Moving the documentation above each enum item gives us more space for
it.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoClarify documentation of virConnectBaselineHypervisorCPU
Jiri Denemark [Mon, 23 Jun 2025 13:21:34 +0000 (15:21 +0200)] 
Clarify documentation of virConnectBaselineHypervisorCPU

The API was apparently never considered for being used on a host that is
not represented in the input set of CPU definitions. The result is
limited to the set of features and CPU models known to the host's
hypervisor. This would likely not be a big issue, but thanks to a side
effect of commit v3.8.0-99-g9c9620af1d usability blockers come to play
as well. When converting CPU data (CPUID and MSR bits) to each named
model for comparison, we disable features that block usability of the
model on the current hypervisor, the rest of the features are set
according to the data without taking host capabilities into account.
Thus the process of comparing and selecting the most appropriate CPU
model for the given data is significantly influenced by the host, but it
doesn't behave as if the host CPU model was included in the input data.

The documentation tried to say the result was tied to the host's
hypervisor, but it wasn't very clear.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agocpu: Show input CPU model names in debug log
Jiri Denemark [Wed, 2 Jul 2025 14:05:05 +0000 (16:05 +0200)] 
cpu: Show input CPU model names in debug log

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
2 weeks agoqemu_tpm: Don't report uninitialized variable in error message
Michal Privoznik [Thu, 17 Jul 2025 08:46:53 +0000 (10:46 +0200)] 
qemu_tpm: Don't report uninitialized variable in error message

Inside to qemu_tpm.c there are three functions that use the same
pattern (qemuTPMEmulatorRunSetup(), qemuTPMEmulatorReconfigure()
and qemuTPMEmulatorUpdateProfileName()):

  int exitstatus;
  ...
  if (virCommandRun(cmd, &exitstatus) < 0 || exitstatus != 0) {
      virReportError(..., exitstatus);
      return -1;
  }

Problem with this pattern is that if virCommandRun() fails then
exitstatus is left untouched and a garbage value is then passed
to virReportError().

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agoqemu: Report system error on failed open()
Michal Privoznik [Wed, 16 Jul 2025 13:28:08 +0000 (15:28 +0200)] 
qemu: Report system error on failed open()

With a help from coccinelle three places were identified that
call virReportError() after failed open() (in
qemuDomainWriteMasterKeyFile(), qemuDomainMasterKeyReadFile() and
qemuProcessOpenVhostVsock()). The open() syscall does set errno
on failure so switch them to virReportSystemError() which may
shed more light into the reasons for failure.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agosrc: fix typo in fixup_name()
Elizaveta Tereshkina [Thu, 17 Jul 2025 16:24:35 +0000 (19:24 +0300)] 
src: fix typo in fixup_name()

Similar branches in the if-else structure look like bad copy-paste.
Fix the typo.

Fixes: a559ffec44 (src: rewrite ACL rule checker in Python)
Signed-off-by: Elizaveta Tereshkina <etereshkina@astralinux.ru>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2 weeks agobhyve: sync error messages
Roman Bogorodskiy [Tue, 15 Jul 2025 18:32:07 +0000 (20:32 +0200)] 
bhyve: sync error messages

Use the same error messages for serial devices validation which are
already used in bhyve_domain.c

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agobhyve: extend serial devices validation
Roman Bogorodskiy [Tue, 15 Jul 2025 18:20:12 +0000 (20:20 +0200)] 
bhyve: extend serial devices validation

Extend bhyveDomainDeviceDefValidate() to check that:

 - only 'nmdm' or 'tcp' serial devices are used,
 - serial device count is not more than supported,
 - only listening raw TCP sockets are used.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agodocs: drvbhyve: document TCP console support
Roman Bogorodskiy [Sun, 13 Jul 2025 14:02:15 +0000 (16:02 +0200)] 
docs: drvbhyve: document TCP console support

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agobhyve: increase number of supported consoles to 4
Roman Bogorodskiy [Wed, 18 Jun 2025 17:59:47 +0000 (19:59 +0200)] 
bhyve: increase number of supported consoles to 4

Recent versions of bhyve support 4 com ports instead of just 2. Thus,
allow to use 4 console devices.

Also, there was a bug previously because the condition was
"if (chr->target.port > 2)", but as target.port start
with 0 and "com" ports start with 1, this condition allows com3 to be
used.

As bhyve supports 4 com ports already long enough, and all supported
FreeBSD versions include this capability, do not introduce driver
capability for that.

Add a couple of tests for that:

 - A domain that uses 4 serials, 2 of type 'nmdm'
   and the other 2 of type 'tcp'
 - A domain that uses unsupported port, such as target.port=4 which
   translates into com5.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agobhyve: support serial type 'tcp'
Roman Bogorodskiy [Wed, 18 Jun 2025 17:07:49 +0000 (19:07 +0200)] 
bhyve: support serial type 'tcp'

In addition to the nmdm consoles, bhyve also supports a tcp console.
It's configured with:

 .. -l com1,tcp=127.0.0.1:12345

Then a user could connect to the guest console port 0 by making a tcp
connection to the host's 127.0.0.1:12345.

In the domain XML this configuration is represented as:

  <serial type='tcp'>
    <source mode='bind' host='127.0.0.1' service='12345'/>
    <target type='serial' port='0'/>
  </serial>

Also, update domain capabilities to include the TCP console support.
Unfortunately, there's no way to detect that from the bhyve binary
before trying to start a VM, so there's no capability probing for this
feature.

Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2 weeks agoAllow specifying zero discard granularity for block devices
Martin Kletzander [Thu, 17 Jul 2025 13:12:40 +0000 (15:12 +0200)] 
Allow specifying zero discard granularity for block devices

That allows for disabling discard in a way that some guest
OSes (e.g. Windows) understand and do not try to trim the disk.

Resolves: https://issues.redhat.com/browse/RHEL-72006
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
2 weeks agoqemu_tpm: Only warn about missing locking feature on shared filesystems
Martin Kletzander [Thu, 17 Jul 2025 09:58:32 +0000 (11:58 +0200)] 
qemu_tpm: Only warn about missing locking feature on shared filesystems

The warning pollutes the logs and might give a bad impression on someone
reading them even though the locking is not always needed.  This way we
at least limit the logging in unnecessary cases.

Resolves: https://issues.redhat.com/browse/RHEL-80155
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>