From: Fiona Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH qemu-server 12/19] machine: get vm machine: fallback to creation QEMU version for windows starting with 9.1
Date: Fri, 3 Jan 2025 16:57:55 +0100 [thread overview]
Message-ID: <20250103155802.143669-13-f.ebner@proxmox.com> (raw)
In-Reply-To: <20250103155802.143669-1-f.ebner@proxmox.com>
Starting from QEMU 9.1, pin to the creation version instead. Support
for machine version 5.1 is expected to drop with QEMU 11.1 and it
would still be good to handle Windows VMs that do not have explicit
machine version for whatever reason. For example, explicitly setting
the machine without a version on the CLI/API after creation is one way
to end up with such a machine.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
PVE/QemuServer/Machine.pm | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/PVE/QemuServer/Machine.pm b/PVE/QemuServer/Machine.pm
index 915913c0..679d69c7 100644
--- a/PVE/QemuServer/Machine.pm
+++ b/PVE/QemuServer/Machine.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use PVE::QemuServer::Helpers;
+use PVE::QemuServer::MetaInfo;
use PVE::QemuServer::Monitor;
use PVE::JSONSchema qw(get_standard_option parse_property_string print_property_string);
@@ -221,11 +222,23 @@ sub get_vm_machine {
if (!$machine || $machine =~ m/^(?:pc|q35|virt)$/) {
my $kvmversion //= PVE::QemuServer::Helpers::kvm_user_version();
- # we must pin Windows VMs without a specific version to 5.1, as 5.2 fixed a bug in ACPI
- # layout which confuses windows quite a bit and may result in various regressions..
+ # we must pin Windows VMs without a specific version and no meta info about creation QEMU to
+ # 5.1, as 5.2 fixed a bug in ACPI layout which confuses windows quite a bit and may result
+ # in various regressions..
# see: https://lists.gnu.org/archive/html/qemu-devel/2021-02/msg08484.html
+ # Starting from QEMU 9.1, pin to the creation version instead. Support for 5.1 is expected
+ # to drop with QEMU 11.1 and it would still be good to handle Windows VMs that do not have
+ # an explicit machine version for whatever reason.
if (PVE::QemuServer::Helpers::windows_version($conf->{ostype})) {
- $machine = windows_get_pinned_machine_version($machine, '5.1', $kvmversion);
+ my $base_version = '5.1';
+ # TODO PVE 10 - die early if there is a Windows VM both without explicit machine version
+ # and without meta info.
+ if (my $meta = PVE::QemuServer::MetaInfo::parse_meta_info($conf->{meta})) {
+ $base_version = $meta->{'creation-qemu'}
+ if PVE::QemuServer::Helpers::min_version($meta->{'creation-qemu'}, 9, 1);
+ ($base_version) = ($base_version =~ m/^(\d+.\d+)/); # need only major.minor
+ }
+ $machine = windows_get_pinned_machine_version($machine, $base_version, $kvmversion);
}
$arch //= 'x86_64';
$machine ||= default_machine_for_arch($arch);
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-01-03 15:59 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-03 15:57 [pve-devel] [PATCH qemu/qemu-server/docs 00/19] adapt to changes in QEMU machine version deprecation/removal Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu 01/19] weaken machine version deprecation warning Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 02/19] machine: drop unused parameter from assert_valid_machine_property() helper Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 03/19] move get_command_for_arch() helper to helpers module Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 04/19] helpers: improve name for variable for mapping arch to binary Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 05/19] move kvm_user_version() function to helpers module Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 06/19] move get_vm_arch() helper " Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 07/19] machine: add default_machine_for_arch() helper Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 08/19] move get_installed_machine_version() helper to machine module Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 09/19] move windows_get_pinned_machine_version() function " Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 10/19] move get_vm_machine() " Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 11/19] move meta information handling to its own module Fiona Ebner
2025-01-03 15:57 ` Fiona Ebner [this message]
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 13/19] machine: add check_and_pin_machine_string() helper Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [RFC qemu-server 14/19] api: update vm config: pin machine version when switching to windows os type Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 15/19] machine: log informational line when pinning machine version for Windows guest Fiona Ebner
2025-01-03 15:57 ` [pve-devel] [PATCH qemu-server 16/19] machine: rename machine_version() function to machine_version_at_least() Fiona Ebner
2025-01-03 15:58 ` [pve-devel] [PATCH qemu-server 17/19] machine: adapt to changes in QEMU machine version deprecation/removal Fiona Ebner
2025-01-03 15:58 ` [pve-devel] [PATCH qemu-server 18/19] machine: code cleanup: avoid superfluous augmented assignment operator Fiona Ebner
2025-01-03 15:58 ` [pve-devel] [PATCH docs 19/19] qm: machine version: document support in PVE Fiona Ebner
2025-01-04 7:58 ` [pve-devel] [PATCH qemu/qemu-server/docs 00/19] adapt to changes in QEMU machine version deprecation/removal Dietmar Maurer
2025-01-04 8:00 ` Dietmar Maurer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250103155802.143669-13-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox