€•¼ŠŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ3/translations/zh_CN/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/zh_TW/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/it_IT/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ja_JP/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/ko_KR/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/pt_BR/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ3/translations/sp_SP/networking/devlink/devlink-info”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ7SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)”h]”hŒ7SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒM/var/lib/git/docbuild/linux/Documentation/networking/devlink/devlink-info.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ Devlink Info”h]”hŒ Devlink Info”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒ�The ``devlink-info`` mechanism enables device drivers to report device (hardware and firmware) information in a standard, extensible fashion.”h]”(hŒThe ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``devlink-info``”h]”hŒ devlink-info”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhßubhŒy mechanism enables device drivers to report device (hardware and firmware) information in a standard, extensible fashion.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒAThe original motivation for the ``devlink-info`` API was twofold:”h]”(hŒ The original motivation for the ”…”�”}”(hjh²hh³Nh´Nubhè)�”}”(hŒ``devlink-info``”h]”hŒ devlink-info”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubhŒ API was twofold:”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhŒ block_quote”“”)�”}”(hX,- making it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `); - name the per component FW versions (as opposed to the crowded ethtool version string). ”h]”hŒ bullet_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒÊmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `);”h]”hÞ)�”}”(hŒÊmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also :ref:`Documentation/networking/devlink/devlink-flash.rst `);”h]”(hŒmaking it possible to automate device and firmware management in a fleet of machines in a vendor-independent fashion (see also ”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒI:ref:`Documentation/networking/devlink/devlink-flash.rst `”h]”hŒinline”“”)�”}”(hj<h]”hŒ2Documentation/networking/devlink/devlink-flash.rst”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-ref”eh"]”h$]”h&]”uh1j>hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œnetworking/devlink/devlink-info”Œ refdomain”jKŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ devlink_flash”uh1hh³hÇh´K hj2ubhŒ);”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj)ubj-)�”}”(hŒWname the per component FW versions (as opposed to the crowded ethtool version string). ”h]”hÞ)�”}”(hŒVname the per component FW versions (as opposed to the crowded ethtool version string).”h]”hŒVname the per component FW versions (as opposed to the crowded ethtool version string).”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj)ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1j'h³hÇh´K hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j!h³hÇh´K hhÊh²hubhÞ)�”}”(hŒ–``devlink-info`` supports reporting multiple types of objects. Reporting driver versions is generally discouraged - here, and via any other Linux API.”h]”(hè)�”}”(hŒ``devlink-info``”h]”hŒ devlink-info”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj•ubhŒ† supports reporting multiple types of objects. Reporting driver versions is generally discouraged - here, and via any other Linux API.”…”�”}”(hj•h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhŒtable”“”)�”}”(hhh]”(hÎ)�”}”(hŒList of top level info objects”h]”hŒList of top level info objects”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´Khj³ubhŒtgroup”“”)�”}”(hhh]”(hŒcolspec”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œcolwidth”Kuh1jÉhjÆubjÊ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jÔK_uh1jÉhjÆubhŒtbody”“”)�”}”(hhh]”(hŒrow”“”)�”}”(hhh]”(hŒentry”“”)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjåubjé)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ ``driver``”h]”hè)�”}”(hj&h]”hŒdriver”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjubjé)�”}”(hhh]”hÞ)�”}”(hŒGName of the currently used device driver, also available through sysfs.”h]”hŒGName of the currently used device driver, also available through sysfs.”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ``serial_number``”h]”hè)�”}”(hjfh]”hŒ serial_number”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhj^ubjé)�”}”(hhh]”(hÞ)�”}”(hŒSerial number of the device.”h]”hŒSerial number of the device.”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj�ubhÞ)�”}”(hŒ�This is usually the serial number of the ASIC, also often available in PCI config space of the device in the *Device Serial Number* capability.”h]”(hŒmThis is usually the serial number of the ASIC, also often available in PCI config space of the device in the ”…”�”}”(hj’h²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*Device Serial Number*”h]”hŒDevice Serial Number”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhj’ubhŒ capability.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hj�ubhÞ)�”}”(hX{The serial number should be unique per physical device. Sometimes the serial number of the device is only 48 bits long (the length of the Ethernet MAC address), and since PCI DSN is 64 bits long devices pad or encode additional information into the serial number. One example is adding port ID or PCI interface ID in the extra two bytes. Drivers should make sure to strip or normalize any such padding or interface ID, and report only the part of the serial number which uniquely identifies the hardware. In other words serial number reported for two ports of the same device or on two hosts of a multi-host device should be identical.”h]”hX{The serial number should be unique per physical device. Sometimes the serial number of the device is only 48 bits long (the length of the Ethernet MAC address), and since PCI DSN is 64 bits long devices pad or encode additional information into the serial number. One example is adding port ID or PCI interface ID in the extra two bytes. Drivers should make sure to strip or normalize any such padding or interface ID, and report only the part of the serial number which uniquely identifies the hardware. In other words serial number reported for two ports of the same device or on two hosts of a multi-host device should be identical.”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K$hj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhj^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ``board.serial_number``”h]”hè)�”}”(hjÖh]”hŒboard.serial_number”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÎubjé)�”}”(hhh]”(hÞ)�”}”(hŒ"Board serial number of the device.”h]”hŒ"Board serial number of the device.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K0hjñubhÞ)�”}”(hŒ\This is usually the serial number of the board, often available in PCI *Vital Product Data*.”h]”(hŒGThis is usually the serial number of the board, often available in PCI ”…”�”}”(hjh²hh³Nh´Nubj›)�”}”(hŒ*Vital Product Data*”h]”hŒVital Product Data”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jšhjubhŒ.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K2hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ ``fixed``”h]”hè)�”}”(hj6h]”hŒfixed”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhj.ubjé)�”}”(hhh]”(hÞ)�”}”(hŒYGroup for hardware identifiers, and versions of components which are not field-updatable.”h]”hŒYGroup for hardware identifiers, and versions of components which are not field-updatable.”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hjQubhÞ)�”}”(hXpVersions in this section identify the device design. For example, component identifiers or the board version reported in the PCI VPD. Data in ``devlink-info`` should be broken into the smallest logical components, e.g. PCI VPD may concatenate various information to form the Part Number string, while in ``devlink-info`` all parts should be reported as separate items.”h]”(hŒŽVersions in this section identify the device design. For example, component identifiers or the board version reported in the PCI VPD. Data in ”…”�”}”(hjbh²hh³Nh´Nubhè)�”}”(hŒ``devlink-info``”h]”hŒ devlink-info”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjbubhŒ’ should be broken into the smallest logical components, e.g. PCI VPD may concatenate various information to form the Part Number string, while in ”…”�”}”(hjbh²hh³Nh´Nubhè)�”}”(hŒ``devlink-info``”h]”hŒ devlink-info”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjbubhŒ0 all parts should be reported as separate items.”…”�”}”(hjbh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K9hjQubhÞ)�”}”(hŒ¹This group must not contain any frequently changing identifiers, such as serial numbers. See :ref:`Documentation/networking/devlink/devlink-flash.rst ` to understand why.”h]”(hŒ]This group must not contain any frequently changing identifiers, such as serial numbers. See ”…”�”}”(hj”h²hh³Nh´Nubh)�”}”(hŒI:ref:`Documentation/networking/devlink/devlink-flash.rst `”h]”j?)�”}”(hjžh]”hŒ2Documentation/networking/devlink/devlink-flash.rst”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”(jJŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j>hjœubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jWŒ refdomain”jªŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj]Œ devlink_flash”uh1hh³hÇh´K@hj”ubhŒ to understand why.”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjQubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ ``running``”h]”hè)�”}”(hjÚh]”hŒrunning”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KEhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÒubjé)�”}”(hhh]”hÞ)�”}”(hŒ‰Group for information about currently running software/firmware. These versions often only update after a reboot, sometimes device reset.”h]”hŒ‰Group for information about currently running software/firmware. These versions often only update after a reboot, sometimes device reset.”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KFhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ ``stored``”h]”hè)�”}”(hjh]”hŒstored”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KIhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjubjé)�”}”(hhh]”(hÞ)�”}”(hŒ5Group for software/firmware versions in device flash.”h]”hŒ5Group for software/firmware versions in device flash.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhj5ubhÞ)�”}”(hŒÎStored values must update to reflect changes in the flash even if reboot has not yet occurred. If device is not capable of updating ``stored`` versions when new software is flashed, it must not report them.”h]”(hŒ„Stored values must update to reflect changes in the flash even if reboot has not yet occurred. If device is not capable of updating ”…”�”}”(hjFh²hh³Nh´Nubhè)�”}”(hŒ ``stored``”h]”hŒstored”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjFubhŒ@ versions when new software is flashed, it must not report them.”…”�”}”(hjFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjÆubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÄhj³ubeh}”(h]”Œid1”ah ]”Œcolwidths-given”ah"]”h$]”h&]”uh1j±hhÊh²hh³Nh´NubhÞ)�”}”(hXÆEach version can be reported at most once in each version group. Firmware components stored on the flash should feature in both the ``running`` and ``stored`` sections, if device is capable of reporting ``stored`` versions (see :ref:`Documentation/networking/devlink/devlink-flash.rst `). In case software/firmware components are loaded from the disk (e.g. ``/lib/firmware``) only the running version should be reported via the kernel API.”h]”(hŒ„Each version can be reported at most once in each version group. Firmware components stored on the flash should feature in both the ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``running``”h]”hŒrunning”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ and ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``stored``”h]”hŒstored”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ- sections, if device is capable of reporting ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``stored``”h]”hŒstored”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ versions (see ”…”�”}”(hj‡h²hh³Nh´Nubh)�”}”(hŒI:ref:`Documentation/networking/devlink/devlink-flash.rst `”h]”j?)�”}”(hjÇh]”hŒ2Documentation/networking/devlink/devlink-flash.rst”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”(jJŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j>hjÅubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jWŒ refdomain”jÓŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj]Œ devlink_flash”uh1hh³hÇh´KQhj‡ubhŒG). In case software/firmware components are loaded from the disk (e.g. ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ``/lib/firmware``”h]”hŒ /lib/firmware”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒA) only the running version should be reported via the kernel API.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KQhhÊh²hubhÞ)�”}”(hŒ›Please note that any security versions reported via devlink are purely informational. Devlink does not use a secure channel to communicate with the device.”h]”hŒ›Please note that any security versions reported via devlink are purely informational. Devlink does not use a secure channel to communicate with the device.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KYhhÊh²hubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒGeneric Versions”h]”hŒGeneric Versions”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K^ubhÞ)�”}”(hX€It is expected that drivers use the following generic names for exporting version information. If a generic name for a given component doesn't exist yet, driver authors should consult existing driver-specific versions and attempt reuse. As last resort, if a component is truly unique, using driver-specific names is allowed, but these should be documented in the driver-specific file.”h]”hX‚It is expected that drivers use the following generic names for exporting version information. If a generic name for a given component doesn’t exist yet, driver authors should consult existing driver-specific versions and attempt reuse. As last resort, if a component is truly unique, using driver-specific names is allowed, but these should be documented in the driver-specific file.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K`hjh²hubhÞ)�”}”(hŒ9All versions should try to use the following terminology:”h]”hŒ9All versions should try to use the following terminology:”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kfhjh²hubj²)�”}”(hhh]”(hÎ)�”}”(hŒList of common version suffixes”h]”hŒList of common version suffixes”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍh³hÇh´Khhj<ubjÅ)�”}”(hhh]”(jÊ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jÔK uh1jÉhjMubjÊ)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”jÔKZuh1jÉhjMubjß)�”}”(hhh]”(jä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒName”h]”hŒName”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kkhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjeubjé)�”}”(hhh]”hÞ)�”}”(hŒ Description”h]”hŒ Description”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Klhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjbubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ``id``, ``revision``”h]”(hè)�”}”(hŒ``id``”h]”hŒid”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¢ubhŒ, ”…”�”}”(hj¢h²hh³Nh´Nubhè)�”}”(hŒ ``revision``”h]”hŒrevision”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KmhjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjœubjé)�”}”(hhh]”hÞ)�”}”(hŒGIdentifiers of designs and revision, mostly used for hardware versions.”h]”hŒGIdentifiers of designs and revision, mostly used for hardware versions.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KnhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjbubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ``api``”h]”hè)�”}”(hj÷h]”hŒapi”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhjõubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kphjòubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjïubjé)�”}”(hhh]”hÞ)�”}”(hŒÇVersion of API between components. API items are usually of limited value to the user, and can be inferred from other versions by the vendor, so adding API versions is generally discouraged as noise.”h]”hŒÇVersion of API between components. API items are usually of limited value to the user, and can be inferred from other versions by the vendor, so adding API versions is generally discouraged as noise.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kqhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjbubjä)�”}”(hhh]”(jé)�”}”(hhh]”hÞ)�”}”(hŒ ``bundle_id``”h]”hè)�”}”(hj7h]”hŒ bundle_id”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kuhj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jèhj/ubjé)�”}”(hhh]”(hÞ)�”}”(hXIdentifier of a distribution package which was flashed onto the device. This is an attribute of a firmware package which covers multiple versions for ease of managing firmware images (see :ref:`Documentation/networking/devlink/devlink-flash.rst `).”h]”(hŒ¼Identifier of a distribution package which was flashed onto the device. This is an attribute of a firmware package which covers multiple versions for ease of managing firmware images (see ”…”�”}”(hjUh²hh³Nh´Nubh)�”}”(hŒI:ref:`Documentation/networking/devlink/devlink-flash.rst `”h]”j?)�”}”(hj_h]”hŒ2Documentation/networking/devlink/devlink-flash.rst”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”(jJŒstd”Œstd-ref”eh"]”h$]”h&]”uh1j>hj]ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jWŒ refdomain”jkŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆj]Œ devlink_flash”uh1hh³hÇh´KvhjUubhŒ).”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KvhjRubhÞ)�”}”(hŒÖ``bundle_id`` can appear in both ``running`` and ``stored`` versions, but it must not be reported if any of the components covered by the ``bundle_id`` was changed and no longer matches the version from the bundle.”h]”(hè)�”}”(hŒ ``bundle_id``”h]”hŒ bundle_id”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ can appear in both ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``running``”h]”hŒrunning”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ and ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``stored``”h]”hŒstored”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒO versions, but it must not be reported if any of the components covered by the ”…”�”}”(hj‡h²hh³Nh´Nubhè)�”}”(hŒ ``bundle_id``”h]”hŒ bundle_id”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj‡ubhŒ? was changed and no longer matches the version from the bundle.”…”�”}”(hj‡h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K{hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1jèhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jãhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÞhjMubeh}”(h]”h ]”h"]”h$]”h&]”Œcols”Kuh1jÄhj<ubeh}”(h]”Œid2”ah ]”jƒah"]”h$]”h&]”uh1j±hjh²hh³Nh´NubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒboard.id”h]”hŒboard.id”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjùh²hh³hÇh´K�ubhÞ)�”}”(hŒ&Unique identifier of the board design.”h]”hŒ&Unique identifier of the board design.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kƒhjùh²hubeh}”(h]”Œboard-id”ah ]”h"]”Œboard.id”ah$]”h&]”uh1hÈhjh²hh³hÇh´K�ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ board.rev”h]”hŒ board.rev”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´K†ubhÞ)�”}”(hŒBoard design revision.”h]”hŒBoard design revision.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kˆhj h²hubeh}”(h]”Œ board-rev”ah ]”h"]”Œ board.rev”ah$]”h&]”uh1hÈhjh²hh³hÇh´K†ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒasic.id”h]”hŒasic.id”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjGh²hh³hÇh´K‹ubhÞ)�”}”(hŒASIC design identifier.”h]”hŒASIC design identifier.”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K�hjGh²hubeh}”(h]”Œasic-id”ah ]”h"]”Œasic.id”ah$]”h&]”uh1hÈhjh²hh³hÇh´K‹ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒasic.rev”h]”hŒasic.rev”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjnh²hh³hÇh´K�ubhÞ)�”}”(hŒASIC design revision/stepping.”h]”hŒASIC design revision/stepping.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K’hjnh²hubeh}”(h]”Œasic-rev”ah ]”h"]”Œasic.rev”ah$]”h&]”uh1hÈhjh²hh³hÇh´K�ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒboard.manufacture”h]”hŒboard.manufacture”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj•h²hh³hÇh´K•ubhÞ)�”}”(hŒEAn identifier of the company or the facility which produced the part.”h]”hŒEAn identifier of the company or the facility which produced the part.”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K—hj•h²hubeh}”(h]”Œboard-manufacture”ah ]”h"]”Œboard.manufacture”ah$]”h&]”uh1hÈhjh²hh³hÇh´K•ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒboard.part_number”h]”hŒboard.part_number”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¼h²hh³hÇh´KšubhÞ)�”}”(hŒ,Part number of the board and its components.”h]”hŒ,Part number of the board and its components.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kœhj¼h²hubeh}”(h]”Œboard-part-number”ah ]”h"]”Œboard.part_number”ah$]”h&]”uh1hÈhjh²hh³hÇh´KšubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw”h]”hŒfw”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjãh²hh³hÇh´KŸubhÞ)�”}”(hŒTOverall firmware version, often representing the collection of fw.mgmt, fw.app, etc.”h]”hŒTOverall firmware version, often representing the collection of fw.mgmt, fw.app, etc.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¡hjãh²hubeh}”(h]”Œfw”ah ]”h"]”Œfw”ah$]”h&]”uh1hÈhjh²hh³hÇh´KŸubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.mgmt”h]”hŒfw.mgmt”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´K¥ubhÞ)�”}”(hŒ—Control unit firmware version. This firmware is responsible for house keeping tasks, PHY control etc. but not the packet-by-packet data path operation.”h]”hŒ—Control unit firmware version. This firmware is responsible for house keeping tasks, PHY control etc. but not the packet-by-packet data path operation.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K§hj h²hubeh}”(h]”Œfw-mgmt”ah ]”h"]”Œfw.mgmt”ah$]”h&]”uh1hÈhjh²hh³hÇh´K¥ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ fw.mgmt.api”h]”hŒ fw.mgmt.api”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj1h²hh³hÇh´K¬ubhÞ)�”}”(hŒ`Firmware interface specification version of the software interfaces between driver and firmware.”h]”hŒ`Firmware interface specification version of the software interfaces between driver and firmware.”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K®hj1h²hubeh}”(h]”Œ fw-mgmt-api”ah ]”h"]”Œ fw.mgmt.api”ah$]”h&]”uh1hÈhjh²hh³hÇh´K¬ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.app”h]”hŒfw.app”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjXh²hh³hÇh´K²ubhÞ)�”}”(hŒ=Data path microcode controlling high-speed packet processing.”h]”hŒ=Data path microcode controlling high-speed packet processing.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K´hjXh²hubeh}”(h]”Œfw-app”ah ]”h"]”Œfw.app”ah$]”h&]”uh1hÈhjh²hh³hÇh´K²ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.undi”h]”hŒfw.undi”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjh²hh³hÇh´K·ubhÞ)�”}”(hŒ=UNDI software, may include the UEFI driver, firmware or both.”h]”hŒ=UNDI software, may include the UEFI driver, firmware or both.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¹hjh²hubeh}”(h]”Œfw-undi”ah ]”h"]”Œfw.undi”ah$]”h&]”uh1hÈhjh²hh³hÇh´K·ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.ncsi”h]”hŒfw.ncsi”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj¦h²hh³hÇh´K¼ubhÞ)�”}”(hŒfVersion of the software responsible for supporting/handling the Network Controller Sideband Interface.”h]”hŒfVersion of the software responsible for supporting/handling the Network Controller Sideband Interface.”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K¾hj¦h²hubeh}”(h]”Œfw-ncsi”ah ]”h"]”Œfw.ncsi”ah$]”h&]”uh1hÈhjh²hh³hÇh´K¼ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.psid”h]”hŒfw.psid”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÍh²hh³hÇh´KÂubhÞ)�”}”(hŒƒUnique identifier of the firmware parameter set. These are usually parameters of a particular board, defined at manufacturing time.”h]”hŒƒUnique identifier of the firmware parameter set. These are usually parameters of a particular board, defined at manufacturing time.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÄhjÍh²hubeh}”(h]”Œfw-psid”ah ]”h"]”Œfw.psid”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÂubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒfw.roce”h]”hŒfw.roce”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjôh²hh³hÇh´KÈubhÞ)�”}”(hŒHRoCE firmware version which is responsible for handling roce management.”h]”hŒHRoCE firmware version which is responsible for handling roce management.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÊhjôh²hubeh}”(h]”Œfw-roce”ah ]”h"]”Œfw.roce”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÈubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ fw.bundle_id”h]”hŒ fw.bundle_id”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´KÎubhÞ)�”}”(hŒ0Unique identifier of the entire firmware bundle.”h]”hŒ0Unique identifier of the entire firmware bundle.”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÐhj h²hubeh}”(h]”Œ fw-bundle-id”ah ]”h"]”Œ fw.bundle_id”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÎubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ fw.bootloader”h]”hŒ fw.bootloader”…”�”}”(hjE h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjB h²hh³hÇh´KÓubhÞ)�”}”(hŒVersion of the bootloader.”h]”hŒVersion of the bootloader.”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÕhjB h²hubeh}”(h]”Œ fw-bootloader”ah ]”h"]”Œ fw.bootloader”ah$]”h&]”uh1hÈhjh²hh³hÇh´KÓubeh}”(h]”Œgeneric-versions”ah ]”h"]”Œgeneric versions”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K^ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Future work”h]”hŒ Future work”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjq h²hh³hÇh´KØubhÞ)�”}”(hŒ)The following extensions could be useful:”h]”hŒ)The following extensions could be useful:”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÚhjq h²hubj")�”}”(hXH- on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.”h]”j()�”}”(hhh]”j-)�”}”(hX>on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.”h]”hÞ)�”}”(hX>on-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ``MODULE_FIRMWARE()`` macro. These, however, are per module, rather than per device. It'd be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.”h]”(hŒqon-disk firmware file names - drivers list the file names of firmware they may need to load onto devices via the ”…”�”}”(hj› h²hh³Nh´Nubhè)�”}”(hŒ``MODULE_FIRMWARE()``”h]”hŒMODULE_FIRMWARE()”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhj› ubhŒº macro. These, however, are per module, rather than per device. It’d be useful to list the names of firmware files the driver will try to load for a given device, in order of priority.”…”�”}”(hj› h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KÜhj— ubah}”(h]”h ]”h"]”h$]”h&]”uh1j,hj” ubah}”(h]”h ]”h"]”h$]”h&]”j�jŽuh1j'h³hÇh´KÜhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j!h³hÇh´KÜhjq h²hubeh}”(h]”Œ future-work”ah ]”h"]”Œ future work”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KØubeh}”(h]”Œ devlink-info”ah ]”h"]”Œ devlink info”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”jèŒfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jÿ Œerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(jÚ j× jn jk jjjDjAjkjhj’j�j¹j¶jàjÝjjj.j+jUjRj|jyj£j jÊjÇjñjîj j j? j< jf jc jÒ jÏ uŒ nametypes”}”(jÚ ‰jn ‰j‰jD‰jk‰j’‰j¹‰jà‰j‰j.‰jU‰j|‰j£‰jʉjñ‰j ‰j? ‰jf ‰jÒ ‰uh}”(j× hÊjk jjjùjAj jhjGj�jnj¶j•jÝj¼jjãj+j jRj1jyjXj jjÇj¦jîjÍj jôj< j jc jB jÏ jq j�j³jôj<uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”j Ks…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.