]> git.proxmox.com Git - qemu-server.git/commitdiff
passthrough : reenable hyperv and add hv_vendor_id for windows
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 18 Feb 2016 07:14:42 +0000 (08:14 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 18 Feb 2016 11:54:47 +0000 (12:54 +0100)
qemu 2.5 support a new hyper-v feature: hv_vendor_id
This allow nvidia drivers to install on windows with hyper-v feature on.

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/QemuServer.pm

index 7bf3e4d5e7487f94fdd4ddb048af3374db40f630..5165fab3f66e90a1f92c1a23bd8af6650c1d4f3b 100644 (file)
@@ -2770,6 +2770,7 @@ sub config_to_command {
     my $bridges = {};
     my $kvmver = kvm_user_version();
     my $vernum = 0; # unknown
+    my $ost = $conf->{ostype};
     if ($kvmver =~ m/^(\d+)\.(\d+)$/) {
        $vernum = $1*1000000+$2*1000;
     } elsif ($kvmver =~ m/^(\d+)\.(\d+)\.(\d+)$/) {
@@ -2892,7 +2893,6 @@ sub config_to_command {
     push @$devices, '-device', print_tabletdevice_full($conf) if $tablet;
 
     my $kvm_off = 0;
-    my $nohyperv;
     # host pci devices
     for (my $i = 0; $i < $MAX_HOSTPCI_DEVICES; $i++)  {
        my $d = parse_hostpci($conf->{"hostpci$i"});
@@ -2911,7 +2911,9 @@ sub config_to_command {
        if ($xvga && $xvga ne '') {
            $kvm_off = 1;
            $vga = 'none';
-           $nohyperv = 1;
+           if ($ost eq 'win7' || $ost eq 'win8' || $ost eq 'w2k8') {
+               push @$cpuFlags , 'hv_vendor_id=proxmox';
+           }
            if ($conf->{bios} && $conf->{bios} eq 'ovmf') {
                $xvga = "";
            }
@@ -3035,7 +3037,7 @@ sub config_to_command {
     my $nokvm = defined($conf->{kvm}) && $conf->{kvm} == 0 ? 1 : 0;
     my $useLocaltime = $conf->{localtime};
 
-    if (my $ost = $conf->{ostype}) {
+    if ($ost) {
        # other, wxp, w2k, w2k3, w2k8, wvista, win7, win8, l24, l26, solaris
 
        if ($ost =~ m/^w/) { # windows
@@ -3052,17 +3054,17 @@ sub config_to_command {
            push @$globalFlags, 'kvm-pit.lost_tick_policy=discard';
            push @$cmd, '-no-hpet';
            if (qemu_machine_feature_enabled ($machine_type, $kvmver, 2, 3)) {
-               push @$cpuFlags , 'hv_spinlocks=0x1fff' if !$nokvm && !$nohyperv;
-               push @$cpuFlags , 'hv_vapic' if !$nokvm && !$nohyperv;
-               push @$cpuFlags , 'hv_time' if !$nokvm && !$nohyperv;
+               push @$cpuFlags , 'hv_spinlocks=0x1fff' if !$nokvm;
+               push @$cpuFlags , 'hv_vapic' if !$nokvm;
+               push @$cpuFlags , 'hv_time' if !$nokvm;
 
            } else {
-               push @$cpuFlags , 'hv_spinlocks=0xffff' if !$nokvm && !$nohyperv;
+               push @$cpuFlags , 'hv_spinlocks=0xffff' if !$nokvm;
            }
        }
 
        if ($ost eq 'win7' || $ost eq 'win8') {
-           push @$cpuFlags , 'hv_relaxed' if !$nokvm && !$nohyperv;
+           push @$cpuFlags , 'hv_relaxed' if !$nokvm;
        }
     }