Commit | Line | Data |
---|---|---|
de267a7c PM |
1 | .. SPDX-License-Identifier: GPL-2.0 |
2 | ||
3 | ========= | |
4 | S/390 PCI | |
5 | ========= | |
6 | ||
7 | Authors: | |
8 | - Pierre Morel | |
9 | ||
10 | Copyright, IBM Corp. 2020 | |
11 | ||
12 | ||
9056754f | 13 | Command line parameters and debugfs entries |
de267a7c PM |
14 | =========================================== |
15 | ||
16 | Command line parameters | |
17 | ----------------------- | |
18 | ||
19 | * nomio | |
20 | ||
9056754f | 21 | Do not use PCI Mapped I/O (MIO) instructions. |
de267a7c PM |
22 | |
23 | * norid | |
24 | ||
25 | Ignore the RID field and force use of one PCI domain per PCI function. | |
26 | ||
27 | debugfs entries | |
28 | --------------- | |
29 | ||
9056754f | 30 | The S/390 debug feature (s390dbf) generates views to hold various debug results in sysfs directories of the form: |
de267a7c | 31 | |
9056754f PM |
32 | * /sys/kernel/debug/s390dbf/pci_*/ |
33 | ||
34 | For example: | |
de267a7c PM |
35 | |
36 | - /sys/kernel/debug/s390dbf/pci_msg/sprintf | |
9056754f PM |
37 | Holds messages from the processing of PCI events, like machine check handling |
38 | and setting of global functionality, like UID checking. | |
de267a7c | 39 | |
9056754f PM |
40 | Change the level of logging to be more or less verbose by piping |
41 | a number between 0 and 6 to /sys/kernel/debug/s390dbf/pci_*/level. For | |
42 | details, see the documentation on the S/390 debug feature at | |
43 | Documentation/s390/s390dbf.rst. | |
de267a7c PM |
44 | |
45 | Sysfs entries | |
46 | ============= | |
47 | ||
9056754f | 48 | Entries specific to zPCI functions and entries that hold zPCI information. |
de267a7c PM |
49 | |
50 | * /sys/bus/pci/slots/XXXXXXXX | |
51 | ||
9056754f | 52 | The slot entries are set up using the function identifier (FID) of the |
408f2c9c NS |
53 | PCI function. The format depicted as XXXXXXXX above is 8 hexadecimal digits |
54 | with 0 padding and lower case hexadecimal digitis. | |
de267a7c PM |
55 | |
56 | - /sys/bus/pci/slots/XXXXXXXX/power | |
57 | ||
9056754f PM |
58 | A physical function that currently supports a virtual function cannot be |
59 | powered off until all virtual functions are removed with: | |
de267a7c PM |
60 | echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf |
61 | ||
62 | * /sys/bus/pci/devices/XXXX:XX:XX.X/ | |
63 | ||
64 | - function_id | |
9056754f | 65 | A zPCI function identifier that uniquely identifies the function in the Z server. |
de267a7c PM |
66 | |
67 | - function_handle | |
9056754f PM |
68 | Low-level identifier used for a configured PCI function. |
69 | It might be useful for debuging. | |
de267a7c PM |
70 | |
71 | - pchid | |
9056754f | 72 | Model-dependent location of the I/O adapter. |
de267a7c PM |
73 | |
74 | - pfgid | |
9056754f PM |
75 | PCI function group ID, functions that share identical functionality |
76 | use a common identifier. | |
77 | A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics. | |
de267a7c PM |
78 | |
79 | - vfn | |
9056754f | 80 | The virtual function number, from 1 to N for virtual functions, |
de267a7c PM |
81 | 0 for physical functions. |
82 | ||
83 | - pft | |
9056754f | 84 | The PCI function type |
de267a7c PM |
85 | |
86 | - port | |
9056754f PM |
87 | The port corresponds to the physical port the function is attached to. |
88 | It also gives an indication of the physical function a virtual function | |
de267a7c PM |
89 | is attached to. |
90 | ||
91 | - uid | |
408f2c9c NS |
92 | The user identifier (UID) may be defined as part of the machine |
93 | configuration or the z/VM or KVM guest configuration. If the accompanying | |
94 | uid_is_unique attribute is 1 the platform guarantees that the UID is unique | |
95 | within that instance and no devices with the same UID can be attached | |
96 | during the lifetime of the system. | |
97 | ||
98 | - uid_is_unique | |
99 | Indicates whether the user identifier (UID) is guaranteed to be and remain | |
100 | unique within this Linux instance. | |
de267a7c PM |
101 | |
102 | - pfip/segmentX | |
9056754f PM |
103 | The segments determine the isolation of a function. |
104 | They correspond to the physical path to the function. | |
105 | The more the segments are different, the more the functions are isolated. | |
de267a7c PM |
106 | |
107 | Enumeration and hotplug | |
108 | ======================= | |
109 | ||
9056754f PM |
110 | The PCI address consists of four parts: domain, bus, device and function, |
111 | and is of this form: DDDD:BB:dd.f | |
de267a7c | 112 | |
9056754f PM |
113 | * When not using multi-functions (norid is set, or the firmware does not |
114 | support multi-functions): | |
de267a7c PM |
115 | |
116 | - There is only one function per domain. | |
117 | ||
9056754f | 118 | - The domain is set from the zPCI function's UID as defined during the |
de267a7c PM |
119 | LPAR creation. |
120 | ||
9056754f PM |
121 | * When using multi-functions (norid parameter is not set), |
122 | zPCI functions are addressed differently: | |
de267a7c PM |
123 | |
124 | - There is still only one bus per domain. | |
125 | ||
126 | - There can be up to 256 functions per bus. | |
127 | ||
9056754f | 128 | - The domain part of the address of all functions for |
de267a7c PM |
129 | a multi-Function device is set from the zPCI function's UID as defined |
130 | in the LPAR creation for the function zero. | |
131 | ||
9056754f | 132 | - New functions will only be ready for use after the function zero |
de267a7c | 133 | (the function with devfn 0) has been enumerated. |