Skip to content

feat: Add loong64 architecture support to debian/control#23

Merged
Zeno-sole merged 10 commits into
deepin-community:masterfrom
Zeno-sole:master
May 15, 2026
Merged

feat: Add loong64 architecture support to debian/control#23
Zeno-sole merged 10 commits into
deepin-community:masterfrom
Zeno-sole:master

Conversation

@Zeno-sole
Copy link
Copy Markdown
Contributor

Add loong64 (LoongArch) architecture support to multiple packages in debian/control, enabling libvirt to be built for loong64 systems. The following Build-Depends and binary package Architecture fields are updated:

  • libglusterfs-dev, librados-dev, librbd-dev, qemu-utils (Build-Depends)
  • libvirt-login-shell, libvirt-daemon-driver-qemu, libvirt-daemon-driver-lxc, libvirt-daemon-driver-storage-gluster, libvirt-daemon-driver-storage-rbd (Architecture)

Log: Add loong64 architecture support to debian/control

Influence:

  1. Verify libvirt builds successfully on loong64 architecture
  2. Ensure all loong64-specific binary packages are generated correctly
  3. Validate no regression on existing architectures (amd64, arm64, etc.)
  4. Check gluster/rbd storage drivers compile on loong64
  5. Confirm qemu-utils dependency resolves on loong64

feat: 为 debian/control 添加 loong64 架构支持

在 debian/control 中为多个包添加 loong64 (龙芯) 架构支持,
使 libvirt 能够在 loong64 系统上构建。更新了以下 Build-Depends
和二进制包 Architecture 字段:

  • libglusterfs-dev, librados-dev, librbd-dev, qemu-utils (Build-Depends)
  • libvirt-login-shell, libvirt-daemon-driver-qemu, libvirt-daemon-driver-lxc, libvirt-daemon-driver-storage-gluster, libvirt-daemon-driver-storage-rbd (Architecture)

Log: 为 debian/control 添加 loong64 架构支持

Influence:

  1. 验证 libvirt 在 loong64 架构上能成功构建
  2. 确保所有 loong64 特定的二进制包能正确生成
  3. 验证现有架构 (amd64, arm64 等) 没有回归
  4. 检查 gluster/rbd 存储驱动在 loong64 上能正确编译
  5. 确认 qemu-utils 依赖在 loong64 上能正确解析

Add loong64 (LoongArch) architecture support to multiple packages
in debian/control, enabling libvirt to be built for loong64 systems.
The following Build-Depends and binary package Architecture fields
are updated:
  - libglusterfs-dev, librados-dev, librbd-dev, qemu-utils (Build-Depends)
  - libvirt-login-shell, libvirt-daemon-driver-qemu,
    libvirt-daemon-driver-lxc, libvirt-daemon-driver-storage-gluster,
    libvirt-daemon-driver-storage-rbd (Architecture)

Log: Add loong64 architecture support to debian/control

Influence:
1. Verify libvirt builds successfully on loong64 architecture
2. Ensure all loong64-specific binary packages are generated correctly
3. Validate no regression on existing architectures (amd64, arm64, etc.)
4. Check gluster/rbd storage drivers compile on loong64
5. Confirm qemu-utils dependency resolves on loong64

feat: 为 debian/control 添加 loong64 架构支持

在 debian/control 中为多个包添加 loong64 (龙芯) 架构支持,
使 libvirt 能够在 loong64 系统上构建。更新了以下 Build-Depends
和二进制包 Architecture 字段:
  - libglusterfs-dev, librados-dev, librbd-dev, qemu-utils (Build-Depends)
  - libvirt-login-shell, libvirt-daemon-driver-qemu,
    libvirt-daemon-driver-lxc, libvirt-daemon-driver-storage-gluster,
    libvirt-daemon-driver-storage-rbd (Architecture)

Log: 为 debian/control 添加 loong64 架构支持

Influence:
1. 验证 libvirt 在 loong64 架构上能成功构建
2. 确保所有 loong64 特定的二进制包能正确生成
3. 验证现有架构 (amd64, arm64 等) 没有回归
4. 检查 gluster/rbd 存储驱动在 loong64 上能正确编译
5. 确认 qemu-utils 依赖在 loong64 上能正确解析

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

TAG Bot

TAG: 10.7.0+really9.10.0-1deepin16
EXISTED: no
DISTRIBUTION: unstable

@Zeno-sole
Copy link
Copy Markdown
Contributor Author

/integrate

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 9, 2026

AutoIntegrationPr Bot
auto integrate with pr url: deepin-community/Repository-Integration#3974
PrNumber: 3974
PrBranch: auto-integration-25595754125

In qemuFirmwareFetchParsedConfigs(), a single unparseable firmware
descriptor JSON file caused the entire firmware discovery to fail
with -1. This prevented ARM aarch64 UEFI firmware from being found
when virt-manager requests firmware='efi', even though valid aarch64
descriptors existed.

The root cause is that the 9.10.0 code uses goto error when
qemuFirmwareParse() returns NULL, while 10.7.0 gracefully skips
the bad descriptor and continues processing remaining files.

This fix restores the 10.7.0 behavior: iterate over all descriptor
files, skip any that fail to parse, and accumulate only the
successfully parsed firmwares.

Patch: fix-firmware-descriptor-parsing.patch

Log: Fix ARM UEFI firmware discovery failure caused by strict
firmware descriptor parsing

Influence:
1. Test ARM aarch64 VM creation with firmware='efi' via virt-manager
2. Verify UEFI firmware autoselection works on aarch64
3. Ensure x86_64 UEFI firmware still works correctly
4. Confirm firmware descriptor parse errors are logged but do not
   block discovery of other valid descriptors
5. Test with missing or malformed JSON files in /usr/share/qemu/firmware/

fix: 跳过格式异常的固件描述符而非中止固件发现

在 qemuFirmwareFetchParsedConfigs() 中,单个无法解析的固件描述符
JSON 文件会导致整个固件发现流程失败并返回 -1。这阻止了 ARM
aarch64 UEFI 固件的发现,即使存在有效的 aarch64 描述符。

根本原因是 9.10.0 代码在 qemuFirmwareParse() 返回 NULL 时使用
goto error,而 10.7.0 会优雅地跳过有问题的描述符并继续处理
剩余文件。

此修复恢复了 10.7.0 的行为:遍历所有描述符文件,跳过解析失败
的文件,仅累积成功解析的固件。

补丁: fix-firmware-descriptor-parsing.patch

Log: 修复因固件描述符严格解析导致的 ARM UEFI 固件发现失败

Influence:
1. 测试通过 virt-manager 使用 firmware='efi' 创建 ARM aarch64 虚拟机
2. 验证 aarch64 上 UEFI 固件自动选择正常工作
3. 确保 x86_64 UEFI 固件仍然正常工作
4. 确认固件描述符解析错误被记录但不阻止其他有效描述符的发现
5. 测试 /usr/share/qemu/firmware/ 中存在缺失或格式异常的 JSON 文件

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Zeno-sole
Copy link
Copy Markdown
Contributor Author

/integrate

Zeno-sole and others added 4 commits May 11, 2026 14:24
Add loong64 to the meson architecture lists in debian/rules so that
QEMU driver, LXC driver, Ceph (RBD) storage backend, and GlusterFS
storage backend are compiled for loong64.

Previously loong64 was missing from ARCHES_QEMU, ARCHES_LXC,
ARCHES_CEPH, and ARCHES_GLUSTER, causing meson to pass
-Ddriver_qemu=disabled -Ddriver_lxc=disabled -Dstorage_rbd=disabled
-Dstorage_gluster=disabled. This meant no driver .so files were built
on loong64, and dh_install failed because the expected files did not
exist in the build output.

This change works together with the earlier loong64 additions to
debian/control Architecture fields and Build-Depends.

Log: Enable QEMU/LXC/Ceph/Gluster meson build for loong64

Influence:
1. Verify libvirt builds successfully on loong64 with QEMU driver
2. Verify libvirt_driver_qemu.so is produced in the build
3. Verify libvirt_driver_lxc.so is produced in the build
4. Verify storage backend .so files (rbd, gluster) are produced
5. Ensure no regression on other architectures (amd64, arm64, etc.)

feat: 为 loong64 架构启用 QEMU/LXC/Ceph/Gluster 驱动

在 debian/rules 的 meson 架构列表中添加 loong64,以便为 loong64
编译 QEMU 驱动、LXC 驱动、Ceph (RBD) 存储后端和 GlusterFS
存储后端。

此前 loong64 缺失于 ARCHES_QEMU、ARCHES_LXC、ARCHES_CEPH
和 ARCHES_GLUSTER,导致 meson 传递 -Ddriver_qemu=disabled
-Ddriver_lxc=disabled -Dstorage_rbd=disabled
-Dstorage_gluster=disabled。这意味着 loong64 上不会编译任何
驱动 .so 文件,dh_install 因找不到预期文件而失败。

此变更与之前在 debian/control 中为 loong64 添加的 Architecture
字段和 Build-Depends 配合使用。

Log: 为 loong64 启用 QEMU/LXC/Ceph/Gluster meson 构建

Influence:
1. 验证 libvirt 在 loong64 上能成功构建并包含 QEMU 驱动
2. 验证构建产物中包含 libvirt_driver_qemu.so
3. 验证构建产物中包含 libvirt_driver_lxc.so
4. 验证存储后端 .so 文件 (rbd, gluster) 被正确生成
5. 确保其他架构 (amd64, arm64 等) 没有回归

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
After enabling QEMU driver for loong64, the build now produces
virt-qemu-qmp-proxy and virt-qemu-sev-validate binaries which
were not listed in any .install file. dh_missing reported them
as uninstalled and aborted the build.

Add these two binaries and their man pages to
libvirt-daemon-driver-qemu.install.

Fixes: dh_missing error for virt-qemu-qmp-proxy, virt-qemu-sev-validate

Log: Fix dh_missing error by adding new QEMU tools to install file

Influence:
1. Verify loong64 build completes without dh_missing errors
2. Verify virt-qemu-qmp-proxy is included in libvirt-daemon-driver-qemu
3. Verify virt-qemu-sev-validate is included in libvirt-daemon-driver-qemu
4. Ensure man pages are properly installed
5. No impact on other architectures

fix: 将缺失的 QEMU 工具添加到 libvirt-daemon-driver-qemu.install

在为 loong64 启用 QEMU 驱动后,构建产物中新增了
virt-qemu-qmp-proxy 和 virt-qemu-sev-validate 二进制文件,
但它们未被任何 .install 文件收录。dh_missing 将其报告为
未安装文件并中止了构建。

将这两个二进制文件及其 man 页面添加到
libvirt-daemon-driver-qemu.install。

修复: 修复 virt-qemu-qmp-proxy、virt-qemu-sev-validate 的
dh_missing 错误

Log: 将新增的 QEMU 工具添加到 install 文件以修复 dh_missing 错误

Influence:
1. 验证 loong64 构建不再出现 dh_missing 错误
2. 验证 virt-qemu-qmp-proxy 已包含在 libvirt-daemon-driver-qemu 中
3. 验证 virt-qemu-sev-validate 已包含在 libvirt-daemon-driver-qemu 中
4. 确保 man 页面被正确安装
5. 对其他架构无影响

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… libvirt-clients-qemu

Remove virt-qemu-qmp-proxy, virt-qemu-sev-validate and their man pages
from libvirt-daemon-driver-qemu.install because these files already belong
to the libvirt-clients-qemu package. This fixes a dpkg error when both
packages are installed:
dpkg: error processing archive libvirt-daemon-driver-qemu (--unpack):
 trying to overwrite '/usr/bin/virt-qemu-qmp-proxy', which is also in
 package libvirt-clients-qemu

Log: Fix dpkg file conflict for virt-qemu-qmp-proxy between qemu driver and clients packages

Influence:
1. Test libvirt-daemon-driver-qemu installation on loong64
2. Test libvirt-clients-qemu installation on loong64
3. Verify both packages can be installed simultaneously without dpkg errors
4. Verify virt-qemu-qmp-proxy and virt-qemu-sev-validate are available after install
5. Ensure no regression on other architectures

fix: 修复 libvirt-daemon-driver-qemu 与 libvirt-clients-qemu 之间的软件包文件冲突

从 libvirt-daemon-driver-qemu.install 中移除 virt-qemu-qmp-proxy、
virt-qemu-sev-validate 及其 man 手册页,因为这些文件已属于
libvirt-clients-qemu 软件包。修复 dpkg 安装时的错误:
dpkg: error processing archive libvirt-daemon-driver-qemu (--unpack):
 trying to overwrite '/usr/bin/virt-qemu-qmp-proxy', which is also in
 package libvirt-clients-qemu

Log: 修复 virt-qemu-qmp-proxy 在 qemu 驱动和客户端包之间的 dpkg 文件冲突

Influence:
1. 在 loong64 上测试 libvirt-daemon-driver-qemu 安装
2. 在 loong64 上测试 libvirt-clients-qemu 安装
3. 验证两个软件包可以同时安装而不出现 dpkg 错误
4. 验证安装后 virt-qemu-qmp-proxy 和 virt-qemu-sev-validate 可用
5. 确保其他架构没有回归

repo: libvirt #master
…ors on loong64

Add virt-qemu-qmp-proxy, virt-qemu-sev-validate and their man pages to
debian/not-installed. On loong64 where libvirt-clients-qemu may be excluded
from the build, these binaries are still compiled by the QEMU driver but
have no package to claim them. Without this entry, dh_missing reports them
as uninstalled and aborts the build.

Log: Add orphaned QEMU tools to debian/not-installed for loong64 build

Influence:
1. Verify loong64 build completes without dh_missing errors
2. Verify non-loong64 build (amd64) still installs these files via libvirt-clients-qemu
3. Verify virt-qemu-qmp-proxy is available after install on all architectures
4. Ensure no regression on other architectures

fix: 将 QEMU 工具添加到 debian/not-installed 以防止 loong64 上的 dh_missing 错误

将 virt-qemu-qmp-proxy、virt-qemu-sev-validate 及其 man 手册页添加到
debian/not-installed。在 loong64 上 libvirt-clients-qemu 可能被排除在构建之外,
但这些二进制文件仍由 QEMU 驱动编译,没有包来认领它们。没有此条目时,
dh_missing 会将它们报告为未安装并中止构建。

Log: 将孤立的 QEMU 工具添加到 debian/not-installed 以修复 loong64 构建

Influence:
1. 验证 loong64 构建不再出现 dh_missing 错误
2. 验证非 loong64 构建 (amd64) 仍通过 libvirt-clients-qemu 安装这些文件
3. 验证所有架构上安装后 virt-qemu-qmp-proxy 可用
4. 确保其他架构没有回归

repo: libvirt #master
@Zeno-sole
Copy link
Copy Markdown
Contributor Author

/integrate

Zeno-sole added 2 commits May 14, 2026 13:55
Add VIR_ARCH_LOONGARCH64 to the architecture enum and all related
infrastructure so that virt-manager shows loongarch64 as an architecture
option on LoongArch hosts. Ported from libvirt 10.7.0 (develop/10.7.0).

Changes include:
- VIR_ARCH_LOONGARCH64 enum value and ARCH_IS_LOONGARCH macro in virarch.h
- loongarch64 string mapping in virarch.c virArchData array
- Host architecture detection for "loongarch64" uname machine name
- Preferred QEMU machine type "virt" for loongarch64 in qemu_capabilities.c
- ACPI guest feature support for loongarch64
- PCIe root controller default for loongarch64 guests in qemu_domain.c
- qemuDomainMachineIsLoongArchVirt() and qemuDomainIsLoongArchVirt() helpers

Log: Add LoongArch64 architecture support ported from 10.7.0

Influence:
1. Verify virt-manager shows loongarch64 architecture option on LoongArch host
2. Verify QEMU driver can create loongarch64 virtual machines
3. Verify loongarch64 VM uses virt machine type and PCIe root controller
4. Verify ACPI feature is enabled for loongarch64 guests
5. Ensure no regression on other architectures

feat: 为 libvirt 添加 LoongArch64 架构支持

将 VIR_ARCH_LOONGARCH64 添加到架构枚举及相关基础设施,
使 virt-manager 在 LoongArch 宿主机上显示 loongarch64 架构选项。
从 libvirt 10.7.0 (develop/10.7.0) 移植。

修改包括:
- virarch.h 中添加 VIR_ARCH_LOONGARCH64 枚举值和 ARCH_IS_LOONGARCH 宏
- virarch.c virArchData 数组中添加 loongarch64 字符串映射
- virArchFromHost() 中添加 loongarch64 宿主架构检测
- qemu_capabilities.c 中添加 loongarch64 首选 QEMU 机型 "virt"
- 为 loongarch64 添加 ACPI 客户机特性支持
- qemu_domain.c 中为 loongarch64 客户机添加 PCIe 根控制器默认值
- 添加 qemuDomainMachineIsLoongArchVirt() 和 qemuDomainIsLoongArchVirt() 辅助函数

Log: 从 10.7.0 移植 LoongArch64 架构支持

Influence:
1. 验证 virt-manager 在 LoongArch 宿主机上显示 loongarch64 架构选项
2. 验证 QEMU 驱动可以创建 loongarch64 虚拟机
3. 验证 loongarch64 虚拟机使用 virt 机型和 PCIe 根控制器
4. 验证 loongarch64 客户机启用 ACPI 特性
5. 确保其他架构没有回归

repo: libvirt #master
The previous deepin13 commit added a malformed LoongArch64 patch that
failed to apply during package build because it was concatenated from
multiple git diffs and contained duplicate file entries.

Regenerate the patch as a proper quilt patch that applies cleanly on
top of all 14 preceding patches. The patch now covers all 17 files
required for full LoongArch64 support:
- virarch.h/virarch.c: architecture enum and host detection
- cpu_loongarch.c/h: CPU driver for LoongArch
- cpu.c, cpu/meson.build: wire up CPU driver
- qemu_capabilities.c: arch string mapping, preferred machine "virt",
  CPU model expansion type, PCI multibus support
- qemu_domain.c/h: virtio defaults, PCIe root, serial 16550A platform
  device, qemuDomainIsLoongArchVirt() helper
- qemu_command.c, qemu_validate.c, qemu_domain_address.c: machine-type
  specific behavior for LoongArch virt
- apparmor/libvirt-qemu.in, virt-aa-helper.c: QEMU binary and firmware
  paths for loongarch64
- virhostcpu.c, virsysinfo.c: host CPU info parsing for LoongArch

Ported from libvirt 10.7.0 (develop/10.7.0 branch).

Log: Fix malformed LoongArch64 support patch by regenerating as clean quilt patch

Influence:
1. Verify patch applies cleanly with quilt push on clean source tree
2. Test dpkg-source build no longer fails with patch application errors
3. Check virt-manager shows loongarch64 as available architecture on LoongArch host
4. Validate QEMU virt machine defaults (PCIe root, virtio-net, virtio-video)
5. Ensure no regression on other architectures

fix: 重新生成 LoongArch64 架构支持补丁

之前的 deepin13 提交添加了一个格式错误的 LoongArch64 补丁,由于它是从
多个 git diff 拼接而成且包含重复的文件条目,导致在打包构建时无法正确应用。

重新生成该补丁为规范的 quilt 补丁,确保其能在前面 14 个补丁之上干净地应用。
补丁现在覆盖了完整 LoongArch64 支持所需的全部 17 个文件:
- virarch.h/virarch.c: 架构枚举和主机检测
- cpu_loongarch.c/h: LoongArch CPU 驱动
- cpu.c, cpu/meson.build: 注册 CPU 驱动
- qemu_capabilities.c: 架构字符串映射、首选机器 "virt"、
  CPU 模型扩展类型、PCI multibus 支持
- qemu_domain.c/h: virtio 默认值、PCIe root、串口 16550A 平台设备、
  qemuDomainIsLoongArchVirt() 辅助函数
- qemu_command.c, qemu_validate.c, qemu_domain_address.c: LoongArch virt
  机器类型的特定行为
- apparmor/libvirt-qemu.in, virt-aa-helper.c: loongarch64 的 QEMU 二进制和固件路径
- virhostcpu.c, virsysinfo.c: LoongArch 主机 CPU 信息解析

从 libvirt 10.7.0 (develop/10.7.0 分支) 移植。

Log: 重新生成 LoongArch64 支持补丁以修复格式错误

Influence:
1. 验证补丁能在干净源码树上通过 quilt push 干净应用
2. 测试 dpkg-source 构建不再出现补丁应用错误
3. 检查 virt-manager 在 LoongArch 主机上显示 loongarch64 可用架构
4. 验证 QEMU virt 机器默认值(PCIe root、virtio-net、virtio-video)
5. 确保其他架构没有回归

repo: libvirt #loongarch64-full-temp
The LoongArch64 architecture support patch changed the error message
for virtio-iommu validation from:
  'only supported with Q35 and ARM Virt machines'
to:
  'only supported with Q35, ARM Virt and LoongArch Virt machines'

However, the corresponding test expected output file was not updated,
causing qemuxml2argvtest to fail during build.

This fix adds a new patch to update the expected error message in the
.err file to match the new error message format.

Log: Fixed qemuxml2argvtest failure due to outdated expected error message

Influence:
1. Test qemuxml2argvtest passes for virtio-iommu-wrong-machine test case
2. Verify build passes on x86_64 architecture
3. Check no other test files need similar updates

repo: libvirt #master
@Zeno-sole Zeno-sole force-pushed the master branch 3 times, most recently from cc66f13 to 4de93ea Compare May 15, 2026 02:31
        Add ACPI default enable for LoongArch64 virt machines to fix black
        screen issue after GRUB boot. LoongArch virt requires ACPI for proper
        display initialization - without ACPI, the guest DRM driver cannot
        initialize the display controller.

        The patch modifies qemuDomainDefAddDefaultDevices() to set
        FEATURE_ACPI to VIR_TRISTATE_SWITCH_ON for LoongArch virt machines.
        This aligns with how libvirt 10.7.0 handles LoongArch display support.

        Log: Enable ACPI by default for LoongArch virt to fix display initialization

        Influence:
        1. Test LoongArch64 VM display works correctly after GRUB boot
        2. Verify ACPI is enabled in QEMU command line for LoongArch virt
        3. Check display controller initialization in guest dmesg logs
        4. Validate no regression on other architectures (x86, ARM, RISC-V)
        5. Test virt-manager can create and run LoongArch64 VMs with display

        feat: 为 LoongArch virt 机器默认启用 ACPI

        为 LoongArch64 virt 机器添加 ACPI 默认启用,修复 GRUB 启动后黑屏问题。
        LoongArch virt 需要 ACPI 来正确初始化显示 - 没有 ACPI,客 DRM 驱动
        无法初始化显示控制器。

        该补丁修改 qemuDomainDefAddDefaultDevices() 为 LoongArch virt 机器
        设置 FEATURE_ACPI 为 VIR_TRISTATE_SWITCH_ON。
        这与 libvirt 10.7.0 处理 LoongArch 显示支持的方式一致。

        Log: 为 LoongArch virt 默认启用 ACPI 以修复显示初始化

        Influence:
        1. 测试 LoongArch64 虚拟机显示在 GRUB 启动后正常工作
        2. 验证 ACPI 在 LoongArch virt 的 QEMU 命令行中已启用
        3. 在客 dmesg 日志中检查显示控制器初始化
        4. 验证其他架构无回归(x86, ARM, RISC-V)
        5. 测试 virt-manager 可以创建并运行带显示的 LoongArch64 虚拟机

        repo: libvirt #master
@deepin-ci-robot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: wxphaha
Once this PR has been reviewed and has the lgtm label, please ask for approval from zeno-sole. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@Zeno-sole Zeno-sole merged commit c5958a7 into deepin-community:master May 15, 2026
6 checks passed
@Zeno-sole
Copy link
Copy Markdown
Contributor Author

/integrate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants