PCI Express support
![]()
The Peripheral Component Interconnect Express (PCIe) device driver supports various PCI devices, including but not limited to devices that implement the SMC network protocol.
PCIe functions are seen by Linux® as devices, hence devices is used here synonymously. You can assign PCIe devices to LPARs in the IOCDS.
PCIe function addresses
The function addresses uniquely identifies a PCIe function within a Linux instance. Function addresses adhere to this format:
<domain>:<bus>:<device>.<function>. For Linux on IBM Z, the address components have the following values:
- <domain>
- UID as specified for the PCI function in the hardware configuration (IOCDS). UIDs are unique
hexadecimal values in the range 1 - FFFF. For example, with a UID of
0x318, <domain> would be: 0318.UIDs are available only if supported by the hardware and if the LPAR is enabled for UID uniqueness checking. If your environment does not support UIDs for PCIe functions, consecutive numbers, starting from
0000, are assigned to the functions. The mapping of assigned numbers and physical functions does not persist across reboots. - <bus>
- Two zeros:
00. - <device>.<function>
- Interface change: As of kernel 5.8, <device>.<function> might represent the PCIe Routing-ID (RID) if your environment supports the Alternative Routing-ID Interpretation (ARI) compatible address format.The previous constant value,
00.0, continues to be used by some device types, for example by NVMe devices. It is also used as a fallback for environments that do not support the ARI compatible address format. You can force this previous value with thepci=noridkernel parameter (see Setting up the PCIe support).