From e7c307991d9d3d3b97ae47875473dd1660c02a49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Tue, 16 Jan 2018 10:06:41 +0100 Subject: [PATCH] CPU flags: add spec-ctrl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to allow VMs to use IBRS/IBPB on systems with patched microcode Signed-off-by: Fabian Grünbichler --- PVE/QemuServer.pm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 0304f255..e33a0ab4 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -149,6 +149,8 @@ my $cpu_vendor_list = { max => 'default', }; +my $cpu_flag = qr/[+-](pcid|spec-ctrl)/; + my $cpu_fmt = { cputype => { description => "Emulated CPU type.", @@ -164,14 +166,13 @@ my $cpu_fmt = { default => 0 }, flags => { - description => "Override CPU flags. Currently only the 'pcid' flag is supported." - . " Use '+pcid' or '-pcid' to enable or disable." - . " This takes precedence over flags coming from the cpu type or changed implicitly via the OS type.", - format_description => 'flaglist', + description => "List of additional CPU flags separated by ';'." + . " Use '+FLAG' to enable, '-FLAG' to disable a flag." + . " Currently supported flags: 'pcid', 'spec-ctrl'.", + format_description => '+FLAG[;-FLAG...]', type => 'string', - pattern => '[+-]pcid', + pattern => qr/$cpu_flag(;$cpu_flag)*/, optional => 1, - default => '', }, }; @@ -3105,7 +3106,7 @@ sub config_to_command { $kvm_off = 1 if $cpuconf->{hidden}; if (defined(my $flags = $cpuconf->{flags})) { - push @$cpuFlags, $flags; + push @$cpuFlags, split(";", $flags); } }