From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 6017C1FF142 for ; Mon, 02 Mar 2026 14:28:32 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4B17F31D5E; Mon, 2 Mar 2026 14:29:23 +0100 (CET) From: Dominik Csapak To: pve-devel@lists.proxmox.com Subject: [PATCH manager v3 00/18] enable qemu vm architecture selection Date: Mon, 2 Mar 2026 14:20:48 +0100 Message-ID: <20260302132913.3169037-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.035 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: 4N75AO3HHQ3ZX5S4ZWRARRCWB54FVDE2 X-Message-ID-Hash: 4N75AO3HHQ3ZX5S4ZWRARRCWB54FVDE2 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: i already sent the pvestatd patch as v3 separately, but it's included here for convenience. changes from v2: * use Tools get_host_arch instead of POSIX::uname() * fix adding the arch only when it's non-x86 * rename variable and api property to 'host-arch' * adapt ui to host-arch change * rename some functions in www/manager6/qemu/Architecture.js for better clarity (e.g. getNodeArchitecture -> getGuestArchitecture) and change the call sites in all patches accordingly * fix some typos * fix one small bug with fireEvent (forgot to add 'me' as the first parameter) 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 (18): 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 ui: qemu: set arch parameter for fetch machine types from api PVE/API2/Cluster.pm | 9 ++ PVE/Service/pvestatd.pm | 9 ++ 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 | 106 +++++++++++++++ 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 | 78 ++++++++--- 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, 813 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