"]sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget!/translations/zh_CN/arch/s390/pcimodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/zh_TW/arch/s390/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/it_IT/arch/s390/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ja_JP/arch/s390/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/ko_KR/arch/s390/pcimodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget!/translations/sp_SP/arch/s390/pcimodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh;/var/lib/git/docbuild/linux/Documentation/arch/s390/pci.rsthKubhsection)}(hhh](htitle)}(h S/390 PCIh]h S/390 PCI}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhdefinition_list)}(hhh]hdefinition_list_item)}(hAuthors: - Pierre Morel h](hterm)}(hAuthors:h]hAuthors:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh definition)}(hhh]h bullet_list)}(hhh]h list_item)}(h Pierre Morel h]h paragraph)}(h Pierre Morelh]h Pierre Morel}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]bullet-uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hCopyright, IBM Corp. 2020h]hCopyright, IBM Corp. 2020}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(h+Command line parameters and debugfs entriesh]h+Command line parameters and debugfs entries}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhKubh)}(hhh](h)}(hCommand line parametersh]hCommand line parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChhhhhKubh)}(hhh](h)}(h5nomio Do not use PCI Mapped I/O (MIO) instructions. h](h)}(hnomioh]hnomio}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubh)}(h-Do not use PCI Mapped I/O (MIO) instructions.h]h-Do not use PCI Mapped I/O (MIO) instructions.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjWubeh}(h]h ]h"]h$]h&]uh1hhjThhhhhNubh)}(hNnorid Ignore the RID field and force use of one PCI domain per PCI function. h](h)}(hnoridh]hnorid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}ubh)}(hFIgnore the RID field and force use of one PCI domain per PCI function.h]hFIgnore the RID field and force use of one PCI domain per PCI function.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj}ubeh}(h]h ]h"]h$]h&]uh1hhjThhhhhNubeh}(h]h ]h"]h$]h&]j*uh1hhhhKhjChhubeh}(h]command-line-parametersah ]h"]command line parametersah$]h&]uh1hhj2hhhhhKubh)}(hhh](h)}(hdebugfs entriesh]hdebugfs entries}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hqThe S/390 debug feature (s390dbf) generates views to hold various debug results in sysfs directories of the form:h]hqThe S/390 debug feature (s390dbf) generates views to hold various debug results in sysfs directories of the form:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(h#* /sys/kernel/debug/s390dbf/pci_*/ h]h)}(hhh]h)}(h!/sys/kernel/debug/s390dbf/pci_*/ h]h)}(h /sys/kernel/debug/s390dbf/pci_*/h]h /sys/kernel/debug/s390dbf/pci_*/}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jjuh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1jhhhK hjhhubh)}(h For example:h]h For example:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjhhubj)}(hX- /sys/kernel/debug/s390dbf/pci_msg/sprintf Holds messages from the processing of PCI events, like machine check handling and setting of global functionality, like UID checking. Change the level of logging to be more or less verbose by piping a number between 0 and 6 to /sys/kernel/debug/s390dbf/pci_*/level. For details, see the documentation on the S/390 debug feature at Documentation/arch/s390/s390dbf.rst. h](h)}(hhh]h)}(h/sys/kernel/debug/s390dbf/pci_msg/sprintf Holds messages from the processing of PCI events, like machine check handling and setting of global functionality, like UID checking. h]h)}(h/sys/kernel/debug/s390dbf/pci_msg/sprintf Holds messages from the processing of PCI events, like machine check handling and setting of global functionality, like UID checking.h]h/sys/kernel/debug/s390dbf/pci_msg/sprintf Holds messages from the processing of PCI events, like machine check handling and setting of global functionality, like UID checking.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jjuh1hhhhK$hj ubh)}(hChange the level of logging to be more or less verbose by piping a number between 0 and 6 to /sys/kernel/debug/s390dbf/pci_*/level. For details, see the documentation on the S/390 debug feature at Documentation/arch/s390/s390dbf.rst.h]hChange the level of logging to be more or less verbose by piping a number between 0 and 6 to /sys/kernel/debug/s390dbf/pci_*/level. For details, see the documentation on the S/390 debug feature at Documentation/arch/s390/s390dbf.rst.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK(hj ubeh}(h]h ]h"]h$]h&]uh1jhhhK$hjhhubeh}(h]debugfs-entriesah ]h"]debugfs entriesah$]h&]uh1hhj2hhhhhKubeh}(h]+command-line-parameters-and-debugfs-entriesah ]h"]+command line parameters and debugfs entriesah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Sysfs entriesh]h Sysfs entries}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhhhhhK.ubh)}(hJEntries specific to zPCI functions and entries that hold zPCI information.h]hJEntries specific to zPCI functions and entries that hold zPCI information.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjUhhubh)}(hhh](h)}(hX/sys/bus/pci/slots/XXXXXXXX The slot entries are set up using the function identifier (FID) of the PCI function. The format depicted as XXXXXXXX above is 8 hexadecimal digits with 0 padding and lower case hexadecimal digits. - /sys/bus/pci/slots/XXXXXXXX/power A physical function that currently supports a virtual function cannot be powered off until all virtual functions are removed with: echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf h](h)}(h/sys/bus/pci/slots/XXXXXXXXh]h/sys/bus/pci/slots/XXXXXXXX}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hjwubh)}(hThe slot entries are set up using the function identifier (FID) of the PCI function. The format depicted as XXXXXXXX above is 8 hexadecimal digits with 0 padding and lower case hexadecimal digits.h]hThe slot entries are set up using the function identifier (FID) of the PCI function. The format depicted as XXXXXXXX above is 8 hexadecimal digits with 0 padding and lower case hexadecimal digits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjwubh)}(hhh]h)}(h"/sys/bus/pci/slots/XXXXXXXX/power h]h)}(h!/sys/bus/pci/slots/XXXXXXXX/powerh]h!/sys/bus/pci/slots/XXXXXXXX/power}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]jjuh1hhhhK8hjwubh)}(hA physical function that currently supports a virtual function cannot be powered off until all virtual functions are removed with: echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvfh]hA physical function that currently supports a virtual function cannot be powered off until all virtual functions are removed with: echo 0 > /sys/bus/pci/devices/XXXX:XX:XX.X/sriov_numvf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK:hjwubeh}(h]h ]h"]h$]h&]uh1hhjthhhhhNubh)}(hX/sys/bus/pci/devices/XXXX:XX:XX.X/ - function_id A zPCI function identifier that uniquely identifies the function in the Z server. - function_handle Low-level identifier used for a configured PCI function. It might be useful for debugging. - pchid Model-dependent location of the I/O adapter. - pfgid PCI function group ID, functions that share identical functionality use 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 The PCI function type - port The port corresponds to the physical port the function is attached to. It also gives an indication of the physical function a virtual function is attached to. - uid The user identifier (UID) may be defined as part of the machine configuration or the z/VM or KVM guest configuration. If the accompanying uid_is_unique attribute is 1 the platform guarantees that the UID is unique within that instance and no devices with the same UID can be attached during the lifetime of the system. - uid_is_unique Indicates whether the user identifier (UID) is guaranteed to be and remain unique within this Linux instance. - pfip/segmentX The segments determine the isolation of a function. They correspond to the physical path to the function. The more the segments are different, the more the functions are isolated. h](h)}(h"/sys/bus/pci/devices/XXXX:XX:XX.X/h]h"/sys/bus/pci/devices/XXXX:XX:XX.X/}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjubh)}(hhh](h)}(h^function_id A zPCI function identifier that uniquely identifies the function in the Z server. h]h)}(h]function_id A zPCI function identifier that uniquely identifies the function in the Z server.h]h]function_id A zPCI function identifier that uniquely identifies the function in the Z server.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hkfunction_handle Low-level identifier used for a configured PCI function. It might be useful for debugging. h]h)}(hjfunction_handle Low-level identifier used for a configured PCI function. It might be useful for debugging.h]hjfunction_handle Low-level identifier used for a configured PCI function. It might be useful for debugging.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h3pchid Model-dependent location of the I/O adapter. h]h)}(h2pchid Model-dependent location of the I/O adapter.h]h2pchid Model-dependent location of the I/O adapter.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKGhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hpfgid PCI function group ID, functions that share identical functionality use a common identifier. A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics. h]h)}(hpfgid PCI function group ID, functions that share identical functionality use a common identifier. A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics.h]hpfgid PCI function group ID, functions that share identical functionality use a common identifier. A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhj)ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h^vfn The virtual function number, from 1 to N for virtual functions, 0 for physical functions. h]h)}(h]vfn The virtual function number, from 1 to N for virtual functions, 0 for physical functions.h]h]vfn The virtual function number, from 1 to N for virtual functions, 0 for physical functions.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhjAubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hpft The PCI function type h]h)}(hpft The PCI function typeh]hpft The PCI function type}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShjYubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hport The port corresponds to the physical port the function is attached to. It also gives an indication of the physical function a virtual function is attached to. h]h)}(hport The port corresponds to the physical port the function is attached to. It also gives an indication of the physical function a virtual function is attached to.h]hport The port corresponds to the physical port the function is attached to. It also gives an indication of the physical function a virtual function is attached to.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjqubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hXCuid The user identifier (UID) may be defined as part of the machine configuration or the z/VM or KVM guest configuration. If the accompanying uid_is_unique attribute is 1 the platform guarantees that the UID is unique within that instance and no devices with the same UID can be attached during the lifetime of the system. h]h)}(hXBuid The user identifier (UID) may be defined as part of the machine configuration or the z/VM or KVM guest configuration. If the accompanying uid_is_unique attribute is 1 the platform guarantees that the UID is unique within that instance and no devices with the same UID can be attached during the lifetime of the system.h]hXBuid The user identifier (UID) may be defined as part of the machine configuration or the z/VM or KVM guest configuration. If the accompanying uid_is_unique attribute is 1 the platform guarantees that the UID is unique within that instance and no devices with the same UID can be attached during the lifetime of the system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK[hjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h|uid_is_unique Indicates whether the user identifier (UID) is guaranteed to be and remain unique within this Linux instance. h]h)}(h{uid_is_unique Indicates whether the user identifier (UID) is guaranteed to be and remain unique within this Linux instance.h]h{uid_is_unique Indicates whether the user identifier (UID) is guaranteed to be and remain unique within this Linux instance.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hpfip/segmentX The segments determine the isolation of a function. They correspond to the physical path to the function. The more the segments are different, the more the functions are isolated. h]h)}(hpfip/segmentX The segments determine the isolation of a function. They correspond to the physical path to the function. The more the segments are different, the more the functions are isolated.h]hpfip/segmentX The segments determine the isolation of a function. They correspond to the physical path to the function. The more the segments are different, the more the functions are isolated.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhhhK@hjubeh}(h]h ]h"]h$]h&]uh1hhjthhhNhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhK2hjUhhubeh}(h] sysfs-entriesah ]h"] sysfs entriesah$]h&]uh1hhhhhhhhK.ubh)}(hhh](h)}(hEnumeration and hotplugh]hEnumeration and hotplug}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKlubh)}(hkThe PCI address consists of four parts: domain, bus, device and function, and is of this form: DDDD:BB:dd.fh]hkThe PCI address consists of four parts: domain, bus, device and function, and is of this form: DDDD:BB:dd.f}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhjhhubh)}(hhh](h)}(hWhen not using multi-functions (norid is set, or the 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. h](h)}(h`When not using multi-functions (norid is set, or the firmware does not support multi-functions):h]h`When not using multi-functions (norid is set, or the firmware does not support multi-functions):}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhj ubh)}(hhh](h)}(h'There is only one function per domain. h]h)}(h&There is only one function per domain.h]h&There is only one function per domain.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKthj"ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hTThe domain is set from the zPCI function's UID as defined during the LPAR creation. h]h)}(hSThe domain is set from the zPCI function's UID as defined during the LPAR creation.h]hUThe domain is set from the zPCI function’s UID as defined during the LPAR creation.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhj:ubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]jjuh1hhhhKthj ubeh}(h]h ]h"]h$]h&]uh1hhj hhhNhNubh)}(hXWhen using multi-functions (norid parameter is not set), zPCI functions are addressed differently: - 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 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 for use after the function zero (the function with devfn 0) has been enumerated.h](h)}(hbWhen using multi-functions (norid parameter is not set), zPCI functions are addressed differently:h]hbWhen using multi-functions (norid parameter is not set), zPCI functions are addressed differently:}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj^ubh)}(hhh](h)}(h(There is still only one bus per domain. h]h)}(h'There is still only one bus per domain.h]h'There is still only one bus per domain.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hjsubah}(h]h ]h"]h$]h&]uh1hhjpubh)}(h*There can be up to 256 functions per bus. h]h)}(h)There can be up to 256 functions per bus.h]h)There can be up to 256 functions per bus.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1hhjpubh)}(hThe domain part of the address 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. h]h)}(hThe domain part of the address 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.h]hThe domain part of the address 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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjpubh)}(hqNew functions will only be ready for use after the function zero (the function with devfn 0) has been enumerated.h]h)}(hqNew functions will only be ready for use after the function zero (the function with devfn 0) has been enumerated.h]hqNew functions will only be ready for use after the function zero (the function with devfn 0) has been enumerated.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjpubeh}(h]h ]h"]h$]h&]jjuh1hhhhK|hj^ubeh}(h]h ]h"]h$]h&]uh1hhj hhhNhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhKqhjhhubeh}(h]enumeration-and-hotplugah ]h"]enumeration and hotplugah$]h&]uh1hhhhhhhhKlubeh}(h] s-390-pciah ]h"] s/390 pciah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjRjOjjjJjGjjjju nametypes}(jjRjjJjjuh}(jhjOj2jjCjGjjjUjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.