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 2026-02-19 14:19:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/virt-manager (Old) and /work/SRC/openSUSE:Factory/.virt-manager.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "virt-manager" Thu Feb 19 14:19:26 2026 rev:286 rq:1333633 version:5.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/virt-manager/virt-manager.changes 2026-02-06 21:29:57.025216830 +0100 +++ /work/SRC/openSUSE:Factory/.virt-manager.new.1977/virt-manager.changes 2026-02-19 14:19:34.589284928 +0100 @@ -1,0 +2,19 @@ +Tue Feb 17 11:37:25 MST 2026 - [email protected] + +- jsc#PED-14636 - UEFI as default for new SLES 16 VMs + virtinst-query-recommended-firmware.patch + +------------------------------------------------------------------- +Wed Feb 4 14:51:19 MST 2026 - [email protected] + +- Upstream features and bug fixes (bsc#1027942) (jsc#PED-14625) + 051-addhardware-Add-usb-as-a-recommended-sound-device.patch + 055-virtinst-Add-serial-controller-option-to-cli.patch + 056-virtinst-Add-NVMe-Controller.patch + 057-virtinst-implement-NVMe-disk-target-generation.patch + 058-virtManager-Add-NVMe-disk-type.patch + 059-ui-Show-NVMe-Controller-details.patch + 060-virtinst-fix-locale-when-running-in-flatpak.patch + 061-virtinst-add-support-for-iommufd.patch + +------------------------------------------------------------------- New: ---- 051-addhardware-Add-usb-as-a-recommended-sound-device.patch 055-virtinst-Add-serial-controller-option-to-cli.patch 056-virtinst-Add-NVMe-Controller.patch 057-virtinst-implement-NVMe-disk-target-generation.patch 058-virtManager-Add-NVMe-disk-type.patch 059-ui-Show-NVMe-Controller-details.patch 060-virtinst-fix-locale-when-running-in-flatpak.patch 061-virtinst-add-support-for-iommufd.patch virtinst-query-recommended-firmware.patch ----------(New B)---------- New:- Upstream features and bug fixes (bsc#1027942) (jsc#PED-14625) 051-addhardware-Add-usb-as-a-recommended-sound-device.patch 055-virtinst-Add-serial-controller-option-to-cli.patch New: 051-addhardware-Add-usb-as-a-recommended-sound-device.patch 055-virtinst-Add-serial-controller-option-to-cli.patch 056-virtinst-Add-NVMe-Controller.patch New: 055-virtinst-Add-serial-controller-option-to-cli.patch 056-virtinst-Add-NVMe-Controller.patch 057-virtinst-implement-NVMe-disk-target-generation.patch New: 056-virtinst-Add-NVMe-Controller.patch 057-virtinst-implement-NVMe-disk-target-generation.patch 058-virtManager-Add-NVMe-disk-type.patch New: 057-virtinst-implement-NVMe-disk-target-generation.patch 058-virtManager-Add-NVMe-disk-type.patch 059-ui-Show-NVMe-Controller-details.patch New: 058-virtManager-Add-NVMe-disk-type.patch 059-ui-Show-NVMe-Controller-details.patch 060-virtinst-fix-locale-when-running-in-flatpak.patch New: 059-ui-Show-NVMe-Controller-details.patch 060-virtinst-fix-locale-when-running-in-flatpak.patch 061-virtinst-add-support-for-iommufd.patch New: 060-virtinst-fix-locale-when-running-in-flatpak.patch 061-virtinst-add-support-for-iommufd.patch New:- jsc#PED-14636 - UEFI as default for new SLES 16 VMs virtinst-query-recommended-firmware.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ virt-manager.spec ++++++ --- /var/tmp/diff_new_pack.rUQTvC/_old 2026-02-19 14:19:36.609367820 +0100 +++ /var/tmp/diff_new_pack.rUQTvC/_new 2026-02-19 14:19:36.609367820 +0100 @@ -61,6 +61,14 @@ Patch10: 020-virtinst-remove-legacy-attribute-from-set_boot_order-get_boot_order.patch Patch11: 021-installer-add-support-to-use-device-boot-order.patch Patch12: 024-virtinst-Fix-XDG_DATA_HOME-handling.patch +Patch13: 051-addhardware-Add-usb-as-a-recommended-sound-device.patch +Patch14: 055-virtinst-Add-serial-controller-option-to-cli.patch +Patch15: 056-virtinst-Add-NVMe-Controller.patch +Patch16: 057-virtinst-implement-NVMe-disk-target-generation.patch +Patch17: 058-virtManager-Add-NVMe-disk-type.patch +Patch18: 059-ui-Show-NVMe-Controller-details.patch +Patch19: 060-virtinst-fix-locale-when-running-in-flatpak.patch +Patch20: 061-virtinst-add-support-for-iommufd.patch # SUSE Only Patch150: virtman-desktop.patch Patch151: virtman-kvm.patch @@ -82,6 +90,7 @@ Patch225: virtinst-add-caasp-support.patch Patch226: virtinst-add-sle15-detection-support.patch Patch227: virtinst-media-detection.patch +Patch228: virtinst-query-recommended-firmware.patch # Bug Fixes Patch251: virtman-increase-setKeepAlive-count.patch Patch252: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch ++++++ 051-addhardware-Add-usb-as-a-recommended-sound-device.patch ++++++ Subject: addhardware: Add usb as a recommended sound device From: Akihiko Odaki [email protected] Wed Aug 6 15:04:55 2025 +0900 Date: Sat Jan 10 19:25:58 2026 +0100: Git: 10014e1505ac20569df8f92078073f9aa5f621f4 usb is an architecture-independent sound device and useful for Windows on Arm, which does not support PC sound devices. Signed-off-by: Akihiko Odaki <[email protected]> diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index 7ce8db23c..e4db35d5b 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -562,7 +562,7 @@ class vmmAddHardware(vmmGObjectUI): @staticmethod def sound_recommended_models(_guest): - return ["ich6", "ich9", "ac97"] + return ["ich6", "ich9", "ac97", "usb"] @staticmethod def sound_pretty_model(model): ++++++ 055-virtinst-Add-serial-controller-option-to-cli.patch ++++++ Subject: virtinst: Add serial controller option to cli From: 6543 [email protected] Thu Jan 8 21:43:38 2026 +0100 Date: Sun Jan 11 18:36:09 2026 +0100: Git: 6f1adcc9251429e1dc9f15ec68e3b00affdb9638 diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml index ddfbbe058..fd972ef32 100644 --- a/tests/data/cli/compare/virt-install-many-devices.xml +++ b/tests/data/cli/compare/virt-install-many-devices.xml @@ -507,6 +507,9 @@ <controller type="usb" model="ich9-uhci3"> <master startport="4"/> </controller> + <controller type="nvme"> + <serial>1</serial> + </controller> <filesystem type="mount" accessmode="mapped"> <driver ats="on" iommu="off" packed="on" page_per_vq="off"/> <alias name="testfsalias"/> diff --git a/tests/test_cli.py b/tests/test_cli.py index 99f4a59dc..b0b236615 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -709,6 +709,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser --controller usb3 --controller scsi,model=virtio-scsi --controller usb2 +--controller nvme,serial=1 --input type=keyboard,bus=usb diff --git a/virtinst/cli.py b/virtinst/cli.py index 346043287..1081cf115 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -4495,6 +4495,7 @@ class ParserController(VirtCLIParser): cls.add_arg("target.memReserve", "target_memReserve") cls.add_arg("pcihole64", "pcihole64") cls.add_arg("pcihole64.unit", "pcihole64_unit") + cls.add_arg("serial", "serial") 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 f3c4ce61d..def85f10e 100644 --- a/virtinst/devices/controller.py +++ b/virtinst/devices/controller.py @@ -77,6 +77,7 @@ class DeviceController(Device): ports = XMLProperty("./@ports", is_int=True) maxGrantFrames = XMLProperty("./@maxGrantFrames", is_int=True) index = XMLProperty("./@index", is_int=True) + serial = XMLProperty("./serial") driver_iothread = XMLProperty("./driver/@iothread", is_int=True) driver_queues = XMLProperty("./driver/@queues", is_int=True) ++++++ 056-virtinst-Add-NVMe-Controller.patch ++++++ Subject: virtinst: Add NVMe Controller From: 6543 [email protected] Thu Dec 18 03:37:40 2025 +0100 Date: Sun Jan 11 18:36:09 2026 +0100: Git: 605b3d807078f8a67f6828ed84d4e0c2aa6d63bc diff --git a/virtinst/devices/controller.py b/virtinst/devices/controller.py index def85f10e..ff723d91c 100644 --- a/virtinst/devices/controller.py +++ b/virtinst/devices/controller.py @@ -14,6 +14,7 @@ class DeviceController(Device): TYPE_IDE = "ide" TYPE_FDC = "fdc" TYPE_SCSI = "scsi" + TYPE_NVME = "nvme" TYPE_SATA = "sata" TYPE_VIRTIOSERIAL = "virtio-serial" TYPE_USB = "usb" @@ -121,6 +122,6 @@ class DeviceController(Device): ret = [] if self.type == "virtio-serial": ret = self._get_attached_virtioserial_devices(guest) - elif self.type in ["scsi", "sata", "ide", "fdc"]: + elif self.type in ["scsi", "sata", "ide", "fdc", "nvme"]: ret = self._get_attached_disk_devices(guest) return ret ++++++ 057-virtinst-implement-NVMe-disk-target-generation.patch ++++++ Subject: virtinst: implement NVMe disk target generation From: Pavel Hrdina [email protected] Fri Jan 9 08:51:29 2026 +0100 Date: Sun Jan 11 18:36:09 2026 +0100: Git: 97505a9feab1ecfd23d88dad0f90444108496f83 In libvirt NVMe disk targets are based on what linux uses for device names. Signed-off-by: Pavel Hrdina <[email protected]> --- a/tests/test_disk.py +++ b/tests/test_disk.py @@ -40,13 +40,30 @@ def test_disk_numtotarget(): assert DeviceDisk.target_to_num("xvdaaa") == 26 * 26 * 1 + 26 * 1 + 0 conn = utils.URIs.open_testdefault_cached() + guest = virtinst.Guest(conn) disk = virtinst.DeviceDisk(conn) disk.bus = "ide" - assert disk.generate_target([]) == "hda" - assert disk.generate_target(["hda"]) == "hdb" - assert disk.generate_target(["hdb", "sda"]) == "hdc" - assert disk.generate_target(["hda", "hdd"]) == "hdb" + assert disk.generate_target([], guest) == "hda" + assert disk.generate_target(["hda"], guest) == "hdb" + assert disk.generate_target(["hdb", "sda"], guest) == "hdc" + assert disk.generate_target(["hda", "hdd"], guest) == "hdb" + + disk.bus = "nvme" + disk.serial = "0" + + assert disk.generate_target([], guest) == "nvme0n1" + + controller = virtinst.DeviceController(conn) + controller.type = "nvme" + controller.serial = "0" + controller.index = 0 + guest.add_device(controller) + + assert disk.generate_target([], guest) == "nvme0n1" + + controller.index = 1 + assert disk.generate_target(["nvme1n1"], guest) == "nvme1n2" def test_disk_dir_searchable(monkeypatch): --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -1453,7 +1453,7 @@ class vmmAddHardware(vmmGObjectUI): used.append(d.target) self._set_disk_controller(disk) - disk.generate_target(used) + disk.generate_target(used, self.vm.xmlobj) return disk def _build_network(self): --- a/virtinst/devices/disk.py +++ b/virtinst/devices/disk.py @@ -914,6 +914,19 @@ class DeviceDisk(Device): if path: self._set_xmlpath(path) + def get_nvme_namespace(self, guest): + """ + Returns the NVMe namespace for disk based on it's bus and serial. + + If no NVMe controller is defined return 0 as that is default used by + libvirt and virt-manager. + """ + for c in guest.devices.controller: + if c.type == "nvme" and c.serial == self.serial: + return c.index + + return 0 + def get_target_prefix(self): """ Returns the suggested disk target prefix (hd, xvd, sd ...) for the @@ -930,6 +943,7 @@ class DeviceDisk(Device): "fd": 2, "hd": 4, "sd": 1024, + "nvme": 1024, } return prefix, nummap[prefix] @@ -941,10 +955,12 @@ class DeviceDisk(Device): return _return("fd") elif self.bus == "ide": return _return("hd") + elif self.bus == "nvme": + return _return("nvme") # sata, scsi, usb, sd return _return("sd") - def generate_target(self, skip_targets): + def generate_target(self, skip_targets, guest): """ Generate target device ('hda', 'sdb', etc..) for disk, excluding any targets in 'skip_targets'. @@ -957,11 +973,17 @@ class DeviceDisk(Device): skip_targets = [t for t in skip_targets if t and t.startswith(prefix)] skip_targets.sort() + if self.bus == "nvme": + nvmen = self.get_nvme_namespace(guest) + def get_target(): first_found = None for i in range(maxnode): - gen_t = prefix + self.num_to_target(i + 1) + if self.bus == "nvme": + gen_t = f"{prefix}{nvmen}n{i + 1}" + else: + gen_t = prefix + self.num_to_target(i + 1) if gen_t in skip_targets: skip_targets.remove(gen_t) continue @@ -1008,7 +1030,7 @@ class DeviceDisk(Device): used.remove(self.target) self.target = None - self.generate_target(used) + self.generate_target(used, guest) ######################### # set_defaults handling # @@ -1078,4 +1100,4 @@ class DeviceDisk(Device): if not self.target: used_targets = [d.target for d in guest.devices.disk if d.target] - self.generate_target(used_targets) + self.generate_target(used_targets, guest) --- a/virtinst/guest.py +++ b/virtinst/guest.py @@ -877,7 +877,7 @@ class Guest(XMLBuilder): if dev.DEVICE_TYPE == "disk" and dev.bus == "ide": dev.bus = "sata" used_targets = [d.target for d in self.devices.disk if d.target] - dev.generate_target(used_targets) + dev.generate_target(used_targets, self) dev.address.clear() if dev.address.type == "pci": ++++++ 058-virtManager-Add-NVMe-disk-type.patch ++++++ Subject: virtManager: Add NVMe disk type From: 6543 [email protected] Thu Dec 18 03:38:56 2025 +0100 Date: Sun Jan 11 18:36:09 2026 +0100: Git: 08b547366fbc4037a737515ee0efab3c3e673a80 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -472,6 +472,7 @@ class vmmAddHardware(vmmGObjectUI): def controller_recommended_types(): return [ DeviceController.TYPE_SCSI, + DeviceController.TYPE_NVME, DeviceController.TYPE_USB, DeviceController.TYPE_VIRTIOSERIAL, DeviceController.TYPE_CCID, @@ -482,6 +483,7 @@ class vmmAddHardware(vmmGObjectUI): labels = { DeviceController.TYPE_IDE: _("IDE"), DeviceController.TYPE_FDC: _("Floppy"), + DeviceController.TYPE_NVME: _("NVMe"), DeviceController.TYPE_SCSI: _("SCSI"), DeviceController.TYPE_SATA: _("SATA"), DeviceController.TYPE_VIRTIOSERIAL: _("VirtIO Serial"), @@ -510,6 +512,7 @@ class vmmAddHardware(vmmGObjectUI): ret.append("ide") ret.append("sata") ret.append("fdc") + ret.append("nvme") ret.append("scsi") ret.append("usb") @@ -531,7 +534,7 @@ class vmmAddHardware(vmmGObjectUI): buses = vmmAddHardware.disk_old_recommended_buses(guest) bus_map = { - "disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"], + "disk": ["ide", "nvme", "sata", "scsi", "sd", "usb", "virtio", "xen"], "floppy": ["fdc"], "cdrom": ["ide", "sata", "scsi", "usb"], "lun": ["scsi"], @@ -542,6 +545,7 @@ class vmmAddHardware(vmmGObjectUI): def disk_pretty_bus(bus): bus_mappings = { "ide": _("IDE"), + "nvme": _("NVMe"), "sata": _("SATA"), "scsi": _("SCSI"), "sd": _("SD"), @@ -1424,16 +1428,33 @@ class vmmAddHardware(vmmGObjectUI): return dev def _set_disk_controller(self, disk): - # Add a SCSI controller with model virtio-scsi if needed + # Add a SCSI controller with model virtio-scsi if needed or + # add an NVMe controller if needed disk.vmm_controller = None - if not self.vm.xmlobj.can_default_virtioscsi(): - return - controller = DeviceController(self.conn.get_backend()) - controller.type = "scsi" - controller.model = "virtio-scsi" - controller.index = 0 - disk.vmm_controller = controller + if disk.bus == "scsi": + if not self.vm.xmlobj.can_default_virtioscsi(): + return + + controller = DeviceController(self.conn.get_backend()) + controller.type = "scsi" + controller.model = "virtio-scsi" + controller.index = 0 + disk.vmm_controller = controller + + elif disk.bus == "nvme": + nvme_controllers = [c for c in self.vm.xmlobj.devices.controller if c.type == "nvme"] + if len(nvme_controllers) > 0: + if not disk.serial: + disk.serial = nvme_controllers[0].serial + else: + if not disk.serial: + disk.serial = "0" + controller = DeviceController(self.conn.get_backend()) + controller.type = "nvme" + controller.index = 0 + controller.serial = disk.serial + disk.vmm_controller = controller def _build_storage(self): bus = uiutil.get_list_selection(self.widget("storage-bustype")) @@ -1585,12 +1606,18 @@ class vmmAddHardware(vmmGObjectUI): controller_num = [x for x in controllers if (x.type == controller_type)] if len(controller_num) > 0: index_new = max(int(x.index or 0) for x in controller_num) + 1 - dev.index = index_new + else: + index_new = 0 + dev.index = index_new dev.type = controller_type if model and model != "none": dev.model = model + + if controller_type == DeviceController.TYPE_NVME: + dev.serial = str(dev.index) + return dev def _build_rng(self): ++++++ 059-ui-Show-NVMe-Controller-details.patch ++++++ Subject: ui: Show NVMe Controller details From: 6543 [email protected] Thu Dec 18 03:40:08 2025 +0100 Date: Sun Jan 11 18:36:09 2026 +0100: Git: 90e425b59a30f1dd4827de5cc480031d89391d3d display serial and atached disks diff --git a/ui/details.ui b/ui/details.ui index ead89a8c0..2eb0d8a44 100644 --- a/ui/details.ui +++ b/ui/details.ui @@ -4243,6 +4243,31 @@ <property name="top-attach">1</property> </packing> </child> + <child> + <object class="GtkLabel" id="controller-serial-label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">end</property> + <property name="label" translatable="yes">Serial:</property> + </object> + <packing> + <property name="left-attach">0</property> + <property name="top-attach">2</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="controller-serial"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">start</property> + <property name="label">-</property> + <property name="selectable">True</property> + </object> + <packing> + <property name="left-attach">1</property> + <property name="top-attach">2</property> + </packing> + </child> <child> <object class="GtkLabel" id="device-list-label"> <property name="visible">True</property> @@ -4255,7 +4280,7 @@ </object> <packing> <property name="left-attach">0</property> - <property name="top-attach">2</property> + <property name="top-attach">3</property> </packing> </child> <child> @@ -4290,7 +4315,7 @@ </object> <packing> <property name="left-attach">1</property> - <property name="top-attach">2</property> + <property name="top-attach">3</property> </packing> </child> </object> diff --git a/virtManager/details/details.py b/virtManager/details/details.py index 6cadf8bf0..c927f1045 100644 --- a/virtManager/details/details.py +++ b/virtManager/details/details.py @@ -2161,7 +2161,7 @@ class vmmDetails(vmmGObjectUI): self._disable_device_remove(_("Hypervisor does not support removing this device")) if controller.type == "pci": self._disable_device_remove(_("Hypervisor does not support removing this device")) - elif controller.type in ["scsi", "sata", "ide", "fdc"]: + elif controller.type in ["nvme", "scsi", "sata", "ide", "fdc"]: model = self.widget("controller-device-list").get_model() model.clear() disks = controller.get_attached_devices(self.vm.xmlobj) @@ -2188,6 +2188,12 @@ class vmmDetails(vmmGObjectUI): type_label = vmmAddHardware.controller_pretty_desc(controller) self.widget("controller-type").set_text(type_label) + has_serial = controller.type == "nvme" and controller.serial + if has_serial: + self.widget("controller-serial").set_text(controller.serial) + uiutil.set_grid_row_visible(self.widget("controller-serial"), has_serial) + uiutil.set_grid_row_visible(self.widget("controller-serial-label"), has_serial) + combo = self.widget("controller-model") vmmAddHardware.populate_controller_model_combo(combo, controller.type) show_model = controller.model or len(combo.get_model()) > 1 ++++++ 060-virtinst-fix-locale-when-running-in-flatpak.patch ++++++ Subject: virtinst: fix locale when running in flatpak From: Pavel Hrdina [email protected] Sun Jan 11 20:48:22 2026 +0100 Date: Sun Jan 11 21:20:42 2026 +0100: Git: d13271422e47d9bc827d6ede3e7d5154568115c7 Module locale is used to configure C libraries. When running in flatpak we need to set correct path using locale module as well. Resolves: https://github.com/virt-manager/virt-manager/issues/1023 Signed-off-by: Pavel Hrdina <[email protected]> diff --git a/virtinst/__init__.py b/virtinst/__init__.py index 621acb238..eb874063a 100644 --- a/virtinst/__init__.py +++ b/virtinst/__init__.py @@ -24,6 +24,7 @@ def _setup_i18n(): gettext.install("virt-manager", BuildConfig.gettext_dir, names=["ngettext"]) gettext.bindtextdomain("virt-manager", BuildConfig.gettext_dir) + locale.bindtextdomain("virt-manager", BuildConfig.gettext_dir) def _set_libvirt_error_handler(): ++++++ 061-virtinst-add-support-for-iommufd.patch ++++++ Subject: virtinst: add support for iommufd From: Nathan Chen [email protected] Mon Oct 27 18:34:27 2025 +0000 Date: Tue Feb 3 07:17:03 2026 +0100: Git: 9ab2918face14ff4081b85bfd224342e1829880c A minimal config to enable iommufd would be $ virt-install ...args... --host-device 0x062a:0x0001,driver.iommufd=yes Signed-off-by: Nathan Chen <[email protected]> diff --git a/tests/data/cli/compare/virt-install-many-devices.xml b/tests/data/cli/compare/virt-install-many-devices.xml index fd972ef32..5e4aec35e 100644 --- a/tests/data/cli/compare/virt-install-many-devices.xml +++ b/tests/data/cli/compare/virt-install-many-devices.xml @@ -928,6 +928,12 @@ <zpci uid="0xffff" fid="0xffffffff"/> </address> </hostdev> + <hostdev mode="subsystem" type="pci" managed="yes"> + <source> + <address domain="0" bus="21" slot="0" function="4"/> + </source> + <driver name="vfio" iommufd="yes"/> + </hostdev> <hostdev mode="subsystem" type="usb" managed="yes"> <source> <vendor id="0x062a"/> diff --git a/tests/test_cli.py b/tests/test_cli.py index b0b236615..8d1c24fe6 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -748,6 +748,7 @@ source.reservations.managed=no,source.reservations.source.type=unix,source.reser --hostdev 15:0.1 --host-device 2:15:0.2 --hostdev 0:15:0.3,address.type=pci,address.zpci.uid=0xffff,address.zpci.fid=0xffffffff +--hostdev 0:15:0.4,driver_name=vfio,driver.iommufd=yes --host-device 0x062a:0x0001,driver_name=vfio --host-device 0483:2016 --host-device pci_8086_2829_scsi_host_scsi_device_lun0,rom.bar=on,acpi.nodeset=0-2 diff --git a/virtinst/cli.py b/virtinst/cli.py index 1081cf115..c6001644c 100644 --- a/virtinst/cli.py +++ b/virtinst/cli.py @@ -5287,6 +5287,7 @@ class ParserHostdev(VirtCLIParser): cls.add_arg("type", "type") cls.add_arg("name", None, cb=cls.set_name_cb, lookup_cb=cls.name_lookup_cb) cls.add_arg("driver.name", "driver_name") + cls.add_arg("driver.iommufd", "driver_iommufd") cls.add_arg("rom.bar", "rom_bar", is_onoff=True) cls.add_arg("acpi.nodeset", "acpi_nodeset", can_comma=True) cls.add_arg("source.startupPolicy", "startup_policy") diff --git a/virtinst/devices/hostdev.py b/virtinst/devices/hostdev.py index 43d5322f3..2a3dc048d 100644 --- a/virtinst/devices/hostdev.py +++ b/virtinst/devices/hostdev.py @@ -127,6 +127,7 @@ class DeviceHostdev(Device): slot = XMLProperty("./source/address/@slot") driver_name = XMLProperty("./driver/@name") + driver_iommufd = XMLProperty("./driver/@iommufd", is_yesno=True) rom_bar = XMLProperty("./rom/@bar", is_onoff=True) acpi_nodeset = XMLProperty("./acpi/@nodeset") ++++++ virtinst-query-recommended-firmware.patch ++++++ References: jsc#PED-14636 - Impl: UEFI as default for new VMs This patch depends on an upstream libosinfo patch. Index: virt-manager-5.1.0/virtinst/osdict.py =================================================================== --- virt-manager-5.1.0.orig/virtinst/osdict.py +++ virt-manager-5.1.0/virtinst/osdict.py @@ -445,21 +445,27 @@ class _OsVariant: def _supports_firmware_type(self, name, arch, default): firmwares = self._get_firmware_list() + is_supported = default + is_recommended = False for firmware in firmwares: # pragma: no cover if firmware.get_architecture() != arch: continue if firmware.get_firmware_type() == name: - return firmware.is_supported() + is_supported = firmware.is_supported() + if hasattr(firmware, "is_recommended"): + is_recommended = firmware.is_recommended() - return default + return (is_supported, is_recommended) def requires_firmware_efi(self, arch): ret = False try: - supports_efi = self._supports_firmware_type("efi", arch, False) - supports_bios = self._supports_firmware_type("bios", arch, True) - ret = supports_efi and not supports_bios + supports_efi, recommended_efi = self._supports_firmware_type("efi", arch, False) + supports_bios, recommended_bios = self._supports_firmware_type("bios", arch, True) + if supports_efi: + if not supports_bios or recommended_efi: + ret = True except Exception: # pragma: no cover log.debug("Error checking osinfo firmware support", exc_info=True) ++++++ virtinst-xenbus-disk-index-fix.patch ++++++ --- /var/tmp/diff_new_pack.rUQTvC/_old 2026-02-19 14:19:37.037385384 +0100 +++ /var/tmp/diff_new_pack.rUQTvC/_new 2026-02-19 14:19:37.041385548 +0100 @@ -10,7 +10,7 @@ =================================================================== --- virt-manager-5.1.0.orig/virtinst/devices/disk.py +++ virt-manager-5.1.0/virtinst/devices/disk.py -@@ -961,6 +961,17 @@ class DeviceDisk(Device): +@@ -977,6 +977,17 @@ class DeviceDisk(Device): :returns: generated target """ prefix, maxnode = self.get_target_prefix() @@ -28,17 +28,17 @@ skip_targets = [t for t in skip_targets if t and t.startswith(prefix)] skip_targets.sort() -@@ -968,11 +979,18 @@ class DeviceDisk(Device): - first_found = None - - for i in range(maxnode): -- gen_t = prefix + self.num_to_target(i + 1) -+ postfix = self.num_to_target(i + 1) -+ gen_t = prefix + postfix -+ if self.conn.is_xen() and postfix in postfix_targets: -+ if gen_t in skip_targets: -+ skip_targets.remove(gen_t) -+ continue +@@ -990,11 +1001,18 @@ class DeviceDisk(Device): + if self.bus == "nvme": + gen_t = f"{prefix}{nvmen}n{i + 1}" + else: +- gen_t = prefix + self.num_to_target(i + 1) ++ postfix = self.num_to_target(i + 1) ++ gen_t = prefix + postfix ++ if self.conn.is_xen() and postfix in postfix_targets: ++ if gen_t in skip_targets: ++ skip_targets.remove(gen_t) ++ continue if gen_t in skip_targets: skip_targets.remove(gen_t) continue ++++++ virtman-disallow-adding-floppy-disk.patch ++++++ --- /var/tmp/diff_new_pack.rUQTvC/_old 2026-02-19 14:19:37.077387025 +0100 +++ /var/tmp/diff_new_pack.rUQTvC/_new 2026-02-19 14:19:37.081387189 +0100 @@ -8,7 +8,7 @@ =================================================================== --- virt-manager-5.1.0.orig/virtManager/addhardware.py +++ virt-manager-5.1.0/virtManager/addhardware.py -@@ -529,6 +529,9 @@ class vmmAddHardware(vmmGObjectUI): +@@ -532,6 +532,9 @@ class vmmAddHardware(vmmGObjectUI): buses = domcaps.devices.disk.get_enum("bus").get_values() else: buses = vmmAddHardware.disk_old_recommended_buses(guest) @@ -17,8 +17,8 @@ + buses.append("fdc") bus_map = { - "disk": ["ide", "sata", "scsi", "sd", "usb", "virtio", "xen"], -@@ -548,6 +551,7 @@ class vmmAddHardware(vmmGObjectUI): + "disk": ["ide", "nvme", "sata", "scsi", "sd", "usb", "virtio", "xen"], +@@ -552,6 +555,7 @@ class vmmAddHardware(vmmGObjectUI): "usb": _("USB"), "virtio": _("VirtIO"), "xen": _("Xen"), @@ -26,7 +26,7 @@ } return bus_mappings.get(bus, bus) -@@ -703,7 +707,8 @@ class vmmAddHardware(vmmGObjectUI): +@@ -707,7 +711,8 @@ class vmmAddHardware(vmmGObjectUI): target_list.add_attribute(text, "text", 2) target_model.append([DeviceDisk.DEVICE_DISK, "drive-harddisk", _("Disk device")]) target_model.append([DeviceDisk.DEVICE_CDROM, "media-optical", _("CDROM device")])
