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-03-16 18:57:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virt-manager (Old)
 and      /work/SRC/openSUSE:Factory/.virt-manager.new.19136 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virt-manager"

Sun Mar 16 18:57:44 2025 rev:271 rq:1252578 version:5.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes        
2025-03-08 17:51:41.812663904 +0100
+++ /work/SRC/openSUSE:Factory/.virt-manager.new.19136/virt-manager.changes     
2025-03-16 18:57:49.086540409 +0100
@@ -1,0 +2,21 @@
+Wed Mar 12 15:27:01 MDT 2025 - carn...@suse.com
+
+- Upstream bug fix (bsc#1027942)
+  010-virtManager-domain-fix-indentation.patch
+- Upstream features from Lin Ma and others (jsc#PED-8910)
+  021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
+  
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
+  023-cli-Add-disk-driver.queue_size-support.patch
+  024-cli-Add-poll-settings-for-iothread.patch
+  025-test_cli-Fix-a-pycodestyle-E261-issue.patch
+  026-gitignore-Ignore-coverage.xml.patch
+  027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
+  028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
+  029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
+  030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
+  031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
+  032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
+  033-createvm-prioritize-riscv64.patch
+  034-tests-uitests-handle-linux2020-going-EOL.patch
+
+-------------------------------------------------------------------

New:
----
  010-virtManager-domain-fix-indentation.patch
  021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
  
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
  023-cli-Add-disk-driver.queue_size-support.patch
  024-cli-Add-poll-settings-for-iothread.patch
  025-test_cli-Fix-a-pycodestyle-E261-issue.patch
  026-gitignore-Ignore-coverage.xml.patch
  027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
  028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
  029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
  030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
  031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
  032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
  033-createvm-prioritize-riscv64.patch
  034-tests-uitests-handle-linux2020-going-EOL.patch

BETA DEBUG BEGIN:
  New:- Upstream bug fix (bsc#1027942)
  010-virtManager-domain-fix-indentation.patch
- Upstream features from Lin Ma and others (jsc#PED-8910)
  New:- Upstream features from Lin Ma and others (jsc#PED-8910)
  021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
  
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
  New:  021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
  
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
  023-cli-Add-disk-driver.queue_size-support.patch
  New:  
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
  023-cli-Add-disk-driver.queue_size-support.patch
  024-cli-Add-poll-settings-for-iothread.patch
  New:  023-cli-Add-disk-driver.queue_size-support.patch
  024-cli-Add-poll-settings-for-iothread.patch
  025-test_cli-Fix-a-pycodestyle-E261-issue.patch
  New:  024-cli-Add-poll-settings-for-iothread.patch
  025-test_cli-Fix-a-pycodestyle-E261-issue.patch
  026-gitignore-Ignore-coverage.xml.patch
  New:  025-test_cli-Fix-a-pycodestyle-E261-issue.patch
  026-gitignore-Ignore-coverage.xml.patch
  027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
  New:  026-gitignore-Ignore-coverage.xml.patch
  027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
  028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
  New:  027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
  028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
  029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
  New:  028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
  029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
  030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
  New:  029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
  030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
  031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
  New:  030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
  031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
  032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
  New:  031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
  032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
  033-createvm-prioritize-riscv64.patch
  New:  032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
  033-createvm-prioritize-riscv64.patch
  034-tests-uitests-handle-linux2020-going-EOL.patch
  New:  033-createvm-prioritize-riscv64.patch
  034-tests-uitests-handle-linux2020-going-EOL.patch
BETA DEBUG END:

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

Other differences:
------------------
++++++ virt-manager.spec ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:51.778653028 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:51.778653028 +0100
@@ -55,6 +55,21 @@
 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
+Patch10:        010-virtManager-domain-fix-indentation.patch
+Patch21:        
021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch
+Patch22:        
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
+Patch23:        023-cli-Add-disk-driver.queue_size-support.patch
+Patch24:        024-cli-Add-poll-settings-for-iothread.patch
+Patch25:        025-test_cli-Fix-a-pycodestyle-E261-issue.patch
+Patch26:        026-gitignore-Ignore-coverage.xml.patch
+Patch27:        
027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch
+Patch28:        
028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch
+Patch29:        029-cli-Add-features-hyperv.xmm_input.state-on-off.patch
+Patch30:        030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch
+Patch31:        031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch
+Patch32:        
032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch
+Patch33:        033-createvm-prioritize-riscv64.patch
+Patch34:        034-tests-uitests-handle-linux2020-going-EOL.patch
 Patch100:       
revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch
 # SUSE Only
 Patch150:       virtman-desktop.patch

++++++ 010-virtManager-domain-fix-indentation.patch ++++++
Subject: virtManager: domain: fix indentation
From: Pavel Hrdina phrd...@redhat.com Wed Jan 29 10:50:03 2025 +0100
Date: Wed Jan 29 10:50:03 2025 +0100:
Git: 5ddd3456a0ca9836a98fc6ca4f0b2eaab268bf47

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

diff --git a/virtManager/object/domain.py b/virtManager/object/domain.py
index 5aade01d8..51aae4d8c 100644
--- a/virtManager/object/domain.py
+++ b/virtManager/object/domain.py
@@ -1157,14 +1157,13 @@ class vmmDomain(vmmLibvirtObject):
         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
 
-       if self._backend.hasCurrentSnapshot(0):
-           rawsnap = self._backend.snapshotCurrent(0)
-           obj = vmmDomainSnapshot(self.conn, rawsnap)
-           obj.init_libvirt_state()
-           return obj
-
-       return None
+        return None
 
     @vmmLibvirtObject.lifecycle_action
     def revert_to_snapshot(self, snap):

++++++ 021-cli-Add-memdev-target.dynamicMemslots-support-for-virtio-mem.patch 
++++++
Subject: cli: Add --memdev target.dynamicMemslots support for virtio-mem
From: Lin Ma l...@suse.de Sun Jan 5 17:46:04 2025 +0800
Date: Wed Jan 29 10:25:37 2025 +0100:
Git: 8564ace73a9a2b596c9206d16833904be993c6c2

Libvirt supports setting dynamicMemslots attribute for virtio-mem since
v10.1.0, Let's add it into virt-install. Eg:

virt-install \
......
--vcpu 2 \
--cpu cell0.cpus=0,cell0.memory=4194304,\
cell1.cpus=1,cell1.memory=4194304 \
--memory maxMemory=65536,maxMemory.slots=8 \
--memdev model=virtio-mem,\
target.node=0,\
target.block=2048,\
target.size=8192,\
target.dynamicMemslots=yes \
......

It results in the following domain XML snippet:
    <memory model='virtio-mem'>
      <target dynamicMemslots='yes'>
        ......
    </memory>

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

diff --git a/tests/data/cli/compare/virt-install-memory-hotplug.xml 
b/tests/data/cli/compare/virt-install-memory-hotplug.xml
index 61e39ee02..37fa23328 100644
--- a/tests/data/cli/compare/virt-install-memory-hotplug.xml
+++ b/tests/data/cli/compare/virt-install-memory-hotplug.xml
@@ -123,7 +123,7 @@
       </target>
     </memory>
     <memory model="virtio-mem">
-      <target>
+      <target dynamicMemslots="yes">
         <size>524288</size>
         <node>0</node>
         <block>2048</block>
@@ -267,7 +267,7 @@
       </target>
     </memory>
     <memory model="virtio-mem">
-      <target>
+      <target dynamicMemslots="yes">
         <size>524288</size>
         <node>0</node>
         <block>2048</block>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 51a1883c4..7f3ba0c3a 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -928,7 +928,7 @@ c.add_compare("--pxe "
 "address.type=dimm,address.base=0x100000000,address.slot=1,"
 "source.pmem=on,source.alignsize=2048,target.readonly=on "
 
-"--memdev virtio-mem,target_node=0,target.block=2048,"
+"--memdev 
virtio-mem,target_node=0,target.block=2048,target.dynamicMemslots=yes,"
 "target_size=512,target.requested=524288,target.address_base=0x180000000 "
 
 "--memdev virtio-pmem,source.path=/tmp/virtio_pmem,"
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 43d45a508..cecf33be1 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -4502,6 +4502,7 @@ class ParserMemdev(VirtCLIParser):
         cls.add_arg("source.pmem", "source.pmem", is_onoff=True)
         cls.add_arg("source.alignsize", "source.alignsize",
                 cb=cls.set_target_size)
+        cls.add_arg("target.dynamicMemslots", "target.dynamicMemslots")
 
 
 ########################
diff --git a/virtinst/devices/memory.py b/virtinst/devices/memory.py
index edc274e00..c74d7ab9d 100644
--- a/virtinst/devices/memory.py
+++ b/virtinst/devices/memory.py
@@ -20,6 +20,7 @@ class _DeviceMemoryTarget(XMLBuilder):
     requested = XMLProperty("./requested", is_int=True)
     current = XMLProperty("./current", is_int=True)
     address_base = XMLProperty("./address/@base")
+    dynamicMemslots = XMLProperty("./@dynamicMemslots", is_yesno=True)
 
 
 class _DeviceMemorySource(XMLBuilder):

++++++ 
022-cli-add-target.memReserve-for-pci-bridge-and-pcie-root-port-controllers.patch
 ++++++
Subject: cli: add target.memReserve for pci-bridge and pcie-root-port 
controllers
From: Lin Ma l...@suse.de Sun Jan 5 17:47:20 2025 +0800
Date: Wed Jan 29 10:25:37 2025 +0100:
Git: 79c333e3643cdef3a24672f4b6f0f34d5aa178fd

Libvirt(since v10.3.0) supports setting memReserve attribute to pci-bridge
and pcie-root-port, Let's add it into virt-install. Eg:

virt-install \
......
--controller pci,index=0,model=pcie-root \
--controller pci,index=1,model=pcie-root-port,target.memReserve=8196 \
--controller pci,index=2,model=dmi-to-pci-bridge \
--controller pci,index=3,model=pci-bridge,target.memReserve=8196 \
......

It results in the following domain XML snippet:
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10' memReserve='8196'/>
      <alias name='pci.1'/>
      <address type='pci' ....../>
    </controller>
    <controller type='pci' index='2' model='dmi-to-pci-bridge'>
      <model name='i82801b11-bridge'/>
      <alias name='pci.2'/>
      <address type='pci' ....../>
    </controller>
    <controller type='pci' index='3' model='pci-bridge'>
      <model name='pci-bridge'/>
      <target chassisNr='3' memReserve='8196'/>
      <alias name='pci.3'/>
      <address type='pci' ....../>
    </controller>

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index 251dc1cb3..d91e4c849 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -483,7 +483,7 @@
       <target index="1"/>
     </controller>
     <controller type="pci" index="2" model="pci-bridge">
-      <target chassisNr="1"/>
+      <target chassisNr="1" memReserve="8196"/>
     </controller>
     <controller type="pci" index="3" model="pci-expander-bus">
       <target busNr="252">
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 7f3ba0c3a..4a980dbac 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -685,7 +685,7 @@ 
source.reservations.managed=no,source.reservations.source.type=unix,source.reser
 --controller xenbus,maxGrantFrames=64
 --controller 
pci,index=0,model=pcie-root-port,target.chassis=1,target.port=1,target.hotplug=off
 --controller pci,index=1,model=pci-root,target.index=1
---controller pci,index=2,model=pci-bridge,target.chassisNr=1
+--controller 
pci,index=2,model=pci-bridge,target.chassisNr=1,target.memReserve=8196
 --controller pci,index=3,model=pci-expander-bus,target.busNr=252,target.node=1
 --controller usb3
 --controller scsi,model=virtio-scsi
diff --git a/virtinst/cli.py b/virtinst/cli.py
index cecf33be1..33235bf37 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -4199,6 +4199,7 @@ class ParserController(VirtCLIParser):
         cls.add_arg("target.busNr", "target_busNr")
         cls.add_arg("target.index", "target_index")
         cls.add_arg("target.node", "target_node")
+        cls.add_arg("target.memReserve", "target_memReserve")
 
         cls.add_arg("address", None, lookup_cb=None, cb=cls.set_address_cb)
         cls.add_arg("num_pcie_root_ports", None, lookup_cb=None, 
cb=cls.noset_cb)
diff --git a/virtinst/devices/controller.py b/virtinst/devices/controller.py
index 57c94fe48..c45b8e08d 100644
--- a/virtinst/devices/controller.py
+++ b/virtinst/devices/controller.py
@@ -85,6 +85,7 @@ class DeviceController(Device):
     target_busNr = XMLProperty("./target/@busNr", is_int=True)
     target_index = XMLProperty("./target/@index", is_int=True)
     target_node = XMLProperty("./target/node", is_int=True)
+    target_memReserve = XMLProperty("./target/@memReserve", is_int=True)
 
     def _get_attached_disk_devices(self, guest):
         ret = []

++++++ 023-cli-Add-disk-driver.queue_size-support.patch ++++++
Subject: cli: Add --disk driver.queue_size support
From: Lin Ma l...@suse.de Sun Jan 5 17:49:34 2025 +0800
Date: Wed Jan 29 10:25:37 2025 +0100:
Git: 36d00e0e79f3d845522201c4a353d5a529af82a7

Eg:
virt-install \
......
--disk /tmp/disk0.qcow2,size=10,driver.type=qcow2,\
driver.queues=4,driver.queue_size=256 \
......

It results in the following domain XML snippet:
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' queues='4' queue_size='256'/>
      <source file='/tmp/disk0.qcow2' index='2'/>
      <backingStore/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' 
function='0x0'/>
    </disk>

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index d91e4c849..eb26d316b 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -231,7 +231,7 @@
   <devices>
     <emulator>/new/emu</emulator>
     <disk type="block" device="disk">
-      <driver name="qemu" type="raw" cache="writeback" discard="unmap" 
io="threads" iothread="3" queues="8"/>
+      <driver name="qemu" type="raw" cache="writeback" discard="unmap" 
io="threads" iothread="3" queues="8" queue_size="256"/>
       <source dev="/pool-dir/UPPER"/>
       <target dev="vda" bus="virtio"/>
       <serial>WD-WMAP9A966149</serial>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 4a980dbac..071a17bee 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -610,7 +610,7 @@ msrs.unknown=ignore
 --sysinfo bios.vendor="Acme 
LLC",bios.version=1.2.3,bios.date=01/01/1970,bios.release=10.22,system.manufacturer="Acme
 
Inc.",system.product=Computer,system.version=3.2.1,system.serial=123456789,system.uuid=00000000-1111-2222-3333-444444444444,system.sku=abc-123,system.family=Server,baseBoard.manufacturer="Acme
 
Corp.",baseBoard.product=Motherboard,baseBoard.version=A01,baseBoard.serial=1234-5678,baseBoard.asset=Tag,baseBoard.location=Chassis
 
 
---disk 
type=block,source.dev=/pool-dir/UPPER,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149,wwn=123456789abcdefa,boot_order=2,driver.iothread=3,driver.queues=8
+--disk 
type=block,source.dev=/pool-dir/UPPER,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149,wwn=123456789abcdefa,boot_order=2,driver.iothread=3,driver.queues=8,driver.queue_size=256
 --disk 
source.file=%(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace,detect_zeroes=unmap,address.type=drive,address.controller=0,address.target=2,address.unit=0
 --disk 
device=cdrom,bus=sata,read_bytes_sec=1,read_iops_sec=2,write_bytes_sec=5,write_iops_sec=6,driver.copy_on_read=on,geometry.cyls=16383,geometry.heads=16,geometry.secs=63,geometry.trans=lba,discard=ignore
 --disk size=1
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 33235bf37..7df2e365f 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3778,6 +3778,7 @@ class ParserDisk(VirtCLIParser):
         cls.add_arg("driver.queues", "driver_queues")
         cls.add_arg("driver.error_policy", "error_policy")
         cls.add_arg("driver.discard_no_unref", "driver_discard_no_unref", 
is_onoff=True)
+        cls.add_arg("driver.queue_size", "driver_queue_size")
 
         cls.add_arg("driver.metadata_cache.max_size",
                     "driver_metadata_cache_max_size")
diff --git a/virtinst/devices/disk.py b/virtinst/devices/disk.py
index 1f9358b84..9370fcd87 100644
--- a/virtinst/devices/disk.py
+++ b/virtinst/devices/disk.py
@@ -509,6 +509,7 @@ class DeviceDisk(Device):
     driver_iothread = XMLProperty("./driver/@iothread", is_int=True)
     driver_queues = XMLProperty("./driver/@queues", is_int=True)
     driver_discard_no_unref = XMLProperty("./driver/@discard_no_unref", 
is_onoff=True)
+    driver_queue_size = XMLProperty("./driver/@queue_size", is_int=True)
 
     driver_metadata_cache_max_size = XMLProperty(
         "./driver/metadata_cache/max_size", is_int=True)

++++++ 024-cli-Add-poll-settings-for-iothread.patch ++++++
Subject: cli: Add 'poll' settings for iothread
From: Lin Ma l...@suse.de Sun Jan 5 17:50:42 2025 +0800
Date: Wed Jan 29 10:25:37 2025 +0100:
Git: a7c455f4600c6a35820c435d34f05b8b4a513611

Since libvirt v9.4.0, It introduces 'poll' settings in domain XML to
override the hypervisor-default interval of polling for iothread.

Let's add it into virt-install.
Eg:
virt-install \
...... \
--iothreads iothreads=2,\
iothreadids.iothread0.id=1,\
iothreadids.iothread1.id=2,\
iothreadids.iothread1.poll.max=123,\
iothreadids.iothread1.poll.grow=456,\
iothreadids.iothread1.poll.shrink=789

It results in the following domain XML snippet:
  <iothreads>2</iothreads>
  <iothreadids>
    <iothread id='1'/>
    <iothread id='2'>
      <poll max='123' grow='456' shrink='789'/>
    </iothread>
  </iothreadids>

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index eb26d316b..a841a380f 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -12,7 +12,9 @@
   <iothreads>5</iothreads>
   <iothreadids>
     <iothread id="1"/>
-    <iothread id="2" thread_pool_min="8" thread_pool_max="16"/>
+    <iothread id="2" thread_pool_min="8" thread_pool_max="16">
+      <poll max="123" grow="456" shrink="789"/>
+    </iothread>
   </iothreadids>
   <defaultiothread thread_pool_min="4" thread_pool_max="32"/>
   <memory>65536</memory>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 071a17bee..7f984cf1b 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -557,7 +557,7 @@ 
memorytune0.vcpus=0-3,memorytune0.node0.id=0,memorytune0.node0.bandwidth=60
 --memorybacking 
size=1,unit='G',nodeset=0,1,nosharepages=yes,locked=yes,discard=yes,allocation.mode=immediate,access_mode=shared,source_type=file,hugepages.page.size=12,hugepages.page1.size=1234,hugepages.page1.unit=MB,hugepages.page1.nodeset=2,allocation.threads=8
 
 
---iothreads 
iothreads=5,iothreadids.iothread0.id=1,iothreadids.iothread1.id=2,iothreadids.iothread1.thread_pool_min=8,iothreadids.iothread1.thread_pool_max=16,defaultiothread.thread_pool_min=4,defaultiothread.thread_pool_max=32
+--iothreads 
iothreads=5,iothreadids.iothread0.id=1,iothreadids.iothread1.id=2,iothreadids.iothread1.thread_pool_min=8,iothreadids.iothread1.thread_pool_max=16,iothreadids.iothread1.poll.max=123,iothreadids.iothread1.poll.grow=456,iothreadids.iothread1.poll.shrink=789,defaultiothread.thread_pool_min=4,defaultiothread.thread_pool_max=32
 
 
 --metadata 
title=my-title,description=my-description,uuid=00000000-1111-2222-3333-444444444444,genid=e9392370-2917-565e-692b-d057f46512d6,genid_enable=yes
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 7df2e365f..fa6145e8c 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -2693,6 +2693,12 @@ class ParserIOThreads(VirtCLIParser):
                     find_inst_cb=cls.defaultiothread_find_inst_cb)
         cls.add_arg("defaultiothread.thread_pool_max", "thread_pool_max",
                     find_inst_cb=cls.defaultiothread_find_inst_cb)
+        cls.add_arg("iothreadids.iothread[0-9]*.poll.max",
+                    "max", find_inst_cb=cls.iothreads_find_inst_cb)
+        cls.add_arg("iothreadids.iothread[0-9]*.poll.grow",
+                    "grow", find_inst_cb=cls.iothreads_find_inst_cb)
+        cls.add_arg("iothreadids.iothread[0-9]*.poll.shrink",
+                    "shrink", find_inst_cb=cls.iothreads_find_inst_cb)
 
 
 ###################
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 567359073..ae76a1287 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -72,6 +72,9 @@ class _IOThreadID(XMLBuilder):
     id = XMLProperty("./@id", is_int=True)
     thread_pool_min = XMLProperty("./@thread_pool_min", is_int=True)
     thread_pool_max = XMLProperty("./@thread_pool_max", is_int=True)
+    max = XMLProperty("./poll/@max", is_int=True)
+    grow = XMLProperty("./poll/@grow", is_int=True)
+    shrink = XMLProperty("./poll/@shrink", is_int=True)
 
 
 class _DefaultIOThread(XMLBuilder):

++++++ 025-test_cli-Fix-a-pycodestyle-E261-issue.patch ++++++
Subject: test_cli: Fix a pycodestyle E261 issue
From: Lin Ma l...@suse.de Mon Dec 30 19:38:49 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 006ce4157665fd183ddb4a933a2c94de217302d4

root@localhost:~ # meson test -C build

==================================== 1/3 =========================
test:         pycodestyle
start time:   14:08:14
duration:     5.80s
result:       exit status 1
command:      MSAN_OPTIONS=halt_on_error=1:abort_on_error=1:...... \
/usr/bin/pycodestyle \
--config setup.cfg --format pylint tests virtinst virtManager
----------------------------------- stdout -----------------------------------
tests/test_cli.py:1157: [E261] at least two spaces before inline comment
......

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

diff --git a/tests/test_cli.py b/tests/test_cli.py
index 7f984cf1b..5fc0a1c2f 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 --cpu maximum", "linux2020", 
prerun_check=no_osinfo_linux2020_virtio) # also --cpu maximum
+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

++++++ 026-gitignore-Ignore-coverage.xml.patch ++++++
Subject: .gitignore: Ignore coverage.xml
From: Lin Ma l...@suse.de Mon Dec 30 19:41:07 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 926385994486fde63dc092814ab793c53ed3f275

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

diff --git a/.gitignore b/.gitignore
index 89ad8a166..d303c1afb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,5 @@
 /.coverage
 
 /data/gschemas.compiled
+
+/coverage.xml

++++++ 027-cli-Add-tpm-backend.profile.source-removeDisabled-support.patch 
++++++
Subject: cli: Add --tpm backend.profile.{source,removeDisabled} support
From: Lin Ma l...@suse.de Mon Dec 30 19:44:58 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: f278c89b49bc4d1e46c8149fb0f1674d801b51c5

Swtpm since v0.10 supports to configure a TPM2 with a profile from file.
eg:

root@localhost:~ # cat /etc/swtpm/profiles/mytest.json
{
      "Name": "custom:test",
      "Algorithms":"rsa,rsa-min-size=1024,......"
}

root@localhost:~ # swtpm_setup --tpm2 --print-profiles | jq
{
  "local": [
    {
      "Name": "mytest",
      "Algorithms": "rsa,rsa-min-size=1024,......"
    }
  ],
  "builtin": [
    {
      "Name": "default-v1",
      "StateFormatLevel": 7,
      "Commands": "......",
      "Algorithms": "rsa,rsa-min-size=1024,......",
      "Description": "......"
    },
    {
      "Name": "null",
      "StateFormatLevel": 1,
      "Commands": "......",
      "Algorithms": "rsa,rsa-min-size=1024,......",
      "Description": "......"
    },
    {
      "Name": "custom",
      "StateFormatLevel": 2,
      "Commands": "......",
      "Algorithms": "rsa,rsa-min-size=1024,......",
      "Description": "......"
    }
  ]
}

Libvirt supports it since v10.10.0

Let's add this feature into virt-install, eg:

root@localhost:~ # virt-install \
......\
--tpm model=tpm-tis,backend.version=2.0,\
backend.profile.source=local:mytest,backend.profile.removeDisabled=check

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index a841a380f..e34b487c3 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -791,6 +791,7 @@
     <tpm model="tpm-tis">
       <backend type="emulator" version="2.0" debug="3">
         <source type="dir" path="/some/dir"/>
+        <profile source="local:mytest" removeDisabled="check"/>
       </backend>
     </tpm>
     <graphics type="sdl" display=":3.4" xauth="/tmp/.Xauthority">
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 5fc0a1c2f..4e0b2d8c0 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -800,7 +800,7 @@ 
source.reservations.managed=no,source.reservations.source.type=unix,source.reser
 
 --tpm 
passthrough,model=tpm-crb,path=/dev/tpm0,backend.encryption.secret=11111111-2222-3333-4444-5555555555,backend.persistent_state=yes,backend.active_pcr_banks.sha1=on,backend.active_pcr_banks.sha256=yes,backend.active_pcr_banks.sha384=yes,backend.active_pcr_banks.sha512=yes,version=2.0
 
---tpm 
model=tpm-tis,backend.type=emulator,backend.version=2.0,backend.debug=3,backend.source.type=dir,backend.source.path=/some/dir
+--tpm 
model=tpm-tis,backend.type=emulator,backend.version=2.0,backend.debug=3,backend.source.type=dir,backend.source.path=/some/dir,backend.profile.source=local:mytest,backend.profile.removeDisabled=check
 
 
 --watchdog ib700,action=pause
diff --git a/virtinst/cli.py b/virtinst/cli.py
index fa6145e8c..d8926cdad 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -4370,6 +4370,8 @@ class ParserTPM(VirtCLIParser):
         cls.add_arg("backend.debug", "debug")
         cls.add_arg("backend.source.type", "source_type")
         cls.add_arg("backend.source.path", "source_path")
+        cls.add_arg("backend.profile.source", "profile_source")
+        cls.add_arg("backend.profile.removeDisabled", "profile_removeDisabled")
 
         cls.add_arg("backend.active_pcr_banks.sha1",
                     "active_pcr_banks.sha1", is_onoff=True)
diff --git a/virtinst/devices/tpm.py b/virtinst/devices/tpm.py
index 8b4023502..79ae224e8 100644
--- a/virtinst/devices/tpm.py
+++ b/virtinst/devices/tpm.py
@@ -44,6 +44,8 @@ class DeviceTpm(Device):
     debug = XMLProperty("./backend/@debug")
     source_type = XMLProperty("./backend/source/@type")
     source_path = XMLProperty("./backend/source/@path")
+    profile_source = XMLProperty("./backend/profile/@source")
+    profile_removeDisabled = XMLProperty("./backend/profile/@removeDisabled")
 
     active_pcr_banks = XMLChildProperty(_ActivePCRBanks, is_single=True,
                                         relative_xpath="./backend")

++++++ 028-cli-Add-nvram.templateFormat-to-indicate-template-format.patch ++++++
Subject: cli: Add nvram.templateFormat to indicate template format
From: Lin Ma l...@suse.de Mon Dec 30 19:48:04 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: dc89a02c75ca7d178c5332fc495a1fceb3732d76

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index e34b487c3..76e044731 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -108,6 +108,8 @@
       <feature enabled="yes" name="secure-boot"/>
       <feature enabled="no" name="enrolled-keys"/>
     </firmware>
+    <loader type="pflash">CODE.fd</loader>
+    <nvram template="VARS.fd" templateFormat="raw"/>
     <initarg>foo=bar</initarg>
     <initarg>baz=woo</initarg>
     <initenv name="MYENV">some value</initenv>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 4e0b2d8c0..8bfccea18 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -500,7 +500,8 @@ bios.useserial=no,bios.rebootTimeout=60,cmdline=root=/foo,\
 bootmenu.enable=yes,bootmenu.timeout=5000,\
 acpi.table=/path/to/slic.dat,acpi.table.type=slic,\
 initenv0.name=MYENV,initenv0='some value',initenv1.name=FOO,initenv1=bar,\
-initdir=/my/custom/cwd,inituser=tester,initgroup=1000
+initdir=/my/custom/cwd,inituser=tester,initgroup=1000,\
+loader_type=pflash,loader=CODE.fd,nvram.template=VARS.fd,nvram.templateFormat=raw
 
 
 --vcpus vcpus=9,vcpu.placement=static,\
diff --git a/virtinst/cli.py b/virtinst/cli.py
index d8926cdad..6f633b933 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -2950,6 +2950,7 @@ class ParserBoot(VirtCLIParser):
         cls.add_arg("bios.useserial", "bios_useserial", is_onoff=True)
         cls.add_arg("bios.rebootTimeout", "bios_rebootTimeout")
         cls.add_arg("smbios.mode", "smbios_mode")
+        cls.add_arg("nvram.templateFormat", "nvram_templateFormat")
 
         # Direct kernel boot options
         cls.add_arg("kernel", "kernel")
diff --git a/virtinst/domain/os.py b/virtinst/domain/os.py
index 9afcbb910..45d913450 100644
--- a/virtinst/domain/os.py
+++ b/virtinst/domain/os.py
@@ -126,6 +126,7 @@ class DomainOs(XMLBuilder):
     bios_useserial = XMLProperty("./bios/@useserial", is_yesno=True)
     bios_rebootTimeout = XMLProperty("./bios/@rebootTimeout", is_int=True)
     smbios_mode = XMLProperty("./smbios/@mode")
+    nvram_templateFormat = XMLProperty("./nvram/@templateFormat")
 
     # Host bootloader options
     # Since the elements for a host bootloader are actually directly under

++++++ 029-cli-Add-features-hyperv.xmm_input.state-on-off.patch ++++++
Subject: cli: Add --features hyperv.xmm_input.state=on/off
From: Lin Ma l...@suse.de Mon Dec 30 19:49:47 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 5617330513e951643d69afd4c0cfbd230f1d2983

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index 76e044731..eeb964620 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -154,6 +154,7 @@
       <ipi state="on"/>
       <evmcs state="on"/>
       <avic state="on"/>
+      <xmm_input state="on"/>
     </hyperv>
     <vmport state="off"/>
     <kvm>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 8bfccea18..76768dfe0 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -581,6 +581,7 @@ hyperv.tlbflush.state=on,\
 hyperv.ipi.state=on,\
 hyperv.evmcs.state=on,\
 hyperv.avic.state=on,\
+hyperv.xmm_input.state=on,\
 kvm.pv-ipi.state=on,\
 msrs.unknown=ignore
 
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 6f633b933..add19ac09 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3094,6 +3094,7 @@ class ParserFeatures(VirtCLIParser):
         cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
         cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
         cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
+        cls.add_arg("hyperv.xmm_input.state", "hyperv_xmm_input", 
is_onoff=True)
 
         cls.add_arg("vmport.state", "vmport", is_onoff=True)
         cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
index 93a576360..ae3b23d98 100644
--- a/virtinst/domain/features.py
+++ b/virtinst/domain/features.py
@@ -43,6 +43,7 @@ class DomainFeatures(XMLBuilder):
     hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
     hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
     hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
+    hyperv_xmm_input = XMLProperty("./hyperv/xmm_input/@state", is_onoff=True)
 
     vmport = XMLProperty("./vmport/@state", is_onoff=True)
     kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)

++++++ 030-cli-Add-features-hyperv.emsr_bitmap.state-on-off.patch ++++++
Subject: cli: Add --features hyperv.emsr_bitmap.state=on/off
From: Lin Ma l...@suse.de Mon Dec 30 19:50:21 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 1f43c0d1d9d7128d24f5b6628b5f01e920a9f1fa

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index eeb964620..cea5b3890 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -155,6 +155,7 @@
       <evmcs state="on"/>
       <avic state="on"/>
       <xmm_input state="on"/>
+      <emsr_bitmap state="on"/>
     </hyperv>
     <vmport state="off"/>
     <kvm>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 76768dfe0..69f48df3a 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -582,6 +582,7 @@ hyperv.ipi.state=on,\
 hyperv.evmcs.state=on,\
 hyperv.avic.state=on,\
 hyperv.xmm_input.state=on,\
+hyperv.emsr_bitmap.state=on,\
 kvm.pv-ipi.state=on,\
 msrs.unknown=ignore
 
diff --git a/virtinst/cli.py b/virtinst/cli.py
index add19ac09..dcd2b8c8b 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3095,6 +3095,7 @@ class ParserFeatures(VirtCLIParser):
         cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
         cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
         cls.add_arg("hyperv.xmm_input.state", "hyperv_xmm_input", 
is_onoff=True)
+        cls.add_arg("hyperv.emsr_bitmap.state", "hyperv_emsr_bitmap", 
is_onoff=True)
 
         cls.add_arg("vmport.state", "vmport", is_onoff=True)
         cls.add_arg("kvm.hidden.state", "kvm_hidden", is_onoff=True)
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
index ae3b23d98..cba3b710d 100644
--- a/virtinst/domain/features.py
+++ b/virtinst/domain/features.py
@@ -44,6 +44,7 @@ class DomainFeatures(XMLBuilder):
     hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
     hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)
     hyperv_xmm_input = XMLProperty("./hyperv/xmm_input/@state", is_onoff=True)
+    hyperv_emsr_bitmap = XMLProperty("./hyperv/emsr_bitmap/@state", 
is_onoff=True)
 
     vmport = XMLProperty("./vmport/@state", is_onoff=True)
     kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)

++++++ 031-cli-Add-features-hyperv.tlbflush.direct.state-on-off.patch ++++++
Subject: cli: Add --features hyperv.tlbflush.direct.state=on/off
From: Lin Ma l...@suse.de Mon Dec 30 19:50:40 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 5f2a2dbd0a2ccecd76710067854c07c1ebd5ea09

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index cea5b3890..996873a8a 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -150,7 +150,9 @@
       <reset state="on"/>
       <frequencies state="on"/>
       <reenlightenment state="on"/>
-      <tlbflush state="on"/>
+      <tlbflush state="on">
+        <direct state="on"/>
+      </tlbflush>
       <ipi state="on"/>
       <evmcs state="on"/>
       <avic state="on"/>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 69f48df3a..18a76612a 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -578,6 +578,7 @@ hyperv.reset.state=off,hyperv_reset=on,\
 hyperv.frequencies.state=on,\
 hyperv.reenlightenment.state=on,\
 hyperv.tlbflush.state=on,\
+hyperv.tlbflush.direct.state=on,\
 hyperv.ipi.state=on,\
 hyperv.evmcs.state=on,\
 hyperv.avic.state=on,\
diff --git a/virtinst/cli.py b/virtinst/cli.py
index dcd2b8c8b..5da607be4 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3091,6 +3091,7 @@ class ParserFeatures(VirtCLIParser):
         cls.add_arg("hyperv.frequencies.state", "hyperv_frequencies", 
is_onoff=True)
         cls.add_arg("hyperv.reenlightenment.state", "hyperv_reenlightenment", 
is_onoff=True)
         cls.add_arg("hyperv.tlbflush.state", "hyperv_tlbflush", is_onoff=True)
+        cls.add_arg("hyperv.tlbflush.direct.state", "hyperv_tlbflush_direct", 
is_onoff=True)
         cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
         cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
         cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
index cba3b710d..d001ddfa1 100644
--- a/virtinst/domain/features.py
+++ b/virtinst/domain/features.py
@@ -40,6 +40,7 @@ class DomainFeatures(XMLBuilder):
     hyperv_frequencies = XMLProperty("./hyperv/frequencies/@state", 
is_onoff=True)
     hyperv_reenlightenment = XMLProperty("./hyperv/reenlightenment/@state", 
is_onoff=True)
     hyperv_tlbflush = XMLProperty("./hyperv/tlbflush/@state", is_onoff=True)
+    hyperv_tlbflush_direct = XMLProperty("./hyperv/tlbflush/direct/@state", 
is_onoff=True)
     hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
     hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
     hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)

++++++ 032-cli-Add-features-hyperv.tlbflush.extended.state-on-off.patch ++++++
Subject: cli: Add --features hyperv.tlbflush.extended.state=on/off
From: Lin Ma l...@suse.de Mon Dec 30 19:50:50 2024 +0800
Date: Wed Jan 29 10:48:57 2025 +0100:
Git: 81c873ba36b58b8598f53b8c972dc9821ab6d423

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

diff --git a/tests/data/cli/compare/virt-install-many-devices.xml 
b/tests/data/cli/compare/virt-install-many-devices.xml
index 996873a8a..cbb186c92 100644
--- a/tests/data/cli/compare/virt-install-many-devices.xml
+++ b/tests/data/cli/compare/virt-install-many-devices.xml
@@ -152,6 +152,7 @@
       <reenlightenment state="on"/>
       <tlbflush state="on">
         <direct state="on"/>
+        <extended state="on"/>
       </tlbflush>
       <ipi state="on"/>
       <evmcs state="on"/>
diff --git a/tests/test_cli.py b/tests/test_cli.py
index 18a76612a..a2eb1365e 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -579,6 +579,7 @@ hyperv.frequencies.state=on,\
 hyperv.reenlightenment.state=on,\
 hyperv.tlbflush.state=on,\
 hyperv.tlbflush.direct.state=on,\
+hyperv.tlbflush.extended.state=on,\
 hyperv.ipi.state=on,\
 hyperv.evmcs.state=on,\
 hyperv.avic.state=on,\
diff --git a/virtinst/cli.py b/virtinst/cli.py
index 5da607be4..57d5608c6 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -3092,6 +3092,7 @@ class ParserFeatures(VirtCLIParser):
         cls.add_arg("hyperv.reenlightenment.state", "hyperv_reenlightenment", 
is_onoff=True)
         cls.add_arg("hyperv.tlbflush.state", "hyperv_tlbflush", is_onoff=True)
         cls.add_arg("hyperv.tlbflush.direct.state", "hyperv_tlbflush_direct", 
is_onoff=True)
+        cls.add_arg("hyperv.tlbflush.extended.state", 
"hyperv_tlbflush_extended", is_onoff=True)
         cls.add_arg("hyperv.ipi.state", "hyperv_ipi", is_onoff=True)
         cls.add_arg("hyperv.evmcs.state", "hyperv_evmcs", is_onoff=True)
         cls.add_arg("hyperv.avic.state", "hyperv_avic", is_onoff=True)
diff --git a/virtinst/domain/features.py b/virtinst/domain/features.py
index d001ddfa1..99ed43393 100644
--- a/virtinst/domain/features.py
+++ b/virtinst/domain/features.py
@@ -41,6 +41,7 @@ class DomainFeatures(XMLBuilder):
     hyperv_reenlightenment = XMLProperty("./hyperv/reenlightenment/@state", 
is_onoff=True)
     hyperv_tlbflush = XMLProperty("./hyperv/tlbflush/@state", is_onoff=True)
     hyperv_tlbflush_direct = XMLProperty("./hyperv/tlbflush/direct/@state", 
is_onoff=True)
+    hyperv_tlbflush_extended = 
XMLProperty("./hyperv/tlbflush/extended/@state", is_onoff=True)
     hyperv_ipi = XMLProperty("./hyperv/ipi/@state", is_onoff=True)
     hyperv_evmcs = XMLProperty("./hyperv/evmcs/@state", is_onoff=True)
     hyperv_avic = XMLProperty("./hyperv/avic/@state", is_onoff=True)

++++++ 033-createvm-prioritize-riscv64.patch ++++++
Subject: createvm: prioritize riscv64
From: Heinrich Schuchardt heinrich.schucha...@canonical.com Tue Jan 21 22:52:40 
2025 +0100
Date: Mon Mar 3 10:13:14 2025 -0500:
Git: 6c6c39be2fc26713b9756e668af7ab8106e7acae

As all major distros support the riscv64 architecture, add it to the
list of prioritized architectures. This will move it up in the
architecture drop-down menu and thereby easier to find when creating
a new VM.

Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>

diff --git a/virtManager/createvm.py b/virtManager/createvm.py
index e37921603..1a8c6b4a1 100644
--- a/virtManager/createvm.py
+++ b/virtManager/createvm.py
@@ -792,7 +792,7 @@ class vmmCreateVM(vmmGObjectUI):
         archs.sort()
 
         prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
-            "s390x"]
+            "riscv64", "s390x"]
         if self.conn.caps.host.cpu.arch not in prios:
             prios = []  # pragma: no cover
         for p in prios[:]:

++++++ 034-tests-uitests-handle-linux2020-going-EOL.patch ++++++
Subject: tests: uitests: handle linux2020 going EOL
From: Cole Robinson crobi...@redhat.com Mon Mar 3 10:38:22 2025 -0500
Date: Mon Mar 3 10:39:12 2025 -0500:
Git: 6f188482b2e2e1c2d3ee1658b81fdd95bd497897

Signed-off-by: Cole Robinson <crobi...@redhat.com>

diff --git a/tests/uitests/test_createvm.py b/tests/uitests/test_createvm.py
index 1242a0473..053a94066 100644
--- a/tests/uitests/test_createvm.py
+++ b/tests/uitests/test_createvm.py
@@ -464,7 +464,8 @@ def testNewKVMQ35Tweaks(app):
     newvm.find("import-entry").set_text("/pool-dir/testvol1.img")
     newvm.find("oslist-entry").set_text("fribfrob")
     popover = newvm.find("oslist-popover")
-    popover.find_fuzzy("linux2020").click()
+    osname = "linux2022"
+    popover.find_fuzzy(osname).click()
     _forward(newvm)
     _forward(newvm)
 
@@ -472,7 +473,7 @@ def testNewKVMQ35Tweaks(app):
     # hit some code paths elsewhere
     newvm.find_fuzzy("Customize", "check").click()
     newvm.find_fuzzy("Finish", "button").click()
-    vmname = "linux2020"
+    vmname = osname
     details = app.find_details_window(vmname)
     appl = details.find("config-apply")
 

++++++ 
revert-363fca41-virt-install-Require-osinfo-for-non-x86-HVM-case-too.patch 
++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.042664072 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.042664072 +0100
@@ -33,7 +33,7 @@
 ===================================================================
 --- 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
+@@ -1251,7 +1251,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

++++++ virtinst-add-sle16-detection-support.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.094666247 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.098666415 +0100
@@ -1,7 +1,5 @@
-Index: virt-manager-5.0.0/virtinst/install/urldetect.py
-===================================================================
---- virt-manager-5.0.0.orig/virtinst/install/urldetect.py
-+++ virt-manager-5.0.0/virtinst/install/urldetect.py
+--- 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:
@@ -13,21 +11,4 @@
                  else:
                      sle_version = self.product_name.strip().rsplit(' ')[4]
              if len(self.product_name.strip().rsplit(' ')) > 5 and not " Micro 
" in self.product_name:
-@@ -521,10 +525,16 @@ class _SuseDistro(_RHELDistro):
-             content_str = cache.acquire_file_content("content")
-             if content_str is None:
-                 products_str = cache.acquire_file_content("media.1/products")
-+                if not products_str:
-+                    # For SLES16 install iso (not agama)
-+                    products_str = 
cache.acquire_file_content("install/media.1/products")
-                 if products_str:
-                     products_str = products_str.replace('/', ' ,', 1)
-                     products_str = "DISTRO " + products_str.replace('-', ' ')
-                 media_str = cache.acquire_file_content("media.1/media")
-+                if not media_str:
-+                    # For SLES16 install iso (not agama)
-+                    media_str = 
cache.acquire_file_content("install/media.1/media")
-                 if media_str:
-                     media_arch = "x86_64"
-                     if 'aarch64' in media_str:
 

++++++ virtinst-drop-removeprefix-usage.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.122667419 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.126667586 +0100
@@ -1,8 +1,10 @@
 References: bsc#1234215
 
---- virt-manager-5.0.0/virtinst/devices/disk.py.orig   2024-12-05 
07:15:41.023613127 -0700
-+++ virt-manager-5.0.0/virtinst/devices/disk.py        2024-12-05 
07:22:16.587622553 -0700
-@@ -677,7 +677,10 @@ class DeviceDisk(Device):
+Index: virt-manager-5.0.0/virtinst/devices/disk.py
+===================================================================
+--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
++++ virt-manager-5.0.0/virtinst/devices/disk.py
+@@ -678,7 +678,10 @@ class DeviceDisk(Device):
          # Some file managers use 'file://' when passing files to
          # virt-manager, we need to strip it from the newpath.
          if newpath is not None:

++++++ virtinst-s390x-disable-graphics.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.150668590 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.154668757 +0100
@@ -1,10 +1,10 @@
 Reference: bnc#869024
 Disable graphics on s390x
-Index: virt-manager-4.2.0/virtinst/guest.py
+Index: virt-manager-5.0.0/virtinst/guest.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/guest.py
-+++ virt-manager-4.2.0/virtinst/guest.py
-@@ -208,7 +208,10 @@ class Guest(XMLBuilder):
+--- virt-manager-5.0.0.orig/virtinst/guest.py
++++ virt-manager-5.0.0/virtinst/guest.py
+@@ -211,7 +211,10 @@ class Guest(XMLBuilder):
          self.skip_default_channel = False
          self.skip_default_sound = False
          self.skip_default_usbredir = False
@@ -16,7 +16,7 @@
          self.skip_default_rng = False
          self.skip_default_tpm = False
          self.skip_default_input = False
-@@ -361,7 +364,7 @@ class Guest(XMLBuilder):
+@@ -364,7 +367,7 @@ class Guest(XMLBuilder):
          if not os_support:
              return False
  
@@ -25,7 +25,7 @@
              return True
  
          return False  # pragma: no cover
-@@ -1149,7 +1152,7 @@ class Guest(XMLBuilder):
+@@ -1152,7 +1155,7 @@ class Guest(XMLBuilder):
          self.add_device(dev)
  
      def _add_default_video_device(self):

++++++ virtinst-set-qemu-emulator.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.178669761 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.182669929 +0100
@@ -1,11 +1,11 @@
 Use the correct qemu emulator based on the architecture.
 We want to get away from using the old qemu-dm emulator
 for Xen HVM guests so default to qemu-system-i386.
-Index: virt-manager-4.2.0/virtinst/guest.py
+Index: virt-manager-5.0.0/virtinst/guest.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/guest.py
-+++ virt-manager-4.2.0/virtinst/guest.py
-@@ -991,6 +991,10 @@ class Guest(XMLBuilder):
+--- virt-manager-5.0.0.orig/virtinst/guest.py
++++ virt-manager-5.0.0/virtinst/guest.py
+@@ -994,6 +994,10 @@ class Guest(XMLBuilder):
          self._add_default_tpm()
  
          self.clock.set_defaults(self)

++++++ virtinst-smbios-unsupported-for-xenpv.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.194670431 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.202670765 +0100
@@ -1,10 +1,10 @@
 References: bsc#1180069
 
-Index: virt-manager-4.2.0/virtinst/guest.py
+Index: virt-manager-5.0.0/virtinst/guest.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/guest.py
-+++ virt-manager-4.2.0/virtinst/guest.py
-@@ -737,6 +737,8 @@ class Guest(XMLBuilder):
+--- virt-manager-5.0.0.orig/virtinst/guest.py
++++ virt-manager-5.0.0/virtinst/guest.py
+@@ -740,6 +740,8 @@ class Guest(XMLBuilder):
              self.type != "kvm"):
              log.warning(  # pragma: no cover
                      "KVM acceleration not available, using '%s'", self.type)

++++++ virtinst-use-qemu-for-cdrom-device.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.214671268 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.218671435 +0100
@@ -2,11 +2,11 @@
 When the device added is a cdrom device (/dev/sr0), don't use
 "phy" as the driver name but instead use "qemu".
 
-Index: virt-manager-4.2.0/virtinst/devices/disk.py
+Index: virt-manager-5.0.0/virtinst/devices/disk.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/devices/disk.py
-+++ virt-manager-4.2.0/virtinst/devices/disk.py
-@@ -566,7 +566,8 @@ class DeviceDisk(Device):
+--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
++++ virt-manager-5.0.0/virtinst/devices/disk.py
+@@ -567,7 +567,8 @@ class DeviceDisk(Device):
          # Recommended xen defaults from here:
          # https://bugzilla.redhat.com/show_bug.cgi?id=1171550#c9
          # If type block, use name=phy. Otherwise do the same as qemu

++++++ virtinst-xen-drive-type.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.238672272 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.242672439 +0100
@@ -2,11 +2,11 @@
 Virt-manager on Xen doesn't fill in any type thereby defaulting to
 'raw'. This patch will generate the correct XML on Xen.
 
-Index: virt-manager-4.2.0/virtinst/devices/disk.py
+Index: virt-manager-5.0.0/virtinst/devices/disk.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/devices/disk.py
-+++ virt-manager-4.2.0/virtinst/devices/disk.py
-@@ -583,6 +583,10 @@ class DeviceDisk(Device):
+--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
++++ virt-manager-5.0.0/virtinst/devices/disk.py
+@@ -584,6 +584,10 @@ class DeviceDisk(Device):
          https://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
          """
          if self.driver_name != self.DRIVER_NAME_QEMU:

++++++ virtinst-xenbus-disk-index-fix.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.254672941 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.258673108 +0100
@@ -6,11 +6,11 @@
 passed to qemu where it error'ed out with the disks having the same
 index (in this case both are 0).
 
-Index: virt-manager-4.2.0/virtinst/devices/disk.py
+Index: virt-manager-5.0.0/virtinst/devices/disk.py
 ===================================================================
---- virt-manager-4.2.0.orig/virtinst/devices/disk.py
-+++ virt-manager-4.2.0/virtinst/devices/disk.py
-@@ -941,6 +941,17 @@ class DeviceDisk(Device):
+--- virt-manager-5.0.0.orig/virtinst/devices/disk.py
++++ virt-manager-5.0.0/virtinst/devices/disk.py
+@@ -942,6 +942,17 @@ class DeviceDisk(Device):
          :returns: generated target
          """
          prefix, maxnode = self.get_target_prefix()
@@ -28,7 +28,7 @@
          skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
          skip_targets.sort()
  
-@@ -948,11 +959,18 @@ class DeviceDisk(Device):
+@@ -949,11 +960,18 @@ class DeviceDisk(Device):
              first_found = None
  
              for i in range(maxnode):

++++++ virtman-add-sev-memory-support.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.274673778 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.278673945 +0100
@@ -119,7 +119,7 @@
  
          self._redefine_xmlobj(guest)
  
-@@ -1320,6 +1338,9 @@ class vmmDomain(vmmLibvirtObject):
+@@ -1319,6 +1337,9 @@ class vmmDomain(vmmLibvirtObject):
      def get_description(self):
          return self.get_xmlobj().description
  

++++++ virtman-fix-restore-vm-menu-selection.patch ++++++
--- /var/tmp/diff_new_pack.NicQUf/_old  2025-03-16 18:57:52.314675451 +0100
+++ /var/tmp/diff_new_pack.NicQUf/_new  2025-03-16 18:57:52.318675618 +0100
@@ -7,7 +7,7 @@
 ===================================================================
 --- 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):
+@@ -1612,7 +1612,8 @@ class vmmDomain(vmmLibvirtObject):
          return (self.is_stoppable() or
                  self.status() in [libvirt.VIR_DOMAIN_CRASHED])
      def is_runable(self):

Reply via email to