public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [PATCH qemu-server 1/2] tests: improve multiarch build support
@ 2026-02-03 14:16 Dominik Csapak
  2026-02-03 14:16 ` [PATCH qemu-server 2/2] tests: cfg2cmd: add some architecture tests Dominik Csapak
  2026-02-03 15:01 ` [PATCH qemu-server 1/2] tests: improve multiarch build support Thomas Lamprecht
  0 siblings, 2 replies; 5+ messages in thread
From: Dominik Csapak @ 2026-02-03 14:16 UTC (permalink / raw)
  To: pve-devel

The CPUConfig module sets the local 'host_arch' on loading, so instead
to try to mock all subs that access this variable, provide a setter only
intended for tests (and warn when using this).

Also, we have to override the 'get_host_arch' in the Helpers module too.

Without these changes, the config to command tests fail when building on
non-x86 hosts.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
not sure about the 'setter hack', which can be partially deleted when
we'll switch to using PVE::Tools::get_host_arch again, but we have to
keep the code changing the cpu_models_by_arch hash.

This patch requires these patches from fiona:
https://lore.proxmox.com/pve-devel/20260129131021.118199-1-f.ebner@proxmox.com/

 src/PVE/QemuServer/CPUConfig.pm      | 12 ++++++++++++
 src/test/run_config2command_tests.pl | 13 +++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/src/PVE/QemuServer/CPUConfig.pm b/src/PVE/QemuServer/CPUConfig.pm
index 32ec4954..686bbdc0 100644
--- a/src/PVE/QemuServer/CPUConfig.pm
+++ b/src/PVE/QemuServer/CPUConfig.pm
@@ -1230,6 +1230,18 @@ sub get_intel_tdx_object {
     return $tdx_object;
 }
 
+# CAUTION: for tests only, DO NOT USE outside of tests!
+# sets the package gloabl $host_arch value, and modifies the $cpu_models_by_arch
+# so that the 'host' model is available only in the newly set $arch
+sub set_host_arch($) {
+    my ($arch) = @_;
+    warn "CAUTION: use of 'set_host_arch' only intended in tests!\n";
+
+    delete $cpu_models_by_arch->{$host_arch}->{host};
+    $host_arch = $arch;
+    $cpu_models_by_arch->{$host_arch}->{host} = 'default';
+}
+
 __PACKAGE__->register();
 __PACKAGE__->init();
 
diff --git a/src/test/run_config2command_tests.pl b/src/test/run_config2command_tests.pl
index 4c872d1c..b8a2cf7e 100755
--- a/src/test/run_config2command_tests.pl
+++ b/src/test/run_config2command_tests.pl
@@ -235,6 +235,8 @@ sub parse_test($config_fn) {
         $testname = "'$testname' - $desc";
     }
     $current_test->{testname} = $testname;
+
+    PVE::QemuServer::CPUConfig::set_host_arch($current_test->{arch} // 'x86_64');
 }
 
 sub get_test_qemu_version {
@@ -264,6 +266,14 @@ $qemu_server_module->mock(
     },
 );
 
+my $qemu_server_helpers_module;
+$qemu_server_helpers_module = Test::MockModule->new('PVE::QemuServer::Helpers');
+$qemu_server_helpers_module->mock(
+    get_host_arch => sub() {
+        return $current_test->{host_arch} // 'x86_64';
+    },
+);
+
 my $storage_module = Test::MockModule->new("PVE::Storage");
 $storage_module->mock(
     activate_volumes => sub {
@@ -582,6 +592,9 @@ sub diff($a, $b) {
 $SIG{__WARN__} = sub {
     my $warning = shift;
     chomp $warning;
+    if ($warning =~ m/^CAUTION: use of 'set_host/) {
+        return;
+    }
     if (my $warn_expect = $current_test->{expect_warning}) {
         if ($warn_expect ne $warning) {
             fail($current_test->{testname});
-- 
2.47.3





^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH qemu-server 2/2] tests: cfg2cmd: add some architecture tests
  2026-02-03 14:16 [PATCH qemu-server 1/2] tests: improve multiarch build support Dominik Csapak
@ 2026-02-03 14:16 ` Dominik Csapak
  2026-02-03 15:01 ` [PATCH qemu-server 1/2] tests: improve multiarch build support Thomas Lamprecht
  1 sibling, 0 replies; 5+ messages in thread
From: Dominik Csapak @ 2026-02-03 14:16 UTC (permalink / raw)
  To: pve-devel

one for manually setting
  arch: aarch64

in the config for an 'x86_64' host architecture, and one where
we don't have 'arch' set in the config on an aarch64 host.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
also needs fionas series:
https://lore.proxmox.com/pve-devel/20260129131021.118199-1-f.ebner@proxmox.com/

and my fixup for the s3/s4:
https://lore.proxmox.com/pve-devel/20260203141202.3567520-1-d.csapak@proxmox.com/T/#u
(otherwise the test result looks different)

 src/test/Makefile                             |  5 ++-
 src/test/cfg2cmd/aarch64/simple-arm-host.conf | 17 ++++++++
 .../cfg2cmd/aarch64/simple-arm-host.conf.cmd  | 41 +++++++++++++++++++
 src/test/cfg2cmd/aarch64/simple-arm.conf      | 17 ++++++++
 src/test/cfg2cmd/aarch64/simple-arm.conf.cmd  | 41 +++++++++++++++++++
 5 files changed, 120 insertions(+), 1 deletion(-)
 create mode 100644 src/test/cfg2cmd/aarch64/simple-arm-host.conf
 create mode 100644 src/test/cfg2cmd/aarch64/simple-arm-host.conf.cmd
 create mode 100644 src/test/cfg2cmd/aarch64/simple-arm.conf
 create mode 100644 src/test/cfg2cmd/aarch64/simple-arm.conf.cmd

diff --git a/src/test/Makefile b/src/test/Makefile
index 2ef9073a..cf589f41 100644
--- a/src/test/Makefile
+++ b/src/test/Makefile
@@ -1,6 +1,6 @@
 all: test
 
-test: test_snapshot test_cfg_to_cmd test_pci_addr_conflicts test_pci_reservation test_qemu_img_convert test_migration test_restore_config test_parse_config
+test: test_snapshot test_cfg_to_cmd test_cfg_to_cmd_aarch64 test_pci_addr_conflicts test_pci_reservation test_qemu_img_convert test_migration test_restore_config test_parse_config
 
 test_snapshot: run_snapshot_tests.pl
 	./run_snapshot_tests.pl
@@ -9,6 +9,9 @@ test_snapshot: run_snapshot_tests.pl
 test_cfg_to_cmd: run_config2command_tests.pl cfg2cmd/*.conf
 	perl -I../ ./run_config2command_tests.pl
 
+test_cfg_to_cmd_aarch64: run_config2command_tests.pl cfg2cmd/aarch64/*.conf
+	perl -I../ ./run_config2command_tests.pl cfg2cmd/aarch64
+
 test_qemu_img_convert: run_qemu_img_convert_tests.pl
 	perl -I../ ./run_qemu_img_convert_tests.pl
 
diff --git a/src/test/cfg2cmd/aarch64/simple-arm-host.conf b/src/test/cfg2cmd/aarch64/simple-arm-host.conf
new file mode 100644
index 00000000..1488dbf5
--- /dev/null
+++ b/src/test/cfg2cmd/aarch64/simple-arm-host.conf
@@ -0,0 +1,17 @@
+# TEST: Simple test for a basic configuration with aarch64 set as the host architecture
+# HOST_ARCH: aarch64
+bootdisk: scsi0
+bios: ovmf
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0
+numa: 0
+ostype: l26
+scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K
+scsihw: virtio-scsi-pci
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
+efidisk0: local:8006/vm-8006-disk-1.qcow2,efitype=4m
diff --git a/src/test/cfg2cmd/aarch64/simple-arm-host.conf.cmd b/src/test/cfg2cmd/aarch64/simple-arm-host.conf.cmd
new file mode 100644
index 00000000..ec989a55
--- /dev/null
+++ b/src/test/cfg2cmd/aarch64/simple-arm-host.conf.cmd
@@ -0,0 +1,41 @@
+/usr/bin/kvm \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -object '{"id":"throttle-drive-efidisk0","limits":{},"qom-type":"throttle-group"}' \
+  -blockdev '{"driver":"raw","file":{"driver":"file","filename":"/usr/share/pve-edk2-firmware//AAVMF_CODE.fd"},"node-name":"pflash0","read-only":true}' \
+  -blockdev '{"detect-zeroes":"on","discard":"ignore","driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":false,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-1.qcow2","node-name":"e4abf08bba72d3a54b87a58d2f50906","read-only":false},"node-name":"f4abf08bba72d3a54b87a58d2f50906","read-only":false},"node-name":"drive-efidisk0","read-only":false,"throttle-group":"throttle-drive-efidisk0"}' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu cortex-a57 \
+  -m 768 \
+  -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pcie.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pcie.0,addr=0x1f' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'usb-ehci,id=ehci,bus=pcie.0,addr=0x1' \
+  -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' \
+  -device 'usb-kbd,id=keyboard,bus=ehci.0,port=2' \
+  -device 'virtio-gpu,id=vga,bus=pcie.0,addr=0x2' \
+  -device 'virtio-serial,id=spice,bus=pcie.0,addr=0x9' \
+  -chardev 'spicevmc,id=vdagent,name=vdagent' \
+  -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \
+  -spice 'tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x3,free-page-reporting=on' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \
+  -device 'virtio-scsi-pci,id=scsihw0,bus=pcie.0,addr=0x5' \
+  -blockdev '{"detect-zeroes":"unmap","discard":"unmap","driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"ecd04be4259153b8293415fefa2a84c","read-only":false},"node-name":"fcd04be4259153b8293415fefa2a84c","read-only":false},"node-name":"drive-scsi0","read-only":false,"throttle-group":"throttle-drive-scsi0"}' \
+  -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,device_id=drive-scsi0,bootindex=100,write-cache=on' \
+  -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown' \
+  -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pcie.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300,host_mtu=1500' \
+  -machine 'pflash0=pflash0,pflash1=drive-efidisk0,accel=tcg,type=virt+pve0'
diff --git a/src/test/cfg2cmd/aarch64/simple-arm.conf b/src/test/cfg2cmd/aarch64/simple-arm.conf
new file mode 100644
index 00000000..6b5f3dd0
--- /dev/null
+++ b/src/test/cfg2cmd/aarch64/simple-arm.conf
@@ -0,0 +1,17 @@
+# TEST: Simple test for a basic configuration with aarch64 set as architecture
+arch: aarch64
+bootdisk: scsi0
+bios: ovmf
+cores: 3
+ide2: none,media=cdrom
+memory: 768
+name: simple
+net0: virtio=A2:C0:43:77:08:A0,bridge=vmbr0
+numa: 0
+ostype: l26
+scsi0: local:8006/vm-8006-disk-0.qcow2,discard=on,size=104858K
+scsihw: virtio-scsi-pci
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
+sockets: 1
+vmgenid: c773c261-d800-4348-9f5d-167fadd53cf8
+efidisk0: local:8006/vm-8006-disk-0.qcow2,efitype=4m
diff --git a/src/test/cfg2cmd/aarch64/simple-arm.conf.cmd b/src/test/cfg2cmd/aarch64/simple-arm.conf.cmd
new file mode 100644
index 00000000..5b32e91c
--- /dev/null
+++ b/src/test/cfg2cmd/aarch64/simple-arm.conf.cmd
@@ -0,0 +1,41 @@
+/usr/bin/qemu-system-aarch64 \
+  -id 8006 \
+  -name 'simple,debug-threads=on' \
+  -no-shutdown \
+  -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server=on,wait=off' \
+  -mon 'chardev=qmp,mode=control' \
+  -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect-ms=5000' \
+  -mon 'chardev=qmp-event,mode=control' \
+  -pidfile /var/run/qemu-server/8006.pid \
+  -daemonize \
+  -smbios 'type=1,uuid=7b10d7af-b932-4c66-b2c3-3996152ec465' \
+  -object '{"id":"throttle-drive-efidisk0","limits":{},"qom-type":"throttle-group"}' \
+  -blockdev '{"driver":"raw","file":{"driver":"file","filename":"/usr/share/pve-edk2-firmware//AAVMF_CODE.fd"},"node-name":"pflash0","read-only":true}' \
+  -blockdev '{"detect-zeroes":"on","discard":"ignore","driver":"throttle","file":{"cache":{"direct":false,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":false,"no-flush":false},"detect-zeroes":"on","discard":"ignore","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"ea05d68a0ec0fe4a8d93dde338f7405","read-only":false},"node-name":"fa05d68a0ec0fe4a8d93dde338f7405","read-only":false},"node-name":"drive-efidisk0","read-only":false,"throttle-group":"throttle-drive-efidisk0"}' \
+  -smp '3,sockets=1,cores=3,maxcpus=3' \
+  -nodefaults \
+  -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \
+  -vnc 'unix:/var/run/qemu-server/8006.vnc,password=on' \
+  -cpu cortex-a57 \
+  -m 768 \
+  -object '{"id":"throttle-drive-scsi0","limits":{},"qom-type":"throttle-group"}' \
+  -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pcie.0,addr=0x1e' \
+  -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pcie.0,addr=0x1f' \
+  -device 'vmgenid,guid=c773c261-d800-4348-9f5d-167fadd53cf8' \
+  -device 'usb-ehci,id=ehci,bus=pcie.0,addr=0x1' \
+  -device 'usb-tablet,id=tablet,bus=ehci.0,port=1' \
+  -device 'usb-kbd,id=keyboard,bus=ehci.0,port=2' \
+  -device 'virtio-gpu,id=vga,bus=pcie.0,addr=0x2' \
+  -device 'virtio-serial,id=spice,bus=pcie.0,addr=0x9' \
+  -chardev 'spicevmc,id=vdagent,name=vdagent' \
+  -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' \
+  -spice 'tls-port=61000,addr=127.0.0.1,tls-ciphers=HIGH,seamless-migration=on' \
+  -device 'virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x3,free-page-reporting=on' \
+  -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \
+  -device 'ide-cd,bus=ide.1,unit=0,id=ide2,bootindex=200' \
+  -device 'virtio-scsi-pci,id=scsihw0,bus=pcie.0,addr=0x5' \
+  -blockdev '{"detect-zeroes":"unmap","discard":"unmap","driver":"throttle","file":{"cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"qcow2","file":{"aio":"io_uring","cache":{"direct":true,"no-flush":false},"detect-zeroes":"unmap","discard":"unmap","driver":"file","filename":"/var/lib/vz/images/8006/vm-8006-disk-0.qcow2","node-name":"ecd04be4259153b8293415fefa2a84c","read-only":false},"node-name":"fcd04be4259153b8293415fefa2a84c","read-only":false},"node-name":"drive-scsi0","read-only":false,"throttle-group":"throttle-drive-scsi0"}' \
+  -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,device_id=drive-scsi0,bootindex=100,write-cache=on' \
+  -netdev 'type=tap,id=net0,ifname=tap8006i0,script=/usr/libexec/qemu-server/pve-bridge,downscript=/usr/libexec/qemu-server/pve-bridgedown' \
+  -device 'virtio-net-pci,mac=A2:C0:43:77:08:A0,netdev=net0,bus=pcie.0,addr=0x12,id=net0,rx_queue_size=1024,tx_queue_size=256,bootindex=300,host_mtu=1500' \
+  -machine 'pflash0=pflash0,pflash1=drive-efidisk0,accel=tcg,type=virt+pve0'
-- 
2.47.3





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH qemu-server 1/2] tests: improve multiarch build support
  2026-02-03 14:16 [PATCH qemu-server 1/2] tests: improve multiarch build support Dominik Csapak
  2026-02-03 14:16 ` [PATCH qemu-server 2/2] tests: cfg2cmd: add some architecture tests Dominik Csapak
@ 2026-02-03 15:01 ` Thomas Lamprecht
  2026-02-03 15:04   ` Dominik Csapak
  1 sibling, 1 reply; 5+ messages in thread
From: Thomas Lamprecht @ 2026-02-03 15:01 UTC (permalink / raw)
  To: Dominik Csapak, pve-devel

Am 03.02.26 um 15:21 schrieb Dominik Csapak:
> The CPUConfig module sets the local 'host_arch' on loading, so instead
> to try to mock all subs that access this variable, provide a setter only
> intended for tests (and warn when using this).

Would be nicer to get a local get_host_arch that just return's the PVE::Tools'
method result, as we then could override the getter without having to worry
about this method being misused in the future by accident.

Moving the CPU model initialization into a sub, like suggested in my reply
to Fiona's patches,  and redoing that on a simulated switch of the host
architecture would be also the slightly nicer interface IMO.

> 
> Also, we have to override the 'get_host_arch' in the Helpers module too.

The helper module has no such method? There is only get_vm_arch there and
some usage of PVE::Tools' get_host_arch? Or is it because we import the one
from PVE::Tools there?





^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH qemu-server 1/2] tests: improve multiarch build support
  2026-02-03 15:01 ` [PATCH qemu-server 1/2] tests: improve multiarch build support Thomas Lamprecht
@ 2026-02-03 15:04   ` Dominik Csapak
  2026-02-03 15:09     ` Thomas Lamprecht
  0 siblings, 1 reply; 5+ messages in thread
From: Dominik Csapak @ 2026-02-03 15:04 UTC (permalink / raw)
  To: Thomas Lamprecht, pve-devel



On 2/3/26 3:59 PM, Thomas Lamprecht wrote:
> Am 03.02.26 um 15:21 schrieb Dominik Csapak:
>> The CPUConfig module sets the local 'host_arch' on loading, so instead
>> to try to mock all subs that access this variable, provide a setter only
>> intended for tests (and warn when using this).
> 
> Would be nicer to get a local get_host_arch that just return's the PVE::Tools'
> method result, as we then could override the getter without having to worry
> about this method being misused in the future by accident.
> 
> Moving the CPU model initialization into a sub, like suggested in my reply
> to Fiona's patches,  and redoing that on a simulated switch of the host
> architecture would be also the slightly nicer interface IMO.
> 

ok, makes sense, i'd do that in a v2

>>
>> Also, we have to override the 'get_host_arch' in the Helpers module too.
> 
> The helper module has no such method? There is only get_vm_arch there and
> some usage of PVE::Tools' get_host_arch? Or is it because we import the one
> from PVE::Tools there?
> 

yes, exactly. The importing and using of a sub means that when mocking
we have to mock it in the module we're using it.

alternatively, we could write out 'PVE::Tools::get_host_arch' everywhere
without importing, then we'd only have to mock once
(but makes the code slightly less readable)




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH qemu-server 1/2] tests: improve multiarch build support
  2026-02-03 15:04   ` Dominik Csapak
@ 2026-02-03 15:09     ` Thomas Lamprecht
  0 siblings, 0 replies; 5+ messages in thread
From: Thomas Lamprecht @ 2026-02-03 15:09 UTC (permalink / raw)
  To: Dominik Csapak, pve-devel

Am 03.02.26 um 16:03 schrieb Dominik Csapak:
> 
> alternatively, we could write out 'PVE::Tools::get_host_arch' everywhere
> without importing, then we'd only have to mock once
> (but makes the code slightly less readable)

could combine that with adding a local helper with the same name though.
While I prefer having no extra code for testing, it's not always possible
and a simple getter would be at least save to have.




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-02-03 15:09 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-03 14:16 [PATCH qemu-server 1/2] tests: improve multiarch build support Dominik Csapak
2026-02-03 14:16 ` [PATCH qemu-server 2/2] tests: cfg2cmd: add some architecture tests Dominik Csapak
2026-02-03 15:01 ` [PATCH qemu-server 1/2] tests: improve multiarch build support Thomas Lamprecht
2026-02-03 15:04   ` Dominik Csapak
2026-02-03 15:09     ` Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal