Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package virt-manager for openSUSE:Factory 
checked in at 2025-01-29 16:09:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virt-manager (Old)
 and      /work/SRC/openSUSE:Factory/.virt-manager.new.2316 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virt-manager"

Wed Jan 29 16:09:32 2025 rev:267 rq:1241008 version:5.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes        
2024-12-06 14:25:26.650117091 +0100
+++ /work/SRC/openSUSE:Factory/.virt-manager.new.2316/virt-manager.changes      
2025-01-29 16:09:39.069655511 +0100
@@ -1,0 +2,22 @@
+Tue Jan 28 10:24:44 MST 2025 - carn...@suse.com
+
+- Upstream bug fixes (bsc#1027942) (jsc#PED-8910)
+  001-cli-Support-cpu-maximum.patch
+  002-gui-Support-maximum-CPU-mode.patch
+  003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
+  004-domcaps-get-list-of-supported-panic-device-models.patch
+  005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
+  
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
+  007-cli-man-Always-list-osinfo-before-os-variant.patch
+  008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
+  009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
+- Drop virtinst-dont-use-special-copy-cpu-features.patch
+
+-------------------------------------------------------------------
+Fri Jan 17 13:16:07 MST 2025 - carn...@suse.com
+
+- Fix issue being able to detect SLES 16 media (jsc#PED-8910)
+  See also bsc#1236252
+  virtinst-add-sle16-detection-support.patch
+
+-------------------------------------------------------------------

Old:
----
  virtinst-dont-use-special-copy-cpu-features.patch

New:
----
  001-cli-Support-cpu-maximum.patch
  002-gui-Support-maximum-CPU-mode.patch
  003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
  004-domcaps-get-list-of-supported-panic-device-models.patch
  005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
  
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
  007-cli-man-Always-list-osinfo-before-os-variant.patch
  008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
  009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
  virtinst-add-sle16-detection-support.patch

BETA DEBUG BEGIN:
  Old:  009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
- Drop virtinst-dont-use-special-copy-cpu-features.patch
BETA DEBUG END:

BETA DEBUG BEGIN:
  New:- Upstream bug fixes (bsc#1027942) (jsc#PED-8910)
  001-cli-Support-cpu-maximum.patch
  002-gui-Support-maximum-CPU-mode.patch
  New:  001-cli-Support-cpu-maximum.patch
  002-gui-Support-maximum-CPU-mode.patch
  003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
  New:  002-gui-Support-maximum-CPU-mode.patch
  003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
  004-domcaps-get-list-of-supported-panic-device-models.patch
  New:  003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
  004-domcaps-get-list-of-supported-panic-device-models.patch
  005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
  New:  004-domcaps-get-list-of-supported-panic-device-models.patch
  005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
  
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
  New:  005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
  
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
  007-cli-man-Always-list-osinfo-before-os-variant.patch
  New:  
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
  007-cli-man-Always-list-osinfo-before-os-variant.patch
  008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
  New:  007-cli-man-Always-list-osinfo-before-os-variant.patch
  008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
  009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
  New:  
008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
  009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
- Drop virtinst-dont-use-special-copy-cpu-features.patch
  New:  See also bsc#1236252
  virtinst-add-sle16-detection-support.patch
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ virt-manager.spec ++++++
--- /var/tmp/diff_new_pack.IwMLY0/_old  2025-01-29 16:09:40.893731153 +0100
+++ /var/tmp/diff_new_pack.IwMLY0/_new  2025-01-29 16:09:40.897731319 +0100
@@ -1,7 +1,7 @@
 #
 # spec file
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,6 +19,11 @@
 %global __python %{__python3}
 %global with_guestfs               0
 %global default_hvs                "qemu,xen,lxc"
+%if 0%{?suse_version} < 1600
+    %define have_spice 1
+%else
+    %define have_spice 0
+%endif
 
 %global flavor @BUILD_FLAVOR@%{nil}
 %if "%{flavor}" == "test"
@@ -41,6 +46,15 @@
 Source2:        virt-install.desktop
 Source3:        virt-manager-supportconfig
 # Upstream Patches
+Patch1:         001-cli-Support-cpu-maximum.patch
+Patch2:         002-gui-Support-maximum-CPU-mode.patch
+Patch3:         003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch
+Patch4:         004-domcaps-get-list-of-supported-panic-device-models.patch
+Patch5:         
005-tests-Update-capabilities-for-advertisting-panic-device-models.patch
+Patch6:         
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
+Patch7:         007-cli-man-Always-list-osinfo-before-os-variant.patch
+Patch8:         
008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch
+Patch9:         009-snapshots-warn-users-to-not-mix-snapshot-modes.patch
 Patch100:       
revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch
 # SUSE Only
 Patch150:       virtman-desktop.patch
@@ -80,7 +94,6 @@
 Patch273:       virtinst-use-xenpae-kernel-for-32bit.patch
 Patch274:       virtinst-use-qemu-for-cdrom-device.patch
 Patch275:       virtinst-keep-install-iso-attached.patch
-Patch276:       virtinst-dont-use-special-copy-cpu-features.patch
 Patch277:       virtinst-set-default-nic.patch
 Patch278:       virtinst-sap-detection.patch
 Patch279:       virtinst-smbios-unsupported-for-xenpv.patch
@@ -91,6 +104,7 @@
 Patch284:       virtinst-add-slem60-detection-support.patch
 Patch285:       virtinst-windows-server-detection.patch
 Patch286:       virtinst-drop-removeprefix-usage.patch
+Patch287:       virtinst-add-sle16-detection-support.patch
 
 BuildArch:      noarch
 
@@ -104,7 +118,9 @@
 Requires:       python3-dbus-python
 Requires:       python3-gobject-Gdk
 Requires:       python3-gobject-cairo
+%if %{have_spice}
 Recommends:     python3-SpiceClientGtk
+%endif
 Requires:       virt-install
 Requires:       virt-manager-common = %{verrel}
 Requires:       typelib(GtkSource)
@@ -123,6 +139,7 @@
 BuildRequires:  python3-pytest
 BuildRequires:  virt-install = %{version}
 BuildRequires:  virt-manager = %{version}
+BuildRequires:  pkgconfig(vte-2.91)
 %endif
 
 %description
@@ -179,8 +196,14 @@
 %if %{default_hvs}
 %global _default_hvs --default-hvs %{default_hvs}
 %endif
+%if ! %{have_spice}
+%global _default_graphics -Ddefault-graphics=vnc
+%else
+%global _default_graphics -Ddefault-graphics=spice
+%endif
 %meson \
     -Ddefault-hvs=%{default_hvs} \
+    %{?_default_graphics} \
     -Dupdate-icon-cache=false \
     -Dcompile-schemas=false \
     -Dtests=disabled
@@ -255,6 +278,7 @@
 donttest="$donttest or testCLI0460virt_clone"
 donttest="$donttest or testCLI0461virt_clone"
 donttest="$donttest or testCLI0468virt_clone"
+donttest="$donttest or test_virtinstall_no_testsuite"
 donttest="$donttest or testCheckXMLBuilderProps"
 donttest="$donttest or testCheckCLISuboptions"
 #

++++++ 001-cli-Support-cpu-maximum.patch ++++++
Subject: cli: Support --cpu maximum
From: Andrea Bolognani abolo...@redhat.com Fri Dec 6 22:10:31 2024 +0100
Date: Tue Dec 10 14:01:32 2024 +0100:
Git: fca41cfaa970ba5a4e695f482fd599f53572b6c7

This mode has been introduced in libvirt 7.1.0 (March 2021) and
can be already used today with

  --cpu mode=maximum

This is however slightly inconvenient to type and is not
consistent with the special treatment that the other modes
(host-passthrough, host-model) get.

Introduce a proper special mode for it.

Signed-off-by: Andrea Bolognani <abolo...@redhat.com>

diff --git a/man/virt-install.rst b/man/virt-install.rst
index 86152d214..775d7ce70 100644
--- a/man/virt-install.rst
+++ b/man/virt-install.rst
@@ -438,6 +438,11 @@ Some examples:
 ``--cpu host-passthrough,cache.mode=passthrough``
     Example of passing through the host cpu's cache information.
 
+``--cpu maximum``
+    Expose the most feature-rich CPU possible. Useful when running a foreign
+    architecture guest, for example a riscv64 guest on an x86_64 host. Not
+    recommended when using KVM to run a same-architecture guest.
+
 Use --cpu=? to see a list of all available sub options.
 Complete details at 
https://libvirt.org/formatdomain.html#cpu-model-and-topology
 
diff --git a/tests/data/cli/compare/virt-install-linux2020.xml 
b/tests/data/cli/compare/virt-install-linux2020.xml
index 5a7d7adf3..b37b87758 100644
--- a/tests/data/cli/compare/virt-install-linux2020.xml
+++ b/tests/data/cli/compare/virt-install-linux2020.xml
@@ -19,7 +19,7 @@
     <apic/>
     <vmport state="off"/>
   </features>
-  <cpu mode="host-passthrough"/>
+  <cpu mode="maximum"/>
   <clock offset="utc">
     <timer name="rtc" tickpolicy="catchup"/>
     <timer name="pit" tickpolicy="delay"/>
@@ -102,7 +102,7 @@
     <apic/>
     <vmport state="off"/>
   </features>
-  <cpu mode="host-passthrough"/>
+  <cpu mode="maximum"/>
   <clock offset="utc">
     <timer name="rtc" tickpolicy="catchup"/>
     <timer name="pit" tickpolicy="delay"/>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 23ad1cadb..03c3316e1 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -1153,7 +1153,7 @@ c.add_compare("--os-variant 
http://fedoraproject.org/fedora/20 --disk %(EXISTIMG
 c.add_compare("--cdrom %(EXISTIMG2)s --file %(EXISTIMG1)s --os-variant win2k3 
--sound --controller usb", "kvm-win2k3-cdrom")  # HVM windows install with disk
 c.add_compare("--os-variant name=ubuntusaucy --nodisks --boot cdrom 
--virt-type qemu --cpu Penryn --input tablet --boot uefi --graphics vnc", 
"qemu-plain")  # plain qemu
 c.add_compare("--os-variant fedora20 --nodisks --boot network --graphics 
default --arch i686 --rng none", "qemu-32-on-64", prerun_check=has_old_osinfo)  
# 32 on 64
-c.add_compare("--osinfo linux2020 --pxe", "linux2020", 
prerun_check=no_osinfo_linux2020_virtio)
+c.add_compare("--osinfo linux2020 --pxe --cpu maximum", "linux2020", 
prerun_check=no_osinfo_linux2020_virtio) # also --cpu maximum
 c.add_compare("--check disk_size=off --osinfo win11 --cdrom %(EXISTIMG1)s", 
"win11", prerun_check=no_osinfo_win11)
 c.add_compare("--check disk_size=off --osinfo win11 --cdrom %(EXISTIMG1)s 
--boot uefi=off", "win11-no-uefi")
 c.add_compare("--osinfo generic --disk none --location 
%(ISO-NO-OS)s,kernel=frib.img,initrd=/frob.img", "location-manual-kernel", 
prerun_check=missing_xorriso)  # --location with an unknown ISO but manually 
specified kernel paths
diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py
index df0ca2250..91a9481cf 100644
--- a/virtinst/domain/cpu.py
+++ b/virtinst/domain/cpu.py
@@ -267,12 +267,13 @@ class DomainCpu(XMLBuilder):
     SPECIAL_MODE_HOST_COPY = "host-copy"
     SPECIAL_MODE_HOST_MODEL = "host-model"
     SPECIAL_MODE_HOST_PASSTHROUGH = "host-passthrough"
+    SPECIAL_MODE_MAXIMUM = "maximum"
     SPECIAL_MODE_CLEAR = "clear"
     SPECIAL_MODE_APP_DEFAULT = "default"
     SPECIAL_MODES = [SPECIAL_MODE_HOST_MODEL_ONLY, SPECIAL_MODE_HV_DEFAULT,
                      SPECIAL_MODE_HOST_COPY, SPECIAL_MODE_HOST_MODEL,
-                     SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_CLEAR,
-                     SPECIAL_MODE_APP_DEFAULT]
+                     SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_MAXIMUM,
+                     SPECIAL_MODE_CLEAR, SPECIAL_MODE_APP_DEFAULT]
 
     def _get_app_default_mode(self, guest):
         # Depending on if libvirt+qemu is new enough, we prefer
@@ -295,7 +296,8 @@ class DomainCpu(XMLBuilder):
             log.debug("Using default cpu mode=%s", val)
 
         if (val == self.SPECIAL_MODE_HOST_MODEL or
-            val == self.SPECIAL_MODE_HOST_PASSTHROUGH):
+            val == self.SPECIAL_MODE_HOST_PASSTHROUGH or
+            val == self.SPECIAL_MODE_MAXIMUM):
             self.model = None
             self.vendor = None
             self.model_fallback = None

++++++ 002-gui-Support-maximum-CPU-mode.patch ++++++
Subject: gui: Support maximum CPU mode
From: Andrea Bolognani abolo...@redhat.com Fri Dec 6 22:28:09 2024 +0100
Date: Tue Dec 10 14:01:32 2024 +0100:
Git: 11b70218d3b38efae36db8ba4149702a6d51afc0

Allow the user to set it and recognize it correctly when the
domain is already using it.

Signed-off-by: Andrea Bolognani <abolo...@redhat.com>

diff --git a/virtManager/details/details.py b/virtManager/details/details.py
index e53c52ef0..0dc9d2d64 100644
--- a/virtManager/details/details.py
+++ b/virtManager/details/details.py
@@ -775,6 +775,8 @@ class vmmDetails(vmmGObjectUI):
             virtinst.DomainCpu.SPECIAL_MODE_HOST_MODEL, False])
         model.append(["host-passthrough", "05",
             virtinst.DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, False])
+        model.append(["maximum", "06",
+            virtinst.DomainCpu.SPECIAL_MODE_MAXIMUM, False])
         model.append([None, None, None, True])
         for name in domcaps.get_cpu_models():
             model.append([name, name, name, False])
@@ -1915,7 +1917,8 @@ class vmmDetails(vmmGObjectUI):
         # CPU model config
         model = cpu.model or None
         is_host = (cpu.mode in ["host-model", "host-passthrough"])
-        if not model and is_host:
+        is_special_mode = (cpu.mode in virtinst.DomainCpu.SPECIAL_MODES)
+        if not model and is_special_mode:
             model = cpu.mode
 
         if model:
diff --git a/virtManager/preferences.py b/virtManager/preferences.py
index 5022f7ed3..df599d044 100644
--- a/virtManager/preferences.py
+++ b/virtManager/preferences.py
@@ -172,7 +172,8 @@ class vmmPreferences(vmmGObjectUI):
             [DomainCpu.SPECIAL_MODE_HOST_MODEL_ONLY,
                 _("Nearest host CPU model")],
             [DomainCpu.SPECIAL_MODE_HOST_MODEL, "host-model"],
-            [DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, "host-passthrough"]]:
+            [DomainCpu.SPECIAL_MODE_HOST_PASSTHROUGH, "host-passthrough"],
+            [DomainCpu.SPECIAL_MODE_MAXIMUM, "maximum"]]:
             model.append(row)
         combo.set_model(model)
         uiutil.init_combo_text_column(combo, 1)

++++++ 003-cpu-Prefer-maximum-mode-for-many-emulated-guests.patch ++++++
Subject: cpu: Prefer maximum mode for many emulated guests
From: Andrea Bolognani abolo...@redhat.com Fri Dec 6 23:02:29 2024 +0100
Date: Tue Dec 10 14:01:32 2024 +0100:
Git: 8af438dd58cafe90d591eef25e7510c313cf3036

The actual default CPU at the QEMU level is often a relatively
poor choice, which is stuck with just baseline functionality
and can sometimes not run modern guests at all.

Whenever possible, prefer maximum mode for a much nicer out of
the box experience.

Signed-off-by: Andrea Bolognani <abolo...@redhat.com>

diff --git a/tests/data/cli/compare/virt-install-aarch64-machdefault.xml 
b/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
index f88a0fc17..d17c82573 100644
--- a/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
+++ b/tests/data/cli/compare/virt-install-aarch64-machdefault.xml
@@ -18,9 +18,7 @@
   <features>
     <acpi/>
   </features>
-  <cpu mode="custom" match="exact">
-    <model>cortex-a57</model>
-  </cpu>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-aarch64</emulator>
diff --git a/tests/data/cli/compare/virt-install-aarch64-machvirt.xml 
b/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
index f88a0fc17..d17c82573 100644
--- a/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
+++ b/tests/data/cli/compare/virt-install-aarch64-machvirt.xml
@@ -18,9 +18,7 @@
   <features>
     <acpi/>
   </features>
-  <cpu mode="custom" match="exact">
-    <model>cortex-a57</model>
-  </cpu>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-aarch64</emulator>
diff --git a/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml 
b/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
index b56d07880..bc8006252 100644
--- a/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
+++ b/tests/data/cli/compare/virt-install-arm-defaultmach-f20.xml
@@ -15,6 +15,7 @@
     <initrd>/f19-arm.initrd</initrd>
     <cmdline>foo</cmdline>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-arm</emulator>
diff --git a/tests/data/cli/compare/virt-install-arm-virt-f20.xml 
b/tests/data/cli/compare/virt-install-arm-virt-f20.xml
index 9d2001697..dc74281b7 100644
--- a/tests/data/cli/compare/virt-install-arm-virt-f20.xml
+++ b/tests/data/cli/compare/virt-install-arm-virt-f20.xml
@@ -15,6 +15,7 @@
     <initrd>/f19-arm.initrd</initrd>
     <cmdline>console=ttyAMA0,1234 rw root=/dev/vda3</cmdline>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-arm</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-cdrom.xml 
b/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
index 35cd1e712..1d6bd923c 100644
--- a/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-cdrom.xml
@@ -14,6 +14,7 @@
     <boot dev="cdrom"/>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
@@ -92,6 +93,7 @@
     <type arch="riscv64" machine="virt">hvm</type>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml 
b/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
index b83937ca5..815f93ea0 100644
--- a/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-cloud-init.xml
@@ -12,6 +12,7 @@
   <os firmware="efi">
     <type arch="riscv64" machine="virt">hvm</type>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
@@ -87,6 +88,7 @@
     <type arch="riscv64" machine="virt">hvm</type>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-graphics.xml 
b/tests/data/cli/compare/virt-install-riscv64-graphics.xml
index 659dae74f..04ab41933 100644
--- a/tests/data/cli/compare/virt-install-riscv64-graphics.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-graphics.xml
@@ -13,6 +13,7 @@
     <type arch="riscv64" machine="virt">hvm</type>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-headless.xml 
b/tests/data/cli/compare/virt-install-riscv64-headless.xml
index 939e71b2a..27328a123 100644
--- a/tests/data/cli/compare/virt-install-riscv64-headless.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-headless.xml
@@ -13,6 +13,7 @@
     <type arch="riscv64" machine="virt">hvm</type>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml 
b/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
index 640e5ee0d..c3714594a 100644
--- a/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-kernel-boot.xml
@@ -15,6 +15,7 @@
     <initrd>/initrd.img</initrd>
     <cmdline>root=/dev/vda2</cmdline>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/data/cli/compare/virt-install-riscv64-unattended.xml 
b/tests/data/cli/compare/virt-install-riscv64-unattended.xml
index 0a9f88b4e..7fdb32d04 100644
--- a/tests/data/cli/compare/virt-install-riscv64-unattended.xml
+++ b/tests/data/cli/compare/virt-install-riscv64-unattended.xml
@@ -12,6 +12,7 @@
   <os firmware="efi">
     <type arch="riscv64" machine="virt">hvm</type>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
@@ -90,6 +91,7 @@
     <type arch="riscv64" machine="virt">hvm</type>
     <boot dev="hd"/>
   </os>
+  <cpu mode="maximum"/>
   <clock offset="utc"/>
   <devices>
     <emulator>/usr/bin/qemu-system-riscv64</emulator>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 03c3316e1..dc9c156da 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -1247,7 +1247,7 @@ c.add_compare("--connect %(URI-KVM-ARMV7L)s --disk 
%(EXISTIMG1)s --import --os-v
 
 c.add_valid("--arch aarch64 --osinfo fedora19 --nodisks --pxe --connect " + 
utils.URIs.kvm_x86_nodomcaps, grep="Libvirt version does not support UEFI")  # 
attempt to default to aarch64 UEFI, but it fails, but should only print warnings
 c.add_invalid("--arch aarch64 --nodisks --pxe --connect " + 
utils.URIs.kvm_x86, grep="OS name is required")  # catch missing osinfo for 
non-x86
-c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
+c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --cpu default 
--boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
 c.add_compare("--arch aarch64 --osinfo fedora19 --boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machdefault")
 c.add_compare("--arch aarch64 --cdrom %(ISO-F26-NETINST)s --boot 
loader=CODE.fd,nvram.template=VARS.fd --disk %(EXISTIMG1)s --cpu none --events 
on_crash=preserve,on_reboot=destroy,on_poweroff=restart", "aarch64-cdrom")  # 
cdrom test, but also --cpu none override, --events override, and headless
 c.add_compare("--connect %(URI-KVM-AARCH64)s --disk %(EXISTIMG1)s --import 
--os-variant fedora21 --panic default --graphics vnc", "aarch64-kvm-import")  # 
--import test, but also test --panic no-op, and --graphics
diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py
index 91a9481cf..cc4053f88 100644
--- a/virtinst/domain/cpu.py
+++ b/virtinst/domain/cpu.py
@@ -275,11 +275,26 @@ class DomainCpu(XMLBuilder):
                      SPECIAL_MODE_HOST_PASSTHROUGH, SPECIAL_MODE_MAXIMUM,
                      SPECIAL_MODE_CLEAR, SPECIAL_MODE_APP_DEFAULT]
 
+    def _should_use_maximum_cpu_mode(self, guest, domcaps):
+        if (domcaps.supports_maximum_cpu_mode() and
+            guest.type == "qemu" and
+            (guest.os.is_x86() or
+             guest.os.is_arm_machvirt() or
+             guest.os.is_riscv_virt() or
+             guest.os.is_loongarch64())):
+            return True
+
+        return False
+
     def _get_app_default_mode(self, guest):
         # Depending on if libvirt+qemu is new enough, we prefer
         # host-passthrough, then host-model, and finally host-model-only
+        # Emulated guests use maximum mode if available
         domcaps = guest.lookup_domcaps()
 
+        if (self._should_use_maximum_cpu_mode(guest, domcaps)):
+            return self.SPECIAL_MODE_MAXIMUM
+
         if domcaps.supports_safe_host_passthrough():
             return self.SPECIAL_MODE_HOST_PASSTHROUGH
 
@@ -460,9 +475,12 @@ class DomainCpu(XMLBuilder):
         if guest.os.is_arm_machvirt() and guest.type == "kvm":
             self.mode = self.SPECIAL_MODE_HOST_PASSTHROUGH
 
-        elif guest.os.is_arm64() and guest.os.is_arm_machvirt():
-            # -M virt defaults to a 32bit CPU, even if using aarch64
-            self.set_model(guest, "cortex-a57")
-
         elif guest.os.is_x86() and guest.type == "kvm":
             self._set_cpu_x86_kvm_default(guest)
+
+        else:
+            domcaps = guest.lookup_domcaps()
+
+            # Prefer to emulate a feature-rich CPU instead of a basic one
+            if (self._should_use_maximum_cpu_mode(guest, domcaps)):
+                self.set_special_mode(guest, self.SPECIAL_MODE_MAXIMUM)
diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index 3a19591d9..5d82a351e 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -382,6 +382,10 @@ class DomainCapabilities(XMLBuilder):
         return (m and m.supported and
                 "on" in m.get_enum("hostPassthroughMigratable").get_values())
 
+    def supports_maximum_cpu_mode(self):
+        m = self.cpu.get_mode("maximum")
+        return (m and m.supported)
+
     def get_cpu_models(self):
         models = []
 

++++++ 004-domcaps-get-list-of-supported-panic-device-models.patch ++++++
Subject: domcaps: get list of supported panic device models
From: Lin Ma l...@suse.de Tue Dec 3 13:32:15 2024 +0800
Date: Tue Dec 10 14:05:20 2024 +0100:
Git: c859c7acec38a68a46b3ee98b1ff494fa88d508e

libvirt commit a52cd504 added support for advertisting panic device models.
Let's use it in domcapabilities.

Signed-off-by: Lin Ma <l...@suse.de>

diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py
index 5d82a351e..9e1b11932 100644
--- a/virtinst/domcapabilities.py
+++ b/virtinst/domcapabilities.py
@@ -115,6 +115,7 @@ class _Devices(_CapsBlock):
     filesystem = XMLChildProperty(_make_capsblock("filesystem"), 
is_single=True)
     redirdev = XMLChildProperty(_make_capsblock("redirdev"), is_single=True)
     channel = XMLChildProperty(_make_capsblock("channel"), is_single=True)
+    panic = XMLChildProperty(_make_capsblock("panic"), is_single=True)
 
 
 class _Features(_CapsBlock):
@@ -508,3 +509,9 @@ class DomainCapabilities(XMLBuilder):
             return []
 
         return self.features.hyperv.get_enum("features").get_values()
+
+    def supported_panic_models(self):
+        """
+        Return list of supported panic device models.
+        """
+        return self.devices.panic.get_enum("model").get_values()

++++++ 005-tests-Update-capabilities-for-advertisting-panic-device-models.patch 
++++++
Subject: tests: Update capabilities for advertisting panic device models
From: Lin Ma l...@suse.de Tue Dec 3 18:45:52 2024 +0800
Date: Tue Dec 10 14:05:20 2024 +0100:
Git: f9ceec2b14cb4012cb40226f3c0c05ff1ac8f708

Signed-off-by: Lin Ma <l...@suse.de>

diff --git a/tests/data/capabilities/kvm-aarch64-domcaps.xml 
b/tests/data/capabilities/kvm-aarch64-domcaps.xml
index eeef1a17a..af8354b08 100644
--- a/tests/data/capabilities/kvm-aarch64-domcaps.xml
+++ b/tests/data/capabilities/kvm-aarch64-domcaps.xml
@@ -215,6 +215,11 @@
         <value>lkcf</value>
       </enum>
     </crypto>
+    <panic supported='yes'>
+      <enum name='model'>
+        <value>pvpanic</value>
+      </enum>
+    </panic>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/data/capabilities/kvm-loongarch64-domcaps.xml 
b/tests/data/capabilities/kvm-loongarch64-domcaps.xml
index e9836fec4..d2b348f4c 100644
--- a/tests/data/capabilities/kvm-loongarch64-domcaps.xml
+++ b/tests/data/capabilities/kvm-loongarch64-domcaps.xml
@@ -152,6 +152,11 @@
         <value>lkcf</value>
       </enum>
     </crypto>
+    <panic supported='yes'>
+      <enum name='model'>
+        <value>pvpanic</value>
+      </enum>
+    </panic>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/data/capabilities/kvm-ppc64le-domcaps.xml 
b/tests/data/capabilities/kvm-ppc64le-domcaps.xml
index 7d40b12ff..46234fd19 100644
--- a/tests/data/capabilities/kvm-ppc64le-domcaps.xml
+++ b/tests/data/capabilities/kvm-ppc64le-domcaps.xml
@@ -160,6 +160,12 @@
         <value>lkcf</value>
       </enum>
     </crypto>
+    <panic supported='yes'>
+      <enum name='model'>
+        <value>pseries</value>
+        <value>pvpanic</value>
+      </enum>
+    </panic>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml 
b/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
index 91fabc5fa..b5e06eda6 100644
--- a/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
+++ b/tests/data/capabilities/kvm-x86_64-domcaps-latest.xml
@@ -259,6 +259,13 @@
         <value>lkcf</value>
       </enum>
     </crypto>
+    <panic supported='yes'>
+      <enum name='model'>
+        <value>isa</value>
+        <value>hyperv</value>
+        <value>pvpanic</value>
+      </enum>
+    </panic>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/data/capabilities/qemu-riscv64-domcaps.xml 
b/tests/data/capabilities/qemu-riscv64-domcaps.xml
index c8a9e5915..30eca7129 100644
--- a/tests/data/capabilities/qemu-riscv64-domcaps.xml
+++ b/tests/data/capabilities/qemu-riscv64-domcaps.xml
@@ -167,6 +167,11 @@
         <value>lkcf</value>
       </enum>
     </crypto>
+    <panic supported='yes'>
+      <enum name='model'>
+        <value>pvpanic</value>
+      </enum>
+    </panic>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/test_capabilities.py b/tests/test_capabilities.py
index 1ebd564d4..5351c8352 100644
--- a/tests/test_capabilities.py
+++ b/tests/test_capabilities.py
@@ -101,6 +101,7 @@ def testDomainCapabilitiesx86():
     assert caps.supports_memorybacking_memfd()
     assert caps.supports_redirdev_usb()
     assert caps.supports_channel_spicevmc()
+    assert caps.supported_panic_models() == ["isa", "hyperv", "pvpanic"]
 
     xml = open(DATADIR + "/kvm-x86_64-domcaps-amd-sev.xml").read()
     caps = DomainCapabilities(utils.URIs.open_testdriver_cached(), xml)
@@ -119,6 +120,7 @@ def testDomainCapabilitiesAArch64():
     assert caps.supports_memorybacking_memfd()
     assert caps.supports_redirdev_usb()
     assert caps.supports_channel_spicevmc()
+    assert caps.supported_panic_models() == ["pvpanic"]
 
 
 def testDomainCapabilitiesPPC64le():
@@ -137,6 +139,7 @@ def testDomainCapabilitiesPPC64le():
     assert caps.supports_memorybacking_memfd()
     assert caps.supports_redirdev_usb()
     assert not caps.supports_channel_spicevmc()
+    assert caps.supported_panic_models() == ["pseries", "pvpanic"]
 
 
 def testDomainCapabilitiesRISCV64():
@@ -167,6 +170,7 @@ def testDomainCapabilitiesRISCV64():
     assert caps.supports_memorybacking_memfd()
     assert caps.supports_redirdev_usb()
     assert caps.supports_channel_spicevmc()
+    assert caps.supported_panic_models() == ["pvpanic"]
 
 
 def testDomainCapabilitiesLoongArch64():
@@ -197,3 +201,4 @@ def testDomainCapabilitiesLoongArch64():
     assert caps.supports_memorybacking_memfd()
     assert caps.supports_redirdev_usb()
     assert caps.supports_channel_spicevmc()
+    assert caps.supported_panic_models() == ["pvpanic"]

++++++ 
006-addhardware-panic-Fill-in-model-combo-with-advertised-values-by-libvirt.patch
 ++++++
Subject: addhardware: panic: Fill in model combo with advertised values by 
libvirt
From: Lin Ma l...@suse.de Tue Dec 3 18:46:28 2024 +0800
Date: Tue Dec 10 14:05:20 2024 +0100:
Git: f92c25749bcd88bb7412c74119b25802327916e6

The commit c5a46646 asks libvirt to fill in a default panic model for us.
Now libvirt domcaps can advertise panic models, Let's fill in the panic
model combo with the advertised values.

Signed-off-by: Lin Ma <l...@suse.de>

diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index e6e4ec1d1..0faf30a53 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -860,8 +860,13 @@ class vmmAddHardware(vmmGObjectUI):
 
 
     def _build_panic_model_combo(self):
+        guest = self.vm.get_xmlobj()
         values = [[None, _("Hypervisor default")]]
+        for m in guest.lookup_domcaps().supported_panic_models():
+            values.append([m, m])
+
         uiutil.build_simple_combo(self.widget("panic-model"), values)
+        uiutil.set_list_selection(self.widget("panic-model"), None)
 
 
     def _build_controller_type_combo(self):

++++++ 007-cli-man-Always-list-osinfo-before-os-variant.patch ++++++
Subject: cli, man: Always list --osinfo before --os-variant
From: Andrea Bolognani abolo...@redhat.com Mon Dec 2 19:25:51 2024 +0100
Date: Tue Dec 10 14:06:12 2024 +0100:
Git: c3debb4eda6b251fdad87f1ba5326671bb558d2b

The former is the preferred spelling and it should always be
presented first to the user.

Signed-off-by: Andrea Bolognani <abolo...@redhat.com>

diff --git a/man/virt-install.rst b/man/virt-install.rst
index 775d7ce70..dc0b6d9cc 100644
--- a/man/virt-install.rst
+++ b/man/virt-install.rst
@@ -1022,7 +1022,7 @@ GUEST OS OPTIONS
 ================
 
 
-``--os-variant``, ``--osinfo``
+``--osinfo``, ``--os-variant``
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 **Syntax:** ``--osinfo`` [OSNAME|OPT1=VAL1,...]
@@ -1031,7 +1031,7 @@ Optimize the guest configuration for a specific operating 
system.
 For most cases, an OS must be specified or detected from the install
 media so performance critical features like virtio can be enabled.
 
-The simplest usage is ``--os-variant OSNAME`` or ``--osinfo OSNAME``,
+The simplest usage is ``--osinfo OSNAME`` or ``--os-variant OSNAME``,
 for example ``--osinfo fedora32``. The supported suboptions are:
 
 ``name=``, ``short-id=``
@@ -1076,7 +1076,7 @@ VIRTINSTALL_OSINFO_DISABLE_REQUIRE=1.
 Use the command ``virt-install --osinfo list`` to get the list of the
 accepted OS variants. See ``osinfo-query os`` for even more output.
 
-Note: ``--os-variant`` and ``--osinfo`` are aliases for one another.
+Note: ``--osinfo`` and ``--os-variant`` are aliases for one another.
 ``--osinfo`` is the preferred new style naming.
 
 
diff --git a/man/virt-xml.rst b/man/virt-xml.rst
index dfb6fd9fb..7bccffbf9 100644
--- a/man/virt-xml.rst
+++ b/man/virt-xml.rst
@@ -180,7 +180,7 @@ These options decide what action to take after altering the 
XML. In the common c
 GUEST OS OPTIONS
 ================
 
-``--os-variant``, ``--osinfo`` OS_VARIANT
+``--osinfo``, ``--os-variant`` OS_VARIANT
     Optimize the guest configuration for a specific operating system (ex.
     'fedora29', 'rhel7', 'win10'). While not required, specifying this
     options is HIGHLY RECOMMENDED, as it can greatly increase performance
@@ -194,7 +194,7 @@ GUEST OS OPTIONS
     Use the command ``virt-xml --osinfo list`` to get the list of the
     accepted OS variants. See ``osinfo-query os`` for even more output.
 
-    See virt-install(1) documentation for more details about 
``--os-variant/--osinfo``
+    See virt-install(1) documentation for more details about 
``--osinfo/--os-variant``
 
 
 CONVERSION OPTIONS
diff --git a/tests/test_cli.py b/tests/test_cli.py
index dc9c156da..51a1883c4 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -1039,8 +1039,8 @@ c.add_compare("--connect %(URI-KVM-X86)s --install 
fedora26", "osinfo-url")  # g
 c.add_valid("--location https://foobar.com --os-variant detect=yes,name=win7", 
nogrep="Please file a bug against virt-install")  # os detection succeeds, the 
fallback warning shouldn't be printed
 c.add_valid("--pxe --os-variant detect=yes,name=win7", grep="Please file a bug 
against virt-install")  # os detection fails, so fallback warning should be 
printed
 c.add_valid("--cdrom http://example.com/path/to/some.iso --os-variant 
detect=yes,require=no", grep="Please file a bug against virt-install")  # 
detection fails with require=no, we should print the error about using fallback 
name=
-c.add_invalid("--pxe --os-variant detect=yes,require=yes", 
grep="--os-variant/--osinfo OS name is required")  # No os-variant detected, 
but require=yes
-c.add_invalid("--pxe --osinfo detect=yes", grep="--os-variant/--osinfo OS name 
is required")  # --osinfo detect=on failed, but with implied require=yes
+c.add_invalid("--pxe --os-variant detect=yes,require=yes", 
grep="--osinfo/--os-variant OS name is required")  # No os-variant detected, 
but require=yes
+c.add_invalid("--pxe --osinfo detect=yes", grep="--osinfo/--os-variant OS name 
is required")  # --osinfo detect=on failed, but with implied require=yes
 c.add_invalid("--pxe --virt-type foobar", grep="Host does not support domain 
type")
 c.add_invalid("--pxe --os-variant farrrrrrrge", grep="Unknown OS name")
 c.add_invalid("--pxe --boot menu=foobar", grep="menu must be 'yes' or 'no'")
@@ -1409,9 +1409,9 @@ c.add_valid("test-for-virtxml --edit --cpu 
host-passthrough --no-define --start
 c.add_valid("test-for-virtxml --edit --metadata name=test-for-virtxml", 
grep="requested changes will have no effect")
 c.add_valid("--print-diff test-for-virtxml --remove-device --disk 
boot.order=5", grep="boot order=\"5")
 c.add_invalid("test --edit 2 --events on_poweroff=destroy", grep="'--edit 2' 
doesn't make sense with --events")
-c.add_invalid("test --os-variant fedora26 --edit --cpu host-passthrough", 
grep="--os-variant/--osinfo is not supported")
-c.add_invalid("test-for-virtxml --os-variant fedora26 --remove-device --disk 
1", grep="--os-variant/--osinfo is not supported")
-c.add_invalid("--build-xml --os-variant fedora26 --disk path=foo", 
grep="--os-variant/--osinfo is not supported")
+c.add_invalid("test --os-variant fedora26 --edit --cpu host-passthrough", 
grep="--osinfo/--os-variant is not supported")
+c.add_invalid("test-for-virtxml --os-variant fedora26 --remove-device --disk 
1", grep="--osinfo/--os-variant is not supported")
+c.add_invalid("--build-xml --os-variant fedora26 --disk path=foo", 
grep="--osinfo/--os-variant is not supported")
 c.add_invalid("domain-idontexist --edit --cpu host-passthrough --start", 
grep="Could not find domain")
 c.add_invalid("test-state-shutoff --edit --update --boot menu=on --start", 
grep="Cannot use --update")
 c.add_invalid("test --edit --update --events on_poweroff=destroy", grep="Don't 
know how to --update for --events")
diff --git a/virtManager/createvm.py b/virtManager/createvm.py
index d5f49fb70..e37921603 100644
--- a/virtManager/createvm.py
+++ b/virtManager/createvm.py
@@ -103,7 +103,7 @@ class _GuestData:
         self.init = None
 
         self.machine = None
-        self.os_variant = None
+        self.osinfo = None
         self.uefi_requested = None
         self.name = None
 
@@ -138,8 +138,8 @@ class _GuestData:
             # If no machine was explicitly selected, we don't overwrite
             # it, because we want to
             guest.os.machine = self.machine
-        if self.os_variant:
-            guest.set_os_name(self.os_variant)
+        if self.osinfo:
+            guest.set_os_name(self.osinfo)
         if self.uefi_requested:
             guest.uefi_requested = self.uefi_requested
 
@@ -1578,7 +1578,7 @@ class vmmCreateVM(vmmGObjectUI):
             self._gdata.cdrom = cdrom
             self._gdata.extra_args = extra
             self._gdata.livecd = False
-            self._gdata.os_variant = osobj and osobj.name or None
+            self._gdata.osinfo = osobj and osobj.name or None
             guest = self._gdata.build_guest()
             installer = self._gdata.build_installer()
         except Exception as e:
diff --git a/virtinst/cli.py b/virtinst/cli.py
index b58717ab2..43d45a508 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -494,7 +494,7 @@ def fail_conflicting(option1, option2):
 def _get_completer_parsers():
     return VIRT_PARSERS + [ParserCheck, ParserLocation,
             ParserUnattended, ParserInstall, ParserCloudInit,
-            ParserOSVariant]
+            ParserOSInfo]
 
 
 def _virtparser_completer(prefix, **kwargs):
@@ -930,7 +930,7 @@ def add_disk_option(stog, editexample=False):
                "--disk=?") + editmsg)
 
 
-def add_os_variant_option(parser, virtinstall):
+def add_osinfo_option(parser, virtinstall):
     osg = parser.add_argument_group(_("OS options"))
 
     if virtinstall:
@@ -942,7 +942,7 @@ def add_os_variant_option(parser, virtinstall):
              "Example values: fedora29, rhel7.0, win10, ...\n"
              "Use '--osinfo list' to see a full list.")
 
-    osg.add_argument("--os-variant", "--osinfo", help=msg)
+    osg.add_argument("--osinfo", "--os-variant", help=msg)
     return osg
 
 
@@ -1880,11 +1880,11 @@ def parse_location(optstr):
     return parsedata.location, parsedata.kernel, parsedata.initrd
 
 
-########################
-# --os-variant parsing #
-########################
+####################
+# --osinfo parsing #
+####################
 
-class OSVariantData(object):
+class OSInfoData(object):
     _REQUIRE_ON = 1
     _REQUIRE_AUTO = 3
 
@@ -1936,8 +1936,8 @@ class OSVariantData(object):
         return self._name
 
 
-class ParserOSVariant(VirtCLIParser):
-    cli_arg_name = "os_variant"
+class ParserOSInfo(VirtCLIParser):
+    cli_arg_name = "osinfo"
     supports_clearxml = False
 
     @classmethod
@@ -1956,9 +1956,9 @@ class ParserOSVariant(VirtCLIParser):
         return super().parse(inst)
 
 
-def parse_os_variant(optstr):
-    data = OSVariantData()
-    parser = ParserOSVariant(optstr)
+def parse_osinfo(optstr):
+    data = OSInfoData()
+    parser = ParserOSInfo(optstr)
     parser.parse(data)
     data.validate()
     return data
@@ -5051,7 +5051,7 @@ def check_option_introspection(options):
 
 
 def check_osinfo_list(options):
-    if options.os_variant != "list":
+    if options.osinfo != "list":
         return False
 
     for osobj in OSDB.list_os():
diff --git a/virtinst/install/installertreemedia.py 
b/virtinst/install/installertreemedia.py
index 8b208bf50..dc6519eef 100644
--- a/virtinst/install/installertreemedia.py
+++ b/virtinst/install/installertreemedia.py
@@ -29,15 +29,15 @@ def _is_url(url):
 
 
 class _LocationData(object):
-    def __init__(self, os_variant, kernel_pairs, os_media, os_tree):
-        self.os_variant = os_variant
+    def __init__(self, osinfo, kernel_pairs, os_media, os_tree):
+        self.osinfo = osinfo
         self.kernel_pairs = kernel_pairs
         self.os_media = os_media
         self.os_tree = os_tree
 
         self.kernel_url_arg = None
-        if self.os_variant:
-            osobj = OSDB.lookup_os(self.os_variant)
+        if self.osinfo:
+            osobj = OSDB.lookup_os(self.osinfo)
             self.kernel_url_arg = osobj.get_kernel_url_arg()
 
 
@@ -171,7 +171,7 @@ class InstallerTreeMedia(object):
             return self._cached_data
 
         store = None
-        os_variant = None
+        osinfo = None
         os_media = None
         os_tree = None
         kernel_paths = []
@@ -187,14 +187,14 @@ class InstallerTreeMedia(object):
 
         if store:
             kernel_paths = store.get_kernel_paths()
-            os_variant = store.get_osdict_info()
+            osinfo = store.get_osdict_info()
             os_media = store.get_os_media()
             os_tree = store.get_os_tree()
         if has_location_kernel:
             kernel_paths = [
                     (self._location_kernel, self._location_initrd)]
 
-        self._cached_data = _LocationData(os_variant, kernel_paths,
+        self._cached_data = _LocationData(osinfo, kernel_paths,
                 os_media, os_tree)
         return self._cached_data
 
@@ -236,8 +236,8 @@ class InstallerTreeMedia(object):
             self._initrd_injections.append((scriptpath, expected_filename))
 
     def _prepare_kernel_url_arg(self, guest, cache):
-        os_variant = cache.os_variant or guest.osinfo.name
-        osobj = OSDB.lookup_os(os_variant)
+        osinfo = cache.osinfo or guest.osinfo.name
+        osobj = OSDB.lookup_os(osinfo)
         return osobj.get_kernel_url_arg()
 
     def _prepare_kernel_args(self, guest, cache, unattended_scripts):
@@ -304,7 +304,7 @@ class InstallerTreeMedia(object):
     def detect_distro(self, guest):
         fetcher = self._get_fetcher(guest, None)
         cache = self._get_cached_data(guest, fetcher)
-        return cache.os_variant
+        return cache.osinfo
 
     def get_os_media(self, guest, meter):
         fetcher = self._get_fetcher(guest, meter)
diff --git a/virtinst/virtinstall.py b/virtinst/virtinstall.py
index 15fd6ae9d..e56486055 100644
--- a/virtinst/virtinstall.py
+++ b/virtinst/virtinstall.py
@@ -571,7 +571,7 @@ def installer_detect_distro(guest, installer, osdata):
         fail(_("Error validating install location: %s") % str(e))
 
     msg = _(
-        "--os-variant/--osinfo OS name is required, but no value was\n"
+        "--osinfo/--os-variant OS name is required, but no value was\n"
         "set or detected.")
     if os_set:
         return
@@ -650,7 +650,7 @@ def _build_options_guest(conn, options):
 
 def build_guest_instance(conn, options):
     installdata = cli.parse_install(options.install)
-    osdata = cli.parse_os_variant(options.os_variant or installdata.os)
+    osdata = cli.parse_osinfo(options.osinfo or installdata.os)
     options.boot_was_set = bool(options.boot)
 
     if options.reinstall:
@@ -1076,7 +1076,7 @@ def parse_args():
     cli.add_boot_options(insg)
     insg.add_argument("--init", help=argparse.SUPPRESS)
 
-    osg = cli.add_os_variant_option(parser, virtinstall=True)
+    osg = cli.add_osinfo_option(parser, virtinstall=True)
     osg.add_argument("--os-type", dest="old_os_type", help=argparse.SUPPRESS)
 
     devg = parser.add_argument_group(_("Device Options"))
@@ -1188,8 +1188,8 @@ def set_test_stub_options(options):  # pragma: no cover
         options.disk = "none"
     if not options.graphics:
         options.graphics = "none"
-    if not options.os_variant:
-        options.os_variant = "fedora27"
+    if not options.osinfo:
+        options.osinfo = "fedora27"
 
 
 def main(conn=None):
diff --git a/virtinst/virtxml.py b/virtinst/virtxml.py
index 6a16532cd..bcd25eb48 100644
--- a/virtinst/virtxml.py
+++ b/virtinst/virtxml.py
@@ -44,11 +44,11 @@ def get_diff(origxml, newxml):
     return diff
 
 
-def set_os_variant(guest, os_variant):
-    if os_variant is None:
+def set_osinfo(guest, osinfo):
+    if osinfo is None:
         return
 
-    osdata = cli.parse_os_variant(os_variant)
+    osdata = cli.parse_osinfo(osinfo)
     if osdata.get_name():
         guest.set_os_name(osdata.get_name())
 
@@ -97,13 +97,13 @@ class Action:
 
 
 def validate_action(action, conn, options):
-    if options.os_variant is not None:
+    if options.osinfo is not None:
         if action.is_edit:
-            fail(_("--os-variant/--osinfo is not supported with --edit"))
+            fail(_("--osinfo/--os-variant is not supported with --edit"))
         if action.is_remove_device:
-            fail(_("--os-variant/--osinfo is not supported with 
--remove-device"))
+            fail(_("--osinfo/--os-variant is not supported with 
--remove-device"))
         if action.is_build_xml:
-            fail(_("--os-variant/--osinfo is not supported with --build-xml"))
+            fail(_("--osinfo/--os-variant is not supported with --build-xml"))
 
     if not action.parserclass.guest_propname and action.is_build_xml:
         fail(_("--build-xml not supported for {cli_flag}").format(
@@ -251,11 +251,11 @@ def action_edit(action, guest):
     return devs
 
 
-def action_add_device(action, guest, os_variant, input_devs):
+def action_add_device(action, guest, osinfo, input_devs):
     parserclass = action.parserclass
     parservalue = action.parservalue
 
-    set_os_variant(guest, os_variant)
+    set_osinfo(guest, osinfo)
 
     if input_devs:
         for dev in input_devs:
@@ -294,7 +294,7 @@ def action_build_xml(action, guest):
 
 def perform_action(action, guest, options, input_devs):
     if action.is_add_device:
-        return action_add_device(action, guest, options.os_variant, input_devs)
+        return action_add_device(action, guest, options.osinfo, input_devs)
     if action.is_remove_device:
         return action_remove_device(action, guest)
     if action.is_edit:
@@ -483,7 +483,7 @@ def parse_args():
     outg.add_argument("--confirm", action="store_true",
         help=_("Require confirmation before saving any results."))
 
-    cli.add_os_variant_option(parser, virtinstall=False)
+    cli.add_osinfo_option(parser, virtinstall=False)
 
     conv = parser.add_argument_group(_("Conversion options"))
     cli.ParserConvertToQ35.register()

++++++ 
008-snapshots-default-to-same-snapshot-mode-as-currently-used-snapshot.patch 
++++++
Subject: snapshots: default to same snapshot mode as currently used snapshot
From: Pavel Hrdina phrd...@redhat.com Tue Jan 21 11:09:00 2025 +0100
Date: Mon Jan 27 22:59:56 2025 +0100:
Git: 40d86086b6b903982b5d0f97bd6763fc54bfb115

Using internal and external snapshot mode for the same VM has some
limitations. When creating new snapshot default to the same mode as
already existing currently used snapshot. If there is no existing
snapshot default to external snapshot.

Signed-off-by: Pavel Hrdina <phrd...@redhat.com>

diff --git a/virtManager/details/snapshots.py b/virtManager/details/snapshots.py
index a4f38de6d..00aa00708 100644
--- a/virtManager/details/snapshots.py
+++ b/virtManager/details/snapshots.py
@@ -138,7 +138,14 @@ class vmmSnapshotNew(vmmGObjectUI):
         mode_external = self.widget("snapshot-new-mode-external")
         mode_internal = self.widget("snapshot-new-mode-internal")
 
-        if mode_external.is_sensitive():
+        use_external = mode_external.is_sensitive()
+
+        if use_external:
+            current_mode = self._get_current_mode()
+            if current_mode == "internal":
+                use_external = False
+
+        if use_external:
             mode_external.set_active(True)
         else:
             mode_internal.set_active(True)
@@ -342,6 +349,17 @@ class vmmSnapshotNew(vmmGObjectUI):
                     self.topwin)
         progWin.run()
 
+    def _get_current_mode(self):
+        current = self.vm.get_current_snapshot()
+
+        if current is None:
+            return None
+
+        if current.is_external():
+            return "external"
+
+        return "internal"
+
 
     ################
     # UI listeners #
diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
index dbb932162..5aade01d8 100644
--- a/virtManager/object/domain.py
+++ b/virtManager/object/domain.py
@@ -1156,6 +1156,16 @@ class vmmDomain(vmmLibvirtObject):
             self._snapshot_list = newlist
         return self._snapshot_list[:]
 
+    def get_current_snapshot(self):
+
+       if self._backend.hasCurrentSnapshot(0):
+           rawsnap = self._backend.snapshotCurrent(0)
+           obj = vmmDomainSnapshot(self.conn, rawsnap)
+           obj.init_libvirt_state()
+           return obj
+
+       return None
+
     @vmmLibvirtObject.lifecycle_action
     def revert_to_snapshot(self, snap):
         # no use trying to set the guest time if is going to be switched off

++++++ 009-snapshots-warn-users-to-not-mix-snapshot-modes.patch ++++++
Subject: snapshots: warn users to not mix snapshot modes
From: Pavel Hrdina phrd...@redhat.com Tue Jan 21 12:11:10 2025 +0100
Date: Mon Jan 27 22:59:56 2025 +0100:
Git: 54dc858f79a973242394aa50c4db7c00385e9f5d

Signed-off-by: Pavel Hrdina <phrd...@redhat.com>

diff --git a/virtManager/details/snapshots.py b/virtManager/details/snapshots.py
index 00aa00708..3da7d5aca 100644
--- a/virtManager/details/snapshots.py
+++ b/virtManager/details/snapshots.py
@@ -370,6 +370,16 @@ class vmmSnapshotNew(vmmGObjectUI):
         self._populate_memory_path()
 
     def _ok_clicked_cb(self, src):
+        current_mode = self._get_current_mode()
+
+        if current_mode and current_mode != self._get_mode():
+            result = self.err.yes_no(_("Mixing external and internal snapshots 
for "
+                                       "the same VM is not recommended. Are 
you "
+                                       "sure you want to continue?"))
+
+            if not result:
+                return
+
         return self._create_new_snapshot()
 
     def _mode_toggled_cb(self, src):

++++++ 
revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch 
++++++
--- /var/tmp/diff_new_pack.IwMLY0/_old  2025-01-29 16:09:41.065738286 +0100
+++ /var/tmp/diff_new_pack.IwMLY0/_new  2025-01-29 16:09:41.069738452 +0100
@@ -14,9 +14,11 @@
 
 Signed-off-by: Cole Robinson <crobi...@redhat.com>
 
---- a/man/virt-install.rst
-+++ b/man/virt-install.rst
-@@ -1062,8 +1062,8 @@ all other settings off or unset.
+Index: virt-manager-5.0.0/man/virt-install.rst
+===================================================================
+--- virt-manager-5.0.0.orig/man/virt-install.rst
++++ virt-manager-5.0.0/man/virt-install.rst
+@@ -1067,8 +1067,8 @@ all other settings off or unset.
  
  By default, virt-install will always attempt ``--osinfo detect=on``
  for appropriate install media. If no OS is detected, we will fail
@@ -27,18 +29,22 @@
  above, or disabling the ``require`` option. If you just need to get back
  to the old non-fatal behavior ASAP, set the environment variable
  VIRTINSTALL_OSINFO_DISABLE_REQUIRE=1.
---- a/tests/test_cli.py
-+++ b/tests/test_cli.py
+Index: virt-manager-5.0.0/tests/test_cli.py
+===================================================================
+--- virt-manager-5.0.0.orig/tests/test_cli.py
++++ virt-manager-5.0.0/tests/test_cli.py
 @@ -1246,7 +1246,6 @@ c.add_compare("--connect %(URI-KVM-ARMV7
  #################
  
  c.add_valid("--arch aarch64 --osinfo fedora19 --nodisks --pxe --connect " + 
utils.URIs.kvm_x86_nodomcaps, grep="Libvirt version does not support UEFI")  # 
attempt to default to aarch64 UEFI, but it fails, but should only print warnings
 -c.add_invalid("--arch aarch64 --nodisks --pxe --connect " + 
utils.URIs.kvm_x86, grep="OS name is required")  # catch missing osinfo for 
non-x86
- c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
+ c.add_compare("--arch aarch64 --osinfo fedora19 --machine virt --cpu default 
--boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machvirt")
  c.add_compare("--arch aarch64 --osinfo fedora19 --boot 
kernel=/f19-arm.kernel,initrd=/f19-arm.initrd,kernel_args=\"console=ttyAMA0,1234
 rw root=/dev/vda3\" --disk %(EXISTIMG1)s", "aarch64-machdefault")
  c.add_compare("--arch aarch64 --cdrom %(ISO-F26-NETINST)s --boot 
loader=CODE.fd,nvram.template=VARS.fd --disk %(EXISTIMG1)s --cpu none --events 
on_crash=preserve,on_reboot=destroy,on_poweroff=restart", "aarch64-cdrom")  # 
cdrom test, but also --cpu none override, --events override, and headless
---- a/virtinst/virtinstall.py
-+++ b/virtinst/virtinstall.py
+Index: virt-manager-5.0.0/virtinst/virtinstall.py
+===================================================================
+--- virt-manager-5.0.0.orig/virtinst/virtinstall.py
++++ virt-manager-5.0.0/virtinst/virtinstall.py
 @@ -355,13 +355,9 @@ def _show_memory_warnings(guest):
  
  

++++++ virtinst-add-sle16-detection-support.patch ++++++
--- virt-manager-5.0.0/virtinst/install/urldetect.py.orig       2025-01-17 
13:13:11.582745934 -0700
+++ virt-manager-5.0.0/virtinst/install/urldetect.py    2025-01-17 
13:15:08.122748711 -0700
@@ -279,6 +279,10 @@ class _SUSEContent(object):
             else:
                 if "SUSE SL Micro" in self.product_name:
                     sle_version = self.product_name.strip().rsplit(' ')[3]
+                elif "SUSE SLES" in self.product_name:
+                    # For SLES 16
+                    sle_version = self.product_name.strip().rsplit(' ')[2]
+                    sle_version = sle_version.rstrip(".0")
                 else:
                     sle_version = self.product_name.strip().rsplit(' ')[4]
             if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro 
" in self.product_name:

++++++ virtman-add-sev-memory-support.patch ++++++
--- /var/tmp/diff_new_pack.IwMLY0/_old  2025-01-29 16:09:41.193743595 +0100
+++ /var/tmp/diff_new_pack.IwMLY0/_new  2025-01-29 16:09:41.197743760 +0100
@@ -1,9 +1,9 @@
 References: bsc#1196806, jsc#SLE-18834
 
-Index: virt-manager-4.2.0/ui/details.ui
+Index: virt-manager-5.0.0/ui/details.ui
 ===================================================================
---- virt-manager-4.2.0.orig/ui/details.ui
-+++ virt-manager-4.2.0/ui/details.ui
+--- virt-manager-5.0.0.orig/ui/details.ui
++++ virt-manager-5.0.0/ui/details.ui
 @@ -1927,7 +1927,20 @@
                                    </packing>
                                  </child>
@@ -26,10 +26,10 @@
                                  </child>
                                </object>
                                <packing>
-Index: virt-manager-4.2.0/virtManager/details/details.py
+Index: virt-manager-5.0.0/virtManager/details/details.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtManager/details/details.py
-+++ virt-manager-4.2.0/virtManager/details/details.py
+--- virt-manager-5.0.0.orig/virtManager/details/details.py
++++ virt-manager-5.0.0/virtManager/details/details.py
 @@ -49,6 +49,7 @@ from ..delete import vmmDeleteStorage
  
   EDIT_MEM,
@@ -55,7 +55,7 @@
  
              "on_boot_list_changed": self._boot_list_changed_cb,
              "on_boot_moveup_clicked": self._boot_moveup_clicked_cb,
-@@ -1498,6 +1500,9 @@ class vmmDetails(vmmGObjectUI):
+@@ -1500,6 +1502,9 @@ class vmmDetails(vmmGObjectUI):
          if self._edited(EDIT_MEM_SHARED):
              kwargs["mem_shared"] = self.widget("shared-memory").get_active()
  
@@ -65,7 +65,7 @@
          return self._change_config(
                  self.vm.define_memory, kwargs,
                  hotplug_args=hotplug_args)
-@@ -2004,6 +2009,14 @@ class vmmDetails(vmmGObjectUI):
+@@ -2007,6 +2012,14 @@ class vmmDetails(vmmGObjectUI):
          curmem.set_value(int(round(vm_cur_mem)))
          maxmem.set_value(int(round(vm_max_mem)))
  
@@ -80,10 +80,10 @@
          shared_mem, shared_mem_err = self.vm.has_shared_mem()
          self.widget("shared-memory").set_active(shared_mem)
          self.widget("shared-memory").set_sensitive(not bool(shared_mem_err))
-Index: virt-manager-4.2.0/virtManager/object/domain.py
+Index: virt-manager-5.0.0/virtManager/object/domain.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtManager/object/domain.py
-+++ virt-manager-4.2.0/virtManager/object/domain.py
+--- virt-manager-5.0.0.orig/virtManager/object/domain.py
++++ virt-manager-5.0.0/virtManager/object/domain.py
 @@ -675,15 +675,33 @@ class vmmDomain(vmmLibvirtObject):
              guest.memoryBacking.access_mode = access_mode
  
@@ -119,7 +119,7 @@
  
          self._redefine_xmlobj(guest)
  
-@@ -1310,6 +1328,9 @@ class vmmDomain(vmmLibvirtObject):
+@@ -1320,6 +1338,9 @@ class vmmDomain(vmmLibvirtObject):
      def get_description(self):
          return self.get_xmlobj().description
  
@@ -129,10 +129,10 @@
      def get_boot_order(self):
          legacy = not self.can_use_device_boot_order()
          return self.xmlobj.get_boot_order(legacy=legacy)
-Index: virt-manager-4.2.0/virtinst/domain/memorybacking.py
+Index: virt-manager-5.0.0/virtinst/domain/memorybacking.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/domain/memorybacking.py
-+++ virt-manager-4.2.0/virtinst/domain/memorybacking.py
+--- virt-manager-5.0.0.orig/virtinst/domain/memorybacking.py
++++ virt-manager-5.0.0/virtinst/domain/memorybacking.py
 @@ -27,6 +27,9 @@ class DomainMemoryBacking(XMLBuilder):
      XML_NAME = "memoryBacking"
      _XML_PROP_ORDER = ["hugepages", "nosharepages", "locked", "pages"]
@@ -143,10 +143,10 @@
      hugepages = XMLProperty("./hugepages", is_bool=True)
      nosharepages = XMLProperty("./nosharepages", is_bool=True)
      locked = XMLProperty("./locked", is_bool=True)
-Index: virt-manager-4.2.0/virtinst/domcapabilities.py
+Index: virt-manager-5.0.0/virtinst/domcapabilities.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/domcapabilities.py
-+++ virt-manager-4.2.0/virtinst/domcapabilities.py
+--- virt-manager-5.0.0.orig/virtinst/domcapabilities.py
++++ virt-manager-5.0.0/virtinst/domcapabilities.py
 @@ -93,6 +93,9 @@ def _make_capsblock(xml_root_name):
  class _SEV(XMLBuilder):
      XML_NAME = "sev"
@@ -157,7 +157,7 @@
      maxESGuests = XMLProperty("./maxESGuests")
  
  
-@@ -415,6 +418,9 @@ class DomainCapabilities(XMLBuilder):
+@@ -420,6 +423,9 @@ class DomainCapabilities(XMLBuilder):
                          self.features.sev.maxESGuests)
          return bool(self.features.sev.supported)
  
@@ -167,10 +167,10 @@
      def supports_video_bochs(self):
          """
          Returns False if either libvirt or qemu do not have support to bochs
-Index: virt-manager-4.2.0/virtinst/domain/launch_security.py
+Index: virt-manager-5.0.0/virtinst/domain/launch_security.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/domain/launch_security.py
-+++ virt-manager-4.2.0/virtinst/domain/launch_security.py
+--- virt-manager-5.0.0.orig/virtinst/domain/launch_security.py
++++ virt-manager-5.0.0/virtinst/domain/launch_security.py
 @@ -25,8 +25,12 @@ class DomainLaunchSecurity(XMLBuilder):
      vcek = XMLProperty("./@vcek", is_yesno=True)
  
@@ -186,10 +186,10 @@
  
          # The 'policy' is a mandatory 4-byte argument for the SEV firmware.
          # If missing, we use 0x03 for the original SEV implementation and
-Index: virt-manager-4.2.0/virtinst/devices/interface.py
+Index: virt-manager-5.0.0/virtinst/devices/interface.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/devices/interface.py
-+++ virt-manager-4.2.0/virtinst/devices/interface.py
+--- virt-manager-5.0.0.orig/virtinst/devices/interface.py
++++ virt-manager-5.0.0/virtinst/devices/interface.py
 @@ -310,6 +310,9 @@ class DeviceInterface(Device):
  
      portForward = XMLChildProperty(_PortForward)
@@ -200,11 +200,11 @@
  
      #############
      # Build API #
-Index: virt-manager-4.2.0/virtManager/addhardware.py
+Index: virt-manager-5.0.0/virtManager/addhardware.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtManager/addhardware.py
-+++ virt-manager-4.2.0/virtManager/addhardware.py
-@@ -1429,6 +1429,9 @@ class vmmAddHardware(vmmGObjectUI):
+--- virt-manager-5.0.0.orig/virtManager/addhardware.py
++++ virt-manager-5.0.0/virtManager/addhardware.py
+@@ -1434,6 +1434,9 @@ class vmmAddHardware(vmmGObjectUI):
              mac = self.widget("create-mac-address").get_text()
  
          dev = self._netlist.build_device(mac, model)

++++++ virtman-add-tooltip-to-firmware.patch ++++++
--- /var/tmp/diff_new_pack.IwMLY0/_old  2025-01-29 16:09:41.209744259 +0100
+++ /var/tmp/diff_new_pack.IwMLY0/_new  2025-01-29 16:09:41.209744259 +0100
@@ -2,10 +2,10 @@
 When a particular firmware is selected, read the json file for a description.
 Add a tooltip of the json description when the mouse move overs the selected 
firmware.
 
-Index: virt-manager-4.1.0/virtManager/details/details.py
+Index: virt-manager-5.0.0/virtManager/details/details.py
 ===================================================================
---- virt-manager-4.1.0.orig/virtManager/details/details.py
-+++ virt-manager-4.1.0/virtManager/details/details.py
+--- virt-manager-5.0.0.orig/virtManager/details/details.py
++++ virt-manager-5.0.0/virtManager/details/details.py
 @@ -4,6 +4,10 @@
  # This work is licensed under the GNU GPLv2 or later.
  # See the COPYING file in the top-level directory.
@@ -26,7 +26,7 @@
              "on_overview_chipset_changed": _e(EDIT_MACHTYPE),
  
              "on_details_inspection_refresh_clicked": 
self._inspection_refresh_clicked_cb,
-@@ -1098,6 +1102,52 @@ class vmmDetails(vmmGObjectUI):
+@@ -1100,6 +1104,52 @@ class vmmDetails(vmmGObjectUI):
          self.storage_browser.set_browse_reason(reason)
          self.storage_browser.show(self.topwin)
  

++++++ virtman-fix-restore-vm-menu-selection.patch ++++++
--- /var/tmp/diff_new_pack.IwMLY0/_old  2025-01-29 16:09:41.241745585 +0100
+++ /var/tmp/diff_new_pack.IwMLY0/_new  2025-01-29 16:09:41.245745752 +0100
@@ -3,11 +3,11 @@
 Libvirt returns libvirt.VIR_DOMAIN_PMSUSPENDED after a vm has been 'saved'.
 
 
-Index: virt-manager-4.2.0/virtManager/object/domain.py
+Index: virt-manager-5.0.0/virtManager/object/domain.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtManager/object/domain.py
-+++ virt-manager-4.2.0/virtManager/object/domain.py
-@@ -1603,7 +1603,8 @@ class vmmDomain(vmmLibvirtObject):
+--- virt-manager-5.0.0.orig/virtManager/object/domain.py
++++ virt-manager-5.0.0/virtManager/object/domain.py
+@@ -1613,7 +1613,8 @@ class vmmDomain(vmmLibvirtObject):
          return (self.is_stoppable() or
                  self.status() in [libvirt.VIR_DOMAIN_CRASHED])
      def is_runable(self):

Reply via email to