a_sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget2/translations/zh_CN/PCI/endpoint/pci-test-functionmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/zh_TW/PCI/endpoint/pci-test-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/it_IT/PCI/endpoint/pci-test-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ja_JP/PCI/endpoint/pci-test-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ko_KR/PCI/endpoint/pci-test-functionmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/sp_SP/PCI/endpoint/pci-test-functionmodnameN 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:spacepreserveuh1hhhhhhL/var/lib/git/docbuild/linux/Documentation/PCI/endpoint/pci-test-function.rsthKubhsection)}(hhh](htitle)}(hPCI Test Functionh]hPCI Test Function}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh field_list)}(hhh]hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h'Kishon Vijay Abraham I h]h paragraph)}(h&Kishon Vijay Abraham I h](hKishon Vijay Abraham I <}(hhhhhNhNubh reference)}(h kishon@ti.comh]h kishon@ti.com}(hhhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:kishon@ti.comuh1hhhubh>}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hXTraditionally PCI RC has always been validated by using standard PCI cards like ethernet PCI cards or USB PCI cards or SATA PCI cards. However with the addition of EP-core in linux kernel, it is possible to configure a PCI controller that can operate in EP mode to work as a test device.h]hXTraditionally PCI RC has always been validated by using standard PCI cards like ethernet PCI cards or USB PCI cards or SATA PCI cards. However with the addition of EP-core in linux kernel, it is possible to configure a PCI controller that can operate in EP mode to work as a test device.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hThe PCI endpoint test device is a virtual device (defined in software) used to test the endpoint functionality and serve as a sample driver for other PCI endpoint devices (to use the EP framework).h]hThe PCI endpoint test device is a virtual device (defined in software) used to test the endpoint functionality and serve as a sample driver for other PCI endpoint devices (to use the EP framework).}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h9The PCI endpoint test device has the following registers:h]h9The PCI endpoint test device has the following registers:}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh block_quote)}(hX1) PCI_ENDPOINT_TEST_MAGIC 2) PCI_ENDPOINT_TEST_COMMAND 3) PCI_ENDPOINT_TEST_STATUS 4) PCI_ENDPOINT_TEST_SRC_ADDR 5) PCI_ENDPOINT_TEST_DST_ADDR 6) PCI_ENDPOINT_TEST_SIZE 7) PCI_ENDPOINT_TEST_CHECKSUM 8) PCI_ENDPOINT_TEST_IRQ_TYPE 9) PCI_ENDPOINT_TEST_IRQ_NUMBER h]henumerated_list)}(hhh](h list_item)}(hPCI_ENDPOINT_TEST_MAGICh]h)}(hjZh]hPCI_ENDPOINT_TEST_MAGIC}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_COMMANDh]h)}(hjqh]hPCI_ENDPOINT_TEST_COMMAND}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjoubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_STATUSh]h)}(hjh]hPCI_ENDPOINT_TEST_STATUS}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_SRC_ADDRh]h)}(hjh]hPCI_ENDPOINT_TEST_SRC_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_DST_ADDRh]h)}(hjh]hPCI_ENDPOINT_TEST_DST_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_SIZEh]h)}(hjh]hPCI_ENDPOINT_TEST_SIZE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_CHECKSUMh]h)}(hjh]hPCI_ENDPOINT_TEST_CHECKSUM}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_IRQ_TYPEh]h)}(hjh]hPCI_ENDPOINT_TEST_IRQ_TYPE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubjW)}(hPCI_ENDPOINT_TEST_IRQ_NUMBER h]h)}(hPCI_ENDPOINT_TEST_IRQ_NUMBERh]hPCI_ENDPOINT_TEST_IRQ_NUMBER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jVhjSubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1jQhjMubah}(h]h ]h"]h$]h&]uh1jKhhhKhhhhubh bullet_list)}(hhh]jW)}(hPCI_ENDPOINT_TEST_MAGIC h]h)}(hPCI_ENDPOINT_TEST_MAGICh]hPCI_ENDPOINT_TEST_MAGIC}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj>ubah}(h]h ]h"]h$]h&]uh1jVhj;hhhhhNubah}(h]h ]h"]h$]h&]bullet*uh1j9hhhKhhhhubh)}(hzThis register will be used to test BAR0. A known pattern will be written and read back from MAGIC register to verify BAR0.h]hzThis register will be used to test BAR0. A known pattern will be written and read back from MAGIC register to verify BAR0.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK!hhhhubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_COMMAND h]h)}(hPCI_ENDPOINT_TEST_COMMANDh]hPCI_ENDPOINT_TEST_COMMAND}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjoubah}(h]h ]h"]h$]h&]uh1jVhjlhhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhK$hhhhubh)}(hmThis register will be used by the host driver to indicate the function that the endpoint device must perform.h]hmThis register will be used by the host driver to indicate the function that the endpoint device must perform.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hhhhubhtable)}(hhh]htgroup)}(hhh](hcolspec)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK@uh1jhjubhthead)}(hhh]hrow)}(hhh](hentry)}(hhh]h)}(hBitfieldh]hBitfield}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubhtbody)}(hhh](j)}(hhh](j)}(hhh]h)}(hBit 0h]hBit 0}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hraise legacy IRQh]hraise legacy IRQ}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK,hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 1h]hBit 1}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hj@ubah}(h]h ]h"]h$]h&]uh1jhj=ubj)}(hhh]h)}(h raise MSI IRQh]h raise MSI IRQ}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hjWubah}(h]h ]h"]h$]h&]uh1jhj=ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 2h]hBit 2}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjwubah}(h]h ]h"]h$]h&]uh1jhjtubj)}(hhh]h)}(hraise MSI-X IRQh]hraise MSI-X IRQ}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1jhjtubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 3h]hBit 3}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h'read command (read data from RC buffer)h]h'read command (read data from RC buffer)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 4h]hBit 4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h'write command (write data to RC buffer)h]h'write command (write data to RC buffer)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK0hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 5h]hBit 5}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h@copy command (copy data from one RC buffer to another RC buffer)h]h@copy command (copy data from one RC buffer to another RC buffer)}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhNubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_STATUS h]h)}(hPCI_ENDPOINT_TEST_STATUSh]hPCI_ENDPOINT_TEST_STATUS}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjfubah}(h]h ]h"]h$]h&]uh1jVhjchhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhK4hhhhubh)}(h=This register reflects the status of the PCI endpoint device.h]h=This register reflects the status of the PCI endpoint device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hhhhubj)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]j)}(hhh](j)}(hhh]h)}(hBitfieldh]hBitfield}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h Descriptionh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh](j)}(hhh]h)}(hBit 0h]hBit 0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h read successh]h read success}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 1h]hBit 1}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h write failh]h write fail}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK>hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 4h]hBit 4}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h copy successh]h copy success}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK?hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 5h]hBit 5}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h copy failh]h copy fail}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 6h]hBit 6}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhj<ubah}(h]h ]h"]h$]h&]uh1jhj9ubj)}(hhh]h)}(h IRQ raisedh]h IRQ raised}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKAhjSubah}(h]h ]h"]h$]h&]uh1jhj9ubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 7h]hBit 7}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjsubah}(h]h ]h"]h$]h&]uh1jhjpubj)}(hhh]h)}(hsource address is invalidh]hsource address is invalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjubah}(h]h ]h"]h$]h&]uh1jhjpubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hBit 8h]hBit 8}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hdestination address is invalidh]hdestination address is invalid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKChjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhNubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_SRC_ADDR h]h)}(hPCI_ENDPOINT_TEST_SRC_ADDRh]hPCI_ENDPOINT_TEST_SRC_ADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjubah}(h]h ]h"]h$]h&]uh1jVhjhhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhKFhhhhubh)}(hXThis register contains the source address (RC buffer address) for the COPY/READ command.h]hXThis register contains the source address (RC buffer address) for the COPY/READ command.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKHhhhhubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_DST_ADDR h]h)}(hPCI_ENDPOINT_TEST_DST_ADDRh]hPCI_ENDPOINT_TEST_DST_ADDR}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhj#ubah}(h]h ]h"]h$]h&]uh1jVhj hhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhKKhhhhubh)}(h^This register contains the destination address (RC buffer address) for the COPY/WRITE command.h]h^This register contains the destination address (RC buffer address) for the COPY/WRITE command.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhhhhubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_IRQ_TYPE h]h)}(hPCI_ENDPOINT_TEST_IRQ_TYPEh]hPCI_ENDPOINT_TEST_IRQ_TYPE}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKPhjRubah}(h]h ]h"]h$]h&]uh1jVhjOhhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhKPhhhhubh)}(h}This register contains the interrupt type (Legacy/MSI) triggered for the READ/WRITE/COPY and raise IRQ (Legacy/MSI) commands.h]h}This register contains the interrupt type (Legacy/MSI) triggered for the READ/WRITE/COPY and raise IRQ (Legacy/MSI) commands.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKRhhhhubh)}(hPossible types:h]hPossible types:}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKUhhhhubj)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh](j)}(hhh](j)}(hhh]h)}(hLegacyh]hLegacy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h0h]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKXhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hMSIh]hMSI}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hMSI-Xh]hMSI-X}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h2h]h2}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhNubj:)}(hhh]jW)}(hPCI_ENDPOINT_TEST_IRQ_NUMBER h]h)}(hPCI_ENDPOINT_TEST_IRQ_NUMBERh]hPCI_ENDPOINT_TEST_IRQ_NUMBER}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK]hjdubah}(h]h ]h"]h$]h&]uh1jVhjahhhhhNubah}(h]h ]h"]h$]h&]j\j]uh1j9hhhK]hhhhubh)}(h2This register contains the triggered ID interrupt.h]h2This register contains the triggered ID interrupt.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK_hhhhubh)}(hAdmissible values:h]hAdmissible values:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahhhhubj)}(hhh]j)}(hhh](j)}(hhh]h}(h]h ]h"]h$]h&]colwidthKuh1jhjubj)}(hhh]h}(h]h ]h"]h$]h&]colwidthK uh1jhjubj)}(hhh](j)}(hhh](j)}(hhh]h)}(hLegacyh]hLegacy}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(hjh]h0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hMSIh]hMSI}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh]h)}(h [1 .. 32]h]h [1 .. 32]}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(hhh](j)}(hhh]h)}(hMSI-Xh]hMSI-X}(hj. hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhj+ ubah}(h]h ]h"]h$]h&]uh1jhj( ubj)}(hhh]h)}(h [1 .. 2048]h]h [1 .. 2048]}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjB ubah}(h]h ]h"]h$]h&]uh1jhj( ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]colsKuh1jhjubah}(h]h ]h"]h$]h&]uh1jhhhhhhhNubeh}(h]pci-test-functionah ]h"]pci test functionah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksjfootnote_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_handlerj error_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}jw jt s nametypes}jw sh}jt hs 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.