s390/pci: Documentation for zPCI

There are changes in the usage of PCI for the user:
 - new kernel parameter
 - modification of the way functions are enumerated

Let's document these.

Signed-off-by: Pierre Morel <pmorel@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
Pierre Morel 2020-04-01 11:12:24 +02:00 committed by Vasily Gorbik
parent 53dd462ac4
commit de267a7c71
4 changed files with 130 additions and 0 deletions

View File

@ -3669,6 +3669,8 @@
may put more devices in an IOMMU group. may put more devices in an IOMMU group.
force_floating [S390] Force usage of floating interrupts. force_floating [S390] Force usage of floating interrupts.
nomio [S390] Do not use MIO instructions. nomio [S390] Do not use MIO instructions.
norid [S390] ignore the RID field and force use of
one PCI domain per PCI function
pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power pcie_aspm= [PCIE] Forcibly enable or disable PCIe Active State Power
Management. Management.

View File

@ -15,6 +15,7 @@ s390 Architecture
vfio-ccw vfio-ccw
zfcpdump zfcpdump
common_io common_io
pci
text_files text_files

126
Documentation/s390/pci.rst Normal file
View File

@ -0,0 +1,126 @@
.. SPDX-License-Identifier: GPL-2.0
=========
S/390 PCI
=========
Authors:
- Pierre Morel
Copyright, IBM Corp. 2020
command line parameters and debugfs entries
===========================================
Command line parameters
-----------------------
* nomio
Do not use MIO instructions.
* norid
Ignore the RID field and force use of one PCI domain per PCI function.
debugfs entries
---------------
* /sys/kernel/debug/s390dbf/pci_*/ (S/390 debug feature)
Some views generated by the debug feature to hold various debug outputs.
- /sys/kernel/debug/s390dbf/pci_msg/sprintf
Messages from the processing of PCI events like machine check handling
and setting of global functionality like UID checking.
The level of logging can be changed to be more or less verbose by piping to
/sys/kernel/debug/s390dbf/pci_*/level a number between 0 and 6; see the
documentation on the S/390 debug feature (Documentation/s390/s390dbf.rst)
for details.
Sysfs entries
=============
Specific entries, or entries specificities for zPCI functions.
* /sys/bus/pci/slots/XXXXXXXX
The slot entries are setup using the FID (Function Identifier) of the
PCI function.
- /sys/bus/pci/slots/XXXXXXXX/power
A physical function currently supporting virtual function can not be
powered-off until all virtual-function have been removed with
echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf
* /sys/bus/pci/devices/XXXX:XX:XX.X/
- function_id
zPCI function identifier unique for the complete Z System.
It define uniquely a function in the system.
- function_handle
Low level identifier used for a configured PCI function.
It may be useful for debuging.
- pchid
Model dependent location of the I/O adapter.
- pfgid
PCI Function Group ID, functions sharing identical functionality
are using a common identifier.
A PCI group defines interrupts, IOMMU, IOTLB and DMA specifics.
- vfn
The Virtual Function Number, from 1 to N for virtual functions.
0 for physical functions.
- pft
PCI function type specifies the type of the PCI function.
- port
The port correspond to the physical port the function is attached to.
It also gives an indication on the physical function a virtual function
is attached to.
- uid
The UID, Unique Identifier is defined when configuring a LPAR and is
unique inside an LPAR.
- pfip/segmentX
The segments are used to determine the isolation of a function.
They corresponds to the physical path to the function.
The more the segment are different the more the functions are isolated.
Enumeration and hotplug
=======================
The PCI address is made of 4 parts: domain, bus, device and function,
like in DDDD:BB:dd.f
* When not using multi-functions (norid is set or firmware does not support
multi-functions)
- There is only one function per domain.
- the domain is set from the zPCI function's UID as defined during the
LPAR creation.
- Addresses look like DDDD:00:00.0
* When using multi-functions (norid parameter is not set), there are some
change in the way zPCI functions are addressed:
- There is still only one bus per domain.
- There can be up to 256 functions per bus.
- The domain part of the address of all functions of all functions for
a multi-Function device is set from the zPCI function's UID as defined
in the LPAR creation for the function zero.
- New functions will only be ready to be used after the function zero
(the function with devfn 0) has been enumerated.

View File

@ -14662,6 +14662,7 @@ S: Supported
W: http://www.ibm.com/developerworks/linux/linux390/ W: http://www.ibm.com/developerworks/linux/linux390/
F: arch/s390/pci/ F: arch/s390/pci/
F: drivers/pci/hotplug/s390_pci_hpc.c F: drivers/pci/hotplug/s390_pci_hpc.c
F: Documentation/s390/pci.rst
S390 VFIO AP DRIVER S390 VFIO AP DRIVER
M: Tony Krowiak <akrowiak@linux.ibm.com> M: Tony Krowiak <akrowiak@linux.ibm.com>