X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=qm-pci-passthrough.adoc;h=28bb4fc39dff30b3b8b2ff4e6b1846b5a4e512cb;hb=a4c6084830b7f5e32fae9f080683e041f48834cc;hp=dfc3d6ea777b41fe9a70b536230bd2374bdbdb36;hpb=0c54d61280711c3e2e9ce2ef668964d18421f318;p=pve-docs.git diff --git a/qm-pci-passthrough.adoc b/qm-pci-passthrough.adoc index dfc3d6e..28bb4fc 100644 --- a/qm-pci-passthrough.adoc +++ b/qm-pci-passthrough.adoc @@ -45,8 +45,13 @@ some configuration to enable PCI(e) passthrough. .IOMMU -The IOMMU has to be activated on the +First, the IOMMU support has to be enabled in your BIOS/UEFI. Most often, that +options is named `IOMMU` or `VT-d`, but check the manual for your motherboard +for the exact option you need to enable. + +Then, the IOMMU might need to be activated on the xref:sysboot_edit_kernel_cmdline[kernel commandline]. +(On newer kernels, this should not be necessary.) The command line parameters are: @@ -57,6 +62,24 @@ The command line parameters are: ---- * for AMD CPUs it should be enabled automatically. + +If your hardware supports it, enabling IOMMU passthrough mode might increase +performance, because then the VMs bypass the (default) DMA translation +which is normally done by the hypervisor, before handing DMA requests off to +the hardware IOMMU. You can enable it with adding + +---- + iommu.passthrough=1 +---- + +or + +---- + iommu=pt +---- + +to the kernel commandline. + .Kernel Modules You have to make sure the following modules are loaded. This can be achieved by @@ -229,6 +252,24 @@ An example of PCIe passthrough with a GPU set to primary: # qm set VMID -hostpci0 02:00,pcie=on,x-vga=on ---- +.PCI ID overrides + +You can override the PCI vendor ID, device ID, and subsystem IDs that will be +seen by the guest. This is useful if your device is a variant with an ID that +your guest's drivers don't recognize, but you want to force those drivers to be +loaded anyway (e.g. if you know your device shares the same chipset as a +supported variant). + +The available options are `vendor-id`, `device-id`, `sub-vendor-id`, and +`sub-device-id`. You can set any or all of these to override your device's +default IDs. + +For example: + +---- +# qm set VMID -hostpci0 02:00,device-id=0x10f6,sub-vendor-id=0x0000 +---- + Other considerations ^^^^^^^^^^^^^^^^^^^^