]> git.proxmox.com Git - pve-docs.git/blobdiff - qm-pci-passthrough.adoc
close #4031: vm: import: simplify example for creating VM from existing disk
[pve-docs.git] / qm-pci-passthrough.adoc
index 3895df4a431bcf43fb9354959cee49bc4b952b7e..fa6ba357726c547981e48df12fa9531a592ee847 100644 (file)
@@ -45,27 +45,21 @@ some configuration to enable PCI(e) passthrough.
 
 .IOMMU
 
-The IOMMU has to be activated on the kernel commandline. The easiest way is to
-enable trough grub. Edit `'/etc/default/grub'' and add the following to the
-'GRUB_CMDLINE_LINUX_DEFAULT' variable:
+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 has to be activated on the
+xref:sysboot_edit_kernel_cmdline[kernel commandline].
+
+The command line parameters are:
 
 * for Intel CPUs:
 +
 ----
  intel_iommu=on
 ----
-* for AMD CPUs:
-+
-----
- amd_iommu=on
-----
-
-[[qm_pci_passthrough_update_grub]]
-To bring this change in effect, make sure you run:
-
-----
-# update-grub
-----
+* for AMD CPUs it should be enabled automatically.
 
 .Kernel Modules
 
@@ -154,7 +148,7 @@ PCI(e) card, for example a GPU or a network card.
 Host Configuration
 ^^^^^^^^^^^^^^^^^^
 
-In this case, the host cannot use the card. There are two methods to achieve
+In this case, the host must not use the card. There are two methods to achieve
 this:
 
 * pass the device IDs to the options of the 'vfio-pci' modules by adding
@@ -167,7 +161,7 @@ to a .conf file in */etc/modprobe.d/* where `1234:5678` and `4321:8765` are
 the vendor and device IDs obtained by:
 +
 ----
-# lcpci -nn
+# lspci -nn
 ----
 
 * blacklist the driver completely on the host, ensuring that it is free to bind
@@ -183,6 +177,23 @@ For both methods you need to
 xref:qm_pci_passthrough_update_initramfs[update the `initramfs`] again and
 reboot after that.
 
+.Verify Configuration
+
+To check if your changes were successful, you can use
+
+----
+# lspci -nnk
+----
+
+and check your device entry. If it says
+
+----
+Kernel driver in use: vfio-pci
+----
+
+or the 'in use' line is missing entirely, the device is ready to be used for
+passthrough.
+
 [[qm_pci_passthrough_vm_config]]
 VM Configuration
 ^^^^^^^^^^^^^^^^
@@ -194,7 +205,9 @@ configuration, for example by executing:
 ----
 
 If your device has multiple functions (e.g., ``00:02.0`' and ``00:02.1`' ),
-you can pass them through all together with the shortened syntax ``00:02`'
+you can pass them through all together with the shortened syntax ``00:02`'.
+This is equivalent with checking the ``All Functions`' checkbox in the
+web-interface.
 
 There are some options to which may be necessary, depending on the device
 and guest OS:
@@ -220,6 +233,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
 ^^^^^^^^^^^^^^^^^^^^
@@ -297,7 +328,7 @@ Mediated Devices (vGPU, GVT-g)
 
 Mediated devices are another method to reuse features and performance from
 physical hardware for virtualized hardware. These are found most common in
-virtualized GPU setups such as Intels GVT-g and Nvidias vGPUs used in their
+virtualized GPU setups such as Intel's GVT-g and NVIDIA's vGPUs used in their
 GRID technology.
 
 With this, a physical Card is able to create virtual cards, similar to SR-IOV.
@@ -312,14 +343,13 @@ In general your card's driver must support that feature, otherwise it will
 not work. So please refer to your vendor for compatible drivers and how to
 configure them.
 
-Intels drivers for GVT-g are integrated in the Kernel and should work
+Intel's drivers for GVT-g are integrated in the Kernel and should work
 with 5th, 6th and 7th generation Intel Core Processors, as well as E3 v4, E3
 v5 and E3 v6 Xeon Processors.
 
-To enable it for Intel Graphcs, you have to make sure to load the module
-'kvmgt' (for example via `/etc/modules`) and to enable it on the Kernel
-commandline. For this you can edit `'/etc/default/grub'' and add the following
-to the 'GRUB_CMDLINE_LINUX_DEFAULT' variable:
+To enable it for Intel Graphics, you have to make sure to load the module
+'kvmgt' (for example via `/etc/modules`) and to enable it on the
+xref:sysboot_edit_kernel_cmdline[Kernel commandline] and add the following parameter:
 
 ----
  i915.enable_gvt=1
@@ -327,8 +357,7 @@ to the 'GRUB_CMDLINE_LINUX_DEFAULT' variable:
 
 After that remember to
 xref:qm_pci_passthrough_update_initramfs[update the `initramfs`],
-xref:qm_pci_passthrough_update_grub[update grub] and
-reboot your host.
+and reboot your host.
 
 VM Configuration
 ^^^^^^^^^^^^^^^^