[pve-devel] [PATCH] add win81 ostype and enable +lahf_lm cpu flag needed for this os
Alexandre Derumier
aderumier at odiso.com
Thu Nov 14 11:09:10 CET 2013
see
http://forum.proxmox.com/threads/16206-Windows-Server-2012-R2-and-0x0000005D-Error
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
PVE/QemuServer.pm | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index d9896c1..adcccd2 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -245,7 +245,7 @@ my $confdesc = {
ostype => {
optional => 1,
type => 'string',
- enum => [qw(other wxp w2k w2k3 w2k8 wvista win7 win8 l24 l26 solaris)],
+ enum => [qw(other wxp w2k w2k3 w2k8 wvista win7 win8 win81 l24 l26 solaris)],
description => <<EODESC,
Used to enable special optimization/features for specific
operating systems:
@@ -258,12 +258,13 @@ w2k8 => Microsoft Windows 2008
wvista => Microsoft Windows Vista
win7 => Microsoft Windows 7
win8 => Microsoft Windows 8/2012
+win81 => Microsoft Windows 8.1/2012R2
l24 => Linux 2.4 Kernel
l26 => Linux 2.6/3.X Kernel
solaris => solaris/opensolaris/openindiania kernel
other|l24|l26|solaris ... no special behaviour
-wxp|w2k|w2k3|w2k8|wvista|win7|win8 ... use --localtime switch
+wxp|w2k|w2k3|w2k8|wvista|win7|win8|win81 ... use --localtime switch
EODESC
},
boot => {
@@ -337,7 +338,7 @@ EODESC
vga => {
optional => 1,
type => 'string',
- description => "Select VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use option 'std' or 'vmware'. Default is 'std' for win8/win7/w2k8, and 'cirrur' for other OS types. Option 'qxl' enables the SPICE display sever. You can also run without any graphic card using a serial devive as terminal.",
+ description => "Select VGA type. If you want to use high resolution modes (>= 1280x1024x16) then you should use option 'std' or 'vmware'. Default is 'std' for win8.1/win8/win7/w2k8, and 'cirrur' for other OS types. Option 'qxl' enables the SPICE display sever. You can also run without any graphic card using a serial devive as terminal.",
enum => [qw(std cirrus vmware qxl serial0 serial1 serial2 serial3 qxl2 qxl3 qxl4)],
},
watchdog => {
@@ -717,6 +718,7 @@ sub os_list_description {
wvista => 'Windows Vista',
win7 => 'Windows 7',
win8 => 'Windows 8/2012',
+ win81 => 'Windows 8.1/2012R2',
l24 => 'Linux 2.4',
l26 => 'Linux 2.6',
};
@@ -2298,7 +2300,8 @@ sub config_to_command {
$vga = 'qxl' if $qxlnum;
if (!$vga) {
- if ($conf->{ostype} && ($conf->{ostype} eq 'win8' ||
+ if ($conf->{ostype} && ($conf->{ostype} eq 'win81' ||
+ $conf->{ostype} eq 'win8' ||
$conf->{ostype} eq 'win7' ||
$conf->{ostype} eq 'w2k8')) {
$vga = 'std';
@@ -2404,7 +2407,7 @@ sub config_to_command {
my $useLocaltime = $conf->{localtime};
if (my $ost = $conf->{ostype}) {
- # other, wxp, w2k, w2k3, w2k8, wvista, win7, win8, l24, l26, solaris
+ # other, wxp, w2k, w2k3, w2k8, wvista, win7, win8,win81 l24, l26, solaris
if ($ost =~ m/^w/) { # windows
$useLocaltime = 1 if !defined($conf->{localtime});
@@ -2415,7 +2418,7 @@ sub config_to_command {
}
}
- if ($ost eq 'win7' || $ost eq 'win8' || $ost eq 'w2k8' ||
+ if ($ost eq 'win7' || $ost eq 'win8' || $ost eq 'win81' || $ost eq 'w2k8' ||
$ost eq 'wvista') {
push @$globalFlags, 'kvm-pit.lost_tick_policy=discard';
push @$cmd, '-no-hpet';
@@ -2423,7 +2426,7 @@ sub config_to_command {
push @$cpuFlags , 'hv_spinlocks=0xffff' if !$nokvm;
}
- if ($ost eq 'win7' || $ost eq 'win8') {
+ if ($ost eq 'win7' || $ost eq 'win8' || $ost eq 'win81') {
push @$cpuFlags , 'hv_relaxed' if !$nokvm;
}
}
@@ -2456,6 +2459,8 @@ sub config_to_command {
push @$cpuFlags, '+sep' if $cpu eq 'kvm64' || $cpu eq 'kvm32';
+ push @$cpuFlags , '+lahf_lm' if $conf->{ostype} eq 'win81';
+
$cpu .= "," . join(',', @$cpuFlags) if scalar(@$cpuFlags);
push @$cmd, '-cpu', $cpu;
--
1.7.10.4
More information about the pve-devel
mailing list