Configuring a headless Linux OS installation strictly for virtualizing then managing a Windows installation?

You need to hide the hypervisor from windows.

try this in your conf file:

args: -cpu host,kvm=off
vga: none
1 Like

By conf file, you mean /etc/pve/qemu-server/<vm-id>.conf?

Yep

8characters

So if I have this in there:

args: -cpu host,kvm=off
vga: none

Do I need this?

cpu: host

I would assume CPU is redundant?

Edit:

Hmm, the VM started fine, but nothing is being output to my physical displays.

And now I can’t stop the VM due to “unexpected status”.

Time to reboot the host.

It is redundant.

Do you have:

bios: ovmf

in there?

Here is the whole config file for the VM:

bios: ovmf
bootdisk: virtio0
cores: 4
cpu: host
args: kvm=off
efidisk0: local-lvm:vm-100-disk-2,size=128K
hostpci0: 02:00,x-vga=on
machine: q35
memory: 7168
name: Test-Windows
net0: virtio=96:24:CF:B4:AA:A2,bridge=vmbr0
numa: 0
onboot: 1
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=f675c872-c390-4668-9c48-423f5b4ff239
snaptime: 1509639761
sockets: 1
usb0: host=6-1.2
usb1: host=2-4
usb2: host=3-1.2.3.4
usb3: host=1-1.2.3.4
virtio0: local-lvm:vm-100-disk-1,cache=writeback,size=90G

The device on the host machine is 02:00, and is definitely loading the vfio-pci (should this be vfio-vga?)

root@pve-001:~# dmesg | grep -e IOMMU 
[    0.615425] AMD-Vi: IOMMU performance counters supported 
[    0.617069] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40 
[    0.618547] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).

root@pve-001:~# find /sys/kernel/iommu_groups/ -type l 
/sys/kernel/iommu_groups/7/devices/0000:00:13.2        
/sys/kernel/iommu_groups/7/devices/0000:00:13.0        
/sys/kernel/iommu_groups/5/devices/0000:00:11.0        
/sys/kernel/iommu_groups/3/devices/0000:00:09.0        
/sys/kernel/iommu_groups/11/devices/0000:00:15.2       
/sys/kernel/iommu_groups/11/devices/0000:00:15.0       
/sys/kernel/iommu_groups/11/devices/0000:05:00.0       
/sys/kernel/iommu_groups/1/devices/0000:00:03.0        
/sys/kernel/iommu_groups/1/devices/0000:02:00.1        
/sys/kernel/iommu_groups/1/devices/0000:00:03.1        
/sys/kernel/iommu_groups/1/devices/0000:02:00.0        
/sys/kernel/iommu_groups/8/devices/0000:00:14.2        
/sys/kernel/iommu_groups/8/devices/0000:00:14.0        
/sys/kernel/iommu_groups/8/devices/0000:00:14.3        
/sys/kernel/iommu_groups/6/devices/0000:00:12.2        
/sys/kernel/iommu_groups/6/devices/0000:00:12.0        
/sys/kernel/iommu_groups/4/devices/0000:00:10.0        
/sys/kernel/iommu_groups/12/devices/0000:00:18.4       
/sys/kernel/iommu_groups/12/devices/0000:00:18.2       
/sys/kernel/iommu_groups/12/devices/0000:00:18.0       
/sys/kernel/iommu_groups/12/devices/0000:00:18.5       
/sys/kernel/iommu_groups/12/devices/0000:00:18.3       
/sys/kernel/iommu_groups/12/devices/0000:00:18.1       
/sys/kernel/iommu_groups/2/devices/0000:00:08.0        
/sys/kernel/iommu_groups/10/devices/0000:00:14.5       
/sys/kernel/iommu_groups/0/devices/0000:00:02.2        
/sys/kernel/iommu_groups/0/devices/0000:00:02.0        
/sys/kernel/iommu_groups/0/devices/0000:01:00.0        
/sys/kernel/iommu_groups/9/devices/0000:00:14.4

root@pve-001:~# lspci -k
02:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1) 
Subsystem: eVga.com. Corp. GK208 [GeForce GT 710B] 
Kernel driver in use: vfio-pci 
Kernel modules: nvidiafb, nouveau

Your IOMMU groups are problematic.

/sys/kernel/iommu_groups/1/devices/0000:00:03.0        
/sys/kernel/iommu_groups/1/devices/0000:02:00.1        
/sys/kernel/iommu_groups/1/devices/0000:00:03.1        
/sys/kernel/iommu_groups/1/devices/0000:02:00.0  

Whatever 00:03.0 and 00:03.1 are, you’re going to need to separate them in order to get the GPU to pass properly.

You will also need to pass 02:00.1 as well. I’m not sure if proxmox automatically detects the .1 and passes it as well, but that could cause a problem.

1 Like

That is a valid point. I didn’t notice that. I’ll have to see what those are.

I believe that’s safe.

https://pve.proxmox.com/wiki/Pci_passthrough#Determine_your_PCI_card_address.2C_and_configure_your_VM

If you have a multi-function device (like a vga card with embedded audio chipset),

you can pass all functions manually with

hostpci0: 01:00.0;01:00.1
or

to pass all functions automatically

hostpci0: 01:00

1 Like

Perfect. I’m not too familiar with proxmox passthrough, just trying my best here. :smiley:

1 Like

I definitely appreciate the help. :smiley:

00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Device 157b
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 157c

There are 10 Host bridges and 2 PCI Bridges.

I assume this PCI Bridge is the same bridge that the GPU is plugged into?

What motherboard are you using? Is this an AM4 board?

It’s at work, so older hardware. FM2 socket. The Athlon X4 in it does support virtualization, and IOMMU (seemingly as I have gotten the GT 710 to appear in the Windows VM).

There are 2 PCI-e slots on the board (x16 and x1), so since 2 are listed when I do lspci I imagine those relate somehow.

Ah, this might be problematic then. The ACS override patch will probably help you here.

This thread can guide you through compiling the ACS override patch into the kernel:

I hesitate to suggest this because it causes bugs sometimes, but since there isn’t a different PCIe slot you can put the GPU in, it’s the only real option.

yeah, this is the PCI bridge. I wonder if passing that through as well would result in instability. If you do pass that stuff through as well, make sure they’re hostpci0 and the gpu is hostpci1

1 Like

Yeah… that’s kinda what I’m wondering. I would have originally assume this would be beneficial. :S

1 Like

Give it a go.

1 Like

:thinking:

kvm: -k en-us: Could not open 'kvm=off': No such file or directory

hostpci0: 02:00,x-vga=on,pcie=1
args: kvm=off
bios: ovmf

Edit:

Oh, I see. That’s supposed to be on the CPU settings with host.

Edit 2:

Screenshot from 2017-11-03 12-26-04

I’m still getting this issue. Research tells me it is the Nvidia drivers not wanting to work in a Hypervisor. I’ve tried the three suggested solutions of having these three CPU options specified: host,kvm=off,hidden=1

Not sure what else to do. I’ve found that more recent drivers use more strict verification, but still. There’s gotta be a way.

1 Like

Can you post your current conf file?

There is a way, I’ve got it working with the latest drivers on a 660 ti with an arch host. I just don’t know what the exact options for proxmox are…

This proxmox thread may be of assistance.

Sweet. These options are for QEMU KVM so whatever yours is should be the same presuming you’re using that.

hostpci0: 02:00,x-vga=on,pcie=1
bios: ovmf
bootdisk: virtio0
cores: 4                                                                                                                                                                                            cpu: host,hidden=1,kvm=off
efidisk0: local-lvm:vm-100-disk-2,size=128K
machine: q35
memory: 7168
name: Test-Windows
net0: virtio=96:24:CF:B4:AA:A2,bridge=vmbr0
numa: 0                                                                                                                                                                                             ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=f675c872-c390-4668-9c48-423f5b4ff239
sockets: 1
usb0: host=6-1.2
usb1: host=2-4
usb2: host=3-1.2.3.4
usb3: host=1-1.2.3.4
virtio0: local-lvm:vm-100-disk-1,cache=writeback,size=90G

Have you tried adding cpu: host,kvm=off?

So somehow, that got deleted when I copy/pasted. Using ProxMox’s noVNC doesn’t let clipboards sync, so they have a menu option to be able to copy/paste the contents, but this uses spaces instead of newlines, so to get it to work in a readable format here, I have to manually swap those out. Must’ve deleted that line while doing so.

bootdisk: virtio0
cores: 4
cpu: host,hidden=1,kvm=off
efidisk0: local-lvm:vm-100-disk-2,size=128K
machine: q35  

That’s where it is in the conf. Let me try without hidden=1. Maybe combining all 3 is not good?