diff --git a/Improve-functions-for-loongarch.patch b/Improve-functions-for-loongarch.patch new file mode 100644 index 0000000000000000000000000000000000000000..df8cc4374e12a0d4c9ff0deaea32f627cb9b0fcb --- /dev/null +++ b/Improve-functions-for-loongarch.patch @@ -0,0 +1,155 @@ +From 84273df2abbbadd492c41bb859c057d52838b919 Mon Sep 17 00:00:00 2001 +From: zhaotianrui +Date: Thu, 13 Jul 2023 09:51:50 -0400 +Subject: [PATCH] Improve functions for loongarch + +Signed-off-by: zhaotianrui +--- + virtManager/create.py | 2 ++ + virtinst/devices/disk.py | 2 ++ + virtinst/devices/video.py | 2 ++ + virtinst/domain/cpu.py | 5 +++++ + virtinst/domcapabilities.py | 4 ++++ + virtinst/guest.py | 14 ++++++++++---- + 6 files changed, 25 insertions(+), 4 deletions(-) + +diff --git a/virtManager/create.py b/virtManager/create.py +index dcc70bb..2b64b6e 100644 +--- a/virtManager/create.py ++++ b/virtManager/create.py +@@ -824,6 +824,8 @@ class vmmCreate(vmmGObjectUI): + machines.sort() + + defmachine = None ++ if self._capsinfo.arch in ["loongarch64"]: ++ defmachine = "loongson7a" + prios = [] + recommended_machine = virtinst.Guest.get_recommended_machine( + self._capsinfo) +diff --git a/virtinst/devices/disk.py b/virtinst/devices/disk.py +index 533631e..26eca63 100644 +--- a/virtinst/devices/disk.py ++++ b/virtinst/devices/disk.py +@@ -961,6 +961,8 @@ class DeviceDisk(Device): + return "sd" + if guest.os.is_q35(): + return "sata" ++ if self.is_cdrom() and guest.os.is_loongarch64(): ++ return "scsi" + if self.is_cdrom() and guest.os.is_s390x(): + return "scsi" + return "ide" +diff --git a/virtinst/devices/video.py b/virtinst/devices/video.py +index 785d412..2022abd 100644 +--- a/virtinst/devices/video.py ++++ b/virtinst/devices/video.py +@@ -41,6 +41,8 @@ class DeviceVideo(Device): + + @staticmethod + def default_model(guest): ++ if guest.os.is_loongarch64(): ++ return "virtio" + if guest.os.is_pseries(): + return "vga" + if guest.os.is_arm_machvirt(): +diff --git a/virtinst/domain/cpu.py b/virtinst/domain/cpu.py +index 3548acd..baa43e2 100644 +--- a/virtinst/domain/cpu.py ++++ b/virtinst/domain/cpu.py +@@ -274,6 +274,11 @@ class DomainCpu(XMLBuilder): + # -M virt defaults to a 32bit CPU, even if using aarch64 + self.model = "cortex-a57" + ++ elif guest.os.is_loongarch64() and guest.type == "kvm": ++ if guest.os.arch != self.conn.caps.host.cpu.arch: ++ return ++ self.set_special_mode(guest, guest.loongarch_cpu_default) ++ + elif guest.os.is_x86() and guest.type == "kvm": + self._set_cpu_x86_kvm_default(guest) + +diff --git a/virtinst/domcapabilities.py b/virtinst/domcapabilities.py +index 4cbb7f2..515b6f8 100644 +--- a/virtinst/domcapabilities.py ++++ b/virtinst/domcapabilities.py +@@ -177,6 +177,10 @@ class DomainCapabilities(XMLBuilder): + "armv7l": [ + r".*arm/QEMU_EFI.*", # fedora, gerd's firmware repo + ], ++ "loongarch64": [ ++ ".*loongarch_bios.bin", # loongarch ++ ".*loongarch_vars.bin", # gerd's firmware repo ++ ], + } + + def find_uefi_path_for_arch(self): +diff --git a/virtinst/guest.py b/virtinst/guest.py +index c0471cd..eee6be1 100644 +--- a/virtinst/guest.py ++++ b/virtinst/guest.py +@@ -162,6 +162,7 @@ class Guest(XMLBuilder): + self.skip_default_graphics = False + self.skip_default_rng = False + self.x86_cpu_default = self.cpu.SPECIAL_MODE_APP_DEFAULT ++ self.loongarch_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY + + self.__osinfo = None + self._capsinfo = None +@@ -283,7 +284,8 @@ class Guest(XMLBuilder): + # These _only_ support virtio so don't check the OS + if (self.os.is_arm_machvirt() or + self.os.is_s390x() or +- self.os.is_pseries()): ++ self.os.is_pseries() or ++ self.os.is_loongarch64()): + return True + + if not os_support: +@@ -318,7 +320,7 @@ class Guest(XMLBuilder): + arm+machvirt prefers UEFI since it's required for traditional + install methods + """ +- return self.os.is_arm_machvirt() ++ return self.os.is_arm_machvirt() or self.os.is_loongarch64() + + def get_uefi_path(self): + """ +@@ -350,6 +352,8 @@ class Guest(XMLBuilder): + """ + self.os.loader_ro = True + self.os.loader_type = "pflash" ++ if (self.os.is_loongarch64()): ++ self.os.loader_type = "rom" + self.os.loader = path + + # If the firmware name contains "secboot" it is probably build +@@ -573,7 +577,7 @@ class Guest(XMLBuilder): + usb_keyboard = False + if self.os.is_x86() and not self.os.is_xenpv(): + usb_tablet = self.osinfo.supports_usbtablet() +- if self.os.is_arm_machvirt(): ++ if self.os.is_arm_machvirt() or self.os.is_loongarch64(): + usb_tablet = True + usb_keyboard = True + +@@ -665,7 +669,7 @@ class Guest(XMLBuilder): + return + if self.os.is_container() and not self.conn.is_vz(): + return +- if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le"]: ++ if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "loongarch64"]: + return + self.add_device(DeviceGraphics(self.conn)) + +@@ -753,6 +757,8 @@ class Guest(XMLBuilder): + self.add_device(dev) + + def _add_spice_usbredir(self): ++ if (self.os.is_loongarch64()): ++ return + if self.skip_default_usbredir: + return + if self.devices.redirdev: +-- +2.27.0 + diff --git a/virt-manager.spec b/virt-manager.spec index bf87b4b90e3c20131ac877cdbb7d9b46e06652d8..8818941c4c6b9d11f630d74d1b4831eee20cda6c 100644 --- a/virt-manager.spec +++ b/virt-manager.spec @@ -1,7 +1,7 @@ %global __python %{__python3} Name: virt-manager Version: 2.1.0 -Release: 8 +Release: 9 Summary: The manage virtual machines tool which via libvirt. License: GPLv2+ BuildArch: noarch @@ -11,6 +11,7 @@ Patch0001: 0001-initrdinject-Use-full-option-versions-for-cpio.patch Patch0002: 0002-initrdinject-Force-added-files-to-be-owned-as-root-b.patch Patch0003: 0003-virt-manager-Add-sw64-architecture.patch Patch0004: Add-loongarch-support.patch +Patch0005: Improve-functions-for-loongarch.patch Requires: virt-manager-common = %{version}-%{release} python3-gobject gtk3 libvirt-glib >= 0.0.9 Requires: gtk-vnc2 spice-gtk3 dconf vte291 Recommends: (libvirt-daemon-kvm or libvirt-daemon-qemu) libvirt-daemon-config-network @@ -83,6 +84,9 @@ done %{_mandir}/man1/{virt-install.1*,virt-clone.1*,virt-convert.1*,virt-xml.1*} %changelog +* Thu Jul 13 2023 zhaotianrui - 2.1.0-9 +- Improve functions for loongarch + * Thu Apr 13 2023 yangchenguang - 2.1.0-8 - Modify patch file incorrect