<!DOCTYPE html>
<html lang="en" data-content_root="../../">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>S/390 PCI — The Linux Kernel documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="../../_static/alabaster.css?v=3918102e" />
<script src="../../_static/documentation_options.js?v=5929fcd5"></script>
<script src="../../_static/doctools.js?v=9bcbadda"></script>
<script src="../../_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="ibm 3270 changelog" href="text_files.html" />
<link rel="prev" title="S/390 common I/O-Layer" href="common_io.html" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../../index.html">
<img class="logo" src="../../_static/logo.svg" alt="Logo of The Linux Kernel"/>
</a></p>
<h1 class="logo"><a href="../../index.html">The Linux Kernel</a></h1>
<p class="blurb">6.18.50</p>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<p>
<h3 class="kernel-toc-contents">Contents</h3>
<input type="checkbox" class="kernel-toc-toggle" id = "kernel-toc-toggle" checked>
<label class="kernel-toc-title" for="kernel-toc-toggle"></label>
<div class="kerneltoc" id="kerneltoc">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/development-process.html">Development process</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/submitting-patches.html">Submitting patches</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/code-of-conduct.html">Code of conduct</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../maintainer/index.html">Maintainer handbook</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../process/index.html">All development-process docs</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../core-api/index.html">Core API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../driver-api/index.html">Driver APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../subsystem-apis.html">Subsystems</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../locking/index.html">Locking</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../process/license-rules.html">Licensing rules</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../doc-guide/index.html">Writing documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/index.html">Development tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../dev-tools/testing-overview.html">Testing guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kernel-hacking/index.html">Hacking guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../trace/index.html">Tracing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../fault-injection/index.html">Fault injection</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../livepatch/index.html">Livepatching</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../rust/index.html">Rust</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/index.html">Administration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../kbuild/index.html">Build system</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../admin-guide/reporting-issues.html">Reporting issues</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../tools/index.html">Userspace tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../userspace-api/index.html">Userspace API</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../firmware-guide/index.html">Firmware</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../devicetree/index.html">Firmware and Devicetree</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">CPU architectures</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../arc/index.html">ARC architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arm/index.html">ARM Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../arm64/index.html">ARM64 Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../loongarch/index.html">LoongArch Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../m68k/index.html">m68k Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../mips/index.html">MIPS-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../nios2/index.html">Nios II Specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../openrisc/index.html">OpenRISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../parisc/index.html">PA-RISC Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../powerpc/index.html">powerpc</a></li>
<li class="toctree-l2"><a class="reference internal" href="../riscv/index.html">RISC-V architecture</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">s390 Architecture</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="cds.html">Linux for S/390 and zSeries</a></li>
<li class="toctree-l3"><a class="reference internal" href="3270.html">IBM 3270 Display System support</a></li>
<li class="toctree-l3"><a class="reference internal" href="driver-model.html">S/390 driver model interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="mm.html">Memory Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="monreader.html">Linux API for read access to z/VM Monitor Records</a></li>
<li class="toctree-l3"><a class="reference internal" href="qeth.html">IBM s390 QDIO Ethernet Driver</a></li>
<li class="toctree-l3"><a class="reference internal" href="s390dbf.html">S390 Debug Feature</a></li>
<li class="toctree-l3"><a class="reference internal" href="vfio-ap.html">Adjunct Processor (AP) facility</a></li>
<li class="toctree-l3"><a class="reference internal" href="vfio-ap-locking.html">VFIO AP Locks Overview</a></li>
<li class="toctree-l3"><a class="reference internal" href="vfio-ccw.html">vfio-ccw: the basic infrastructure</a></li>
<li class="toctree-l3"><a class="reference internal" href="zfcpdump.html">The s390 SCSI dump tool (zfcpdump)</a></li>
<li class="toctree-l3"><a class="reference internal" href="common_io.html">S/390 common I/O-Layer</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">S/390 PCI</a></li>
<li class="toctree-l3"><a class="reference internal" href="text_files.html">ibm 3270 changelog</a></li>
<li class="toctree-l3"><a class="reference internal" href="text_files.html#ibm-3270-config3270-sh">ibm 3270 config3270.sh</a></li>
<li class="toctree-l3"><a class="reference internal" href="features.html">Feature status on s390 architecture</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../sh/index.html">SuperH Interfaces Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sparc/index.html">Sparc Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="../x86/index.html">x86-specific Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="../xtensa/index.html">Xtensa Architecture</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../staging/index.html">Unsorted documentation</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../translations/index.html">Translations</a></li>
</ul>
</div>
<script type="text/javascript"> <!--
var sbar = document.getElementsByClassName("sphinxsidebar")[0];
let currents = document.getElementsByClassName("current")
if (currents.length) {
sbar.scrollTop = currents[currents.length - 1].offsetTop;
}
--> </script>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/arch/s390/pci.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="s-390-pci">
<h1>S/390 PCI<a class="headerlink" href="#s-390-pci" title="Link to this heading">¶</a></h1>
<dl class="simple">
<dt>Authors:</dt><dd><ul class="simple">
<li><p>Pierre Morel</p></li>
</ul>
</dd>
</dl>
<p>Copyright, IBM Corp. 2020</p>
<section id="command-line-parameters-and-debugfs-entries">
<h2>Command line parameters and debugfs entries<a class="headerlink" href="#command-line-parameters-and-debugfs-entries" title="Link to this heading">¶</a></h2>
<section id="command-line-parameters">
<h3>Command line parameters<a class="headerlink" href="#command-line-parameters" title="Link to this heading">¶</a></h3>
<ul>
<li><p>nomio</p>
<p>Do not use PCI Mapped I/O (MIO) instructions.</p>
</li>
<li><p>norid</p>
<p>Ignore the RID field and force use of one PCI domain per PCI function.</p>
</li>
</ul>
</section>
<section id="debugfs-entries">
<h3>debugfs entries<a class="headerlink" href="#debugfs-entries" title="Link to this heading">¶</a></h3>
<p>The S/390 debug feature (s390dbf) generates views to hold various debug results in sysfs directories of the form:</p>
<blockquote>
<div><ul class="simple">
<li><p>/sys/kernel/debug/s390dbf/pci_*/</p></li>
</ul>
</div></blockquote>
<p>For example:</p>
<blockquote>
<div><ul class="simple">
<li><p>/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.</p></li>
</ul>
<p>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
<a class="reference internal" href="s390dbf.html"><span class="doc">S390 Debug Feature</span></a>.</p>
</div></blockquote>
</section>
</section>
<section id="sysfs-entries">
<h2>Sysfs entries<a class="headerlink" href="#sysfs-entries" title="Link to this heading">¶</a></h2>
<p>Entries specific to zPCI functions and entries that hold zPCI information.</p>
<ul>
<li><p>/sys/bus/pci/slots/XXXXXXXX</p>
<p>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.</p>
<ul class="simple">
<li><p>/sys/bus/pci/slots/XXXXXXXX/power</p></li>
</ul>
<p>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</p>
</li>
<li><p>/sys/bus/pci/devices/XXXX:XX:XX.X/</p>
<ul class="simple">
<li><p>function_id
A zPCI function identifier that uniquely identifies the function in the Z server.</p></li>
<li><p>function_handle
Low-level identifier used for a configured PCI function.
It might be useful for debugging.</p></li>
<li><p>pchid
Model-dependent location of the I/O adapter.</p></li>
<li><p>pfgid
PCI function group ID, functions that share identical functionality
use a common identifier.
A PCI group defines interrupts, IOMMU, IOTLB, and DMA specifics.</p></li>
<li><p>vfn
The virtual function number, from 1 to N for virtual functions,
0 for physical functions.</p></li>
<li><p>pft
The PCI function type</p></li>
<li><p>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.</p></li>
<li><p>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.</p></li>
<li><p>uid_is_unique
Indicates whether the user identifier (UID) is guaranteed to be and remain
unique within this Linux instance.</p></li>
<li><p>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.</p></li>
</ul>
</li>
</ul>
</section>
<section id="enumeration-and-hotplug">
<h2>Enumeration and hotplug<a class="headerlink" href="#enumeration-and-hotplug" title="Link to this heading">¶</a></h2>
<p>The PCI address consists of four parts: domain, bus, device and function,
and is of this form: DDDD:BB:dd.f</p>
<ul class="simple">
<li><p>When not using multi-functions (norid is set, or the firmware does not
support multi-functions):</p>
<ul>
<li><p>There is only one function per domain.</p></li>
<li><p>The domain is set from the zPCI function’s UID as defined during the
LPAR creation.</p></li>
</ul>
</li>
<li><p>When using multi-functions (norid parameter is not set),
zPCI functions are addressed differently:</p>
<ul>
<li><p>There is still only one bus per domain.</p></li>
<li><p>There can be up to 256 functions per bus.</p></li>
<li><p>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.</p></li>
<li><p>New functions will only be ready for use after the function zero
(the function with devfn 0) has been enumerated.</p></li>
</ul>
</li>
</ul>
</section>
</section>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
©The kernel development community.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
& <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="../../_sources/arch/s390/pci.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>