1# 2# Copyright 2020 NXP 3# 4# SPDX-License-Identifier: GPL-2.0+ 5# 6 7Specifying extra IOMMU mappings for PCI controllers 8 9This feature can be enabled through the PCI_IOMMU_EXTRA_MAPPINGS Kconfig option. 10 11The "pci_iommu_extra" env var or "pci-iommu-extra" device tree property (to be 12used for example in more static scenarios such as hardwired PCI endpoints that 13get initialized later in the system setup) allows two things: 14 - for a SRIOV capable PCI EP identified by its B.D.F specify the maximum number 15 of VFs that will ever be created for it 16 - for hot-plug case, specify the B.D.F with which the device will show up on 17 the PCI bus 18 19The env var consists of a list of <bdf>,<action> pairs for a certain pci bus 20identified by its controller's base register address, as defined in the "reg" 21property in the device tree. 22 23pci_iommu_extra = pci@<addr1>,<bdf>,<action>,<bdf>,<action>, 24 pci@<addr2>,<bdf>,<action>,<bdf>,<action>,... 25 26where: 27 <addr> is the base register address of the pci controller for which the 28 subsequent <bdf>,<action> pairs apply 29 <bdf> identifies to which B.D.F the action applies to 30 <action> can be: 31 - "vfs=<number>" to specify that for the PCI EP identified previously by 32 the <bdf> to include mappings for <number> of VFs. 33 The variant "noari_vfs=<number>" is available to disable taking ARI into 34 account. 35 - "hp" to specify that on this <bdf> there will be a hot-plugged device so 36 it needs a mapping 37The device tree property must be placed under the correct pci controller node 38and only the bdf and action pairs need to be specified, like this: 39 40pci-iommu-extra = "<bdf>,<action>,<bdf>,<action>,..."; 41 42Note: the env var has priority over the device tree property. 43 44For example, given this configuration on bus 6: 45 46=> pci 6 47Scanning PCI devices on bus 6 48BusDevFun VendorId DeviceId Device Class Sub-Class 49_____________________________________________________________ 5006.00.00 0x8086 0x1572 Network controller 0x00 5106.00.01 0x8086 0x1572 Network controller 0x00 52 53The following u-boot env var will create iommu mappings for 3 VFs for each PF: 54 55=> setenv pci_iommu_extra pci@0x3800000,6.0.0,vfs=3,6.0.1,vfs=3 56 57For the device tree case, this would be specified like this: 58 59pci-iommu-extra = "6.0.0,vfs=3,6.0.1,vfs=3"; 60 61To add an iommu mapping for a hot-plugged device, please see following example: 62 63=> setenv pci_iommu_extra pci@0x3800000,2.16.0,hp 64 65For the device tree case, this would be specified like this: 66 67pci-iommu-extra = "2.16.0,hp"; 68