From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 6BC931FF137 for ; Tue, 03 Feb 2026 11:21:02 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id ECD8618D00; Tue, 3 Feb 2026 11:21:25 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Subject: [PATCH manager v2 00/17] enable qemu vm architecture selection Date: Tue, 3 Feb 2026 11:00:05 +0100 Message-ID: <20260203102118.1430545-1-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.032 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 6AIGZZW2X3JSCTTZR6DZA2TJ5IAYBPA3 X-Message-ID-Hash: 6AIGZZW2X3JSCTTZR6DZA2TJ5IAYBPA3 X-MailFrom: d.csapak@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This series brings the emulated aarch64 vms to the gui. This could be configured on the api only previously. The code also handles if the host has a non-x86 architecture, and is generally structured in a way that should make it (relatively) easy to add other architectures in the future. Some fields/panels needed adaptions to hide some values or change some defaults, since not every combination that can be configured makes sense. (e.g. seabios on aarch64 cannot work currently) Generally the backend allows many combinations that don't make sense on all architectures, so i tried to limit the users here to the 'correct' ones, but we should think about limiting them in the backend too. Also, the backend made some inconsistent choices with different architectures, such as the default controller changes with the architecture, but things like 'bios' or 'scsihw' do not. So I worked around these things a bit differently. other nice to haves not yet done, that also invovle changing the backend: * 'virt' machine support in our api, so one can choose older versions * allow 'pcie' passthrough on 'virt' NOTE: requires fionas series for qemu-server[0] to work properly for the cpu models + flags The series is a very big rewrite from the v1, so it probably won't help by comparing with the v1, but here is a changelog nonetheless: changes from v1: * refactored the filtering of KVComboBox into a FilteredKVComboBox * refactored architecture specific things into PVE.qemu.Architecture this makes it much easier in the future to add new architectures * refactored the wizard logic for ostype + iso into it's own panel this makes the os type selector much simpler and easier to follow * changed the way the wizard sets the architecture in the viewmodel, namely it's now always a valid value, and we don't have to calculate from the selected node everywhere * added handling of cd roms in the wizard * added handling of cpu model + flags * fixed leftover hunk in PVE/API2/NodeConfig * probably more... Dominik Csapak (17): api/pvestatd: broadcast and expose non-x86 host architecture ui: qemu: wizard: refactor ostype and cd selector into an OSPanel ui: form: add filtered KVComboBox ui: resource store: add architecture field ui: qemu: add architecture specific defaults and helpers ui: qemu: add architecture field in wizard and hardware view ui: qemu: make scsi hw selector architecture aware ui: qemu: make osdefaults architecture aware ui: qemu: make os type selector architecture aware ui: qemu: make machine panels/fields architecture aware ui: qemu: make bios selector architecture aware ui: qemu: make sortByPreviousUsage architecture aware ui: qemu: wizard: use defaults to populate machine and bios ui: qemu: wizard: make iso confid architecture specific ui: qemu: make bus selector architecture aware ui: qemu: make processor edit architecture aware ui: qemu: change ui default for cpu model PVE/API2/Cluster.pm | 9 ++ PVE/Service/pvestatd.pm | 10 ++ www/manager6/Makefile | 4 + www/manager6/Utils.js | 21 ++- www/manager6/data/ResourceStore.js | 6 + www/manager6/form/BusTypeSelector.js | 4 +- www/manager6/form/CPUModelSelector.js | 39 ++++++ www/manager6/form/ControllerSelector.js | 26 +++- www/manager6/form/FilteredKVComboBox.js | 67 +++++++++ www/manager6/form/QemuBiosSelector.js | 18 ++- www/manager6/form/QemuMachineSelector.js | 13 ++ www/manager6/form/ScsiHwSelector.js | 6 +- www/manager6/form/VMCPUFlagSelector.js | 13 ++ www/manager6/panel/MultiDiskEdit.js | 14 +- www/manager6/qemu/Architecture.js | 104 ++++++++++++++ www/manager6/qemu/CDEdit.js | 4 + www/manager6/qemu/CIDriveEdit.js | 2 + www/manager6/qemu/CreateWizard.js | 81 +++++++---- www/manager6/qemu/HDEdit.js | 3 + www/manager6/qemu/HardwareView.js | 16 ++- www/manager6/qemu/MachineEdit.js | 68 +++++++--- www/manager6/qemu/MultiHDEdit.js | 8 +- www/manager6/qemu/NetworkEdit.js | 6 +- www/manager6/qemu/OSDefaults.js | 82 +++++++++--- www/manager6/qemu/OSPanel.js | 164 +++++++++++++++++++++++ www/manager6/qemu/OSTypeEdit.js | 126 ++++------------- www/manager6/qemu/Options.js | 4 +- www/manager6/qemu/ProcessorEdit.js | 30 +++++ www/manager6/qemu/QemuBiosEdit.js | 29 +++- www/manager6/qemu/ScsiHwEdit.js | 1 + www/manager6/qemu/SystemEdit.js | 26 ++-- www/manager6/window/GuestDiskReassign.js | 1 + 32 files changed, 802 insertions(+), 203 deletions(-) create mode 100644 www/manager6/form/FilteredKVComboBox.js create mode 100644 www/manager6/form/QemuMachineSelector.js create mode 100644 www/manager6/qemu/Architecture.js create mode 100644 www/manager6/qemu/OSPanel.js -- 2.47.3