: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/misc-devices/pci-endpoint-testmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/zh_TW/misc-devices/pci-endpoint-testmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/it_IT/misc-devices/pci-endpoint-testmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ja_JP/misc-devices/pci-endpoint-testmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/ko_KR/misc-devices/pci-endpoint-testmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget2/translations/sp_SP/misc-devices/pci-endpoint-testmodnameN 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/misc-devices/pci-endpoint-test.rsthKubhsection)}(hhh](htitle)}(h%Driver for PCI Endpoint Test Functionh]h%Driver for PCI Endpoint Test Function}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThis driver should be used as a host side driver if the root complex is connected to a configurable PCI endpoint running ``pci_epf_test`` function driver configured according to [1]_.h](hyThis driver should be used as a host side driver if the root complex is connected to a configurable PCI endpoint running }(hhhhhNhNubhliteral)}(h``pci_epf_test``h]h pci_epf_test}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh) function driver configured according to }(hhhhhNhNubhfootnote_reference)}(h[1]_h]h1}(hhhhhNhNubah}(h]id1ah ]h"]h$]h&]refidid2docnamemisc-devices/pci-endpoint-testuh1hhhˌresolvedKubh.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hJThe "pci_endpoint_test" driver can be used to perform the following tests.h]hNThe “pci_endpoint_test” driver can be used to perform the following tests.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(h@The PCI driver for the test device performs the following tests:h]h@The PCI driver for the test device performs the following tests:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh block_quote)}(h#) verifying addresses programmed in BAR #) raise legacy IRQ #) raise MSI IRQ #) raise MSI-X IRQ #) read data #) write data #) copy data h]henumerated_list)}(hhh](h list_item)}(h%verifying addresses programmed in BARh]h)}(hj2h]h%verifying addresses programmed in BAR}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj0ubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(hraise legacy IRQh]h)}(hjIh]hraise legacy IRQ}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjGubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(h raise MSI IRQh]h)}(hj`h]h raise MSI IRQ}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj^ubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(hraise MSI-X IRQh]h)}(hjwh]hraise MSI-X IRQ}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjuubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(h read datah]h)}(hjh]h read data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(h write datah]h)}(hjh]h write data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j.hj+ubj/)}(h copy data h]h)}(h copy datah]h copy data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1j.hj+ubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1j)hj%ubah}(h]h ]h"]h$]h&]uh1j#hhhKhhhhubh)}(hThis misc driver creates /dev/pci-endpoint-test. for every ``pci_epf_test`` function connected to the root complex and "ioctls" should be used to perform the above tests.h](h@This misc driver creates /dev/pci-endpoint-test. for every }(hjhhhNhNubh)}(h``pci_epf_test``h]h pci_epf_test}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubhc function connected to the root complex and “ioctls” should be used to perform the above tests.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hioctlh]hioctl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubj$)}(hXPCITEST_BAR: Tests the BAR. The number of the BAR to be tested should be passed as argument. PCITEST_LEGACY_IRQ: Tests legacy IRQ PCITEST_MSI: Tests message signalled interrupts. The MSI number to be tested should be passed as argument. PCITEST_MSIX: Tests message signalled interrupts. The MSI-X number to be tested should be passed as argument. PCITEST_SET_IRQTYPE: Changes driver IRQ type configuration. The IRQ type should be passed as argument (0: Legacy, 1:MSI, 2:MSI-X). PCITEST_GET_IRQTYPE: Gets driver IRQ type configuration. PCITEST_WRITE: Perform write tests. The size of the buffer should be passed as argument. PCITEST_READ: Perform read tests. The size of the buffer should be passed as argument. PCITEST_COPY: Perform read tests. The size of the buffer should be passed as argument. h]hdefinition_list)}(hhh](hdefinition_list_item)}(h\PCITEST_BAR: Tests the BAR. The number of the BAR to be tested should be passed as argument.h](hterm)}(h PCITEST_BAR:h]h PCITEST_BAR:}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhKhjubh definition)}(hhh]h)}(hOTests the BAR. The number of the BAR to be tested should be passed as argument.h]hOTests the BAR. The number of the BAR to be tested should be passed as argument.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj5ubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhKhjubj)}(h$PCITEST_LEGACY_IRQ: Tests legacy IRQh](j$)}(hPCITEST_LEGACY_IRQ:h]hPCITEST_LEGACY_IRQ:}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK!hjRubj4)}(hhh]h)}(hTests legacy IRQh]hTests legacy IRQ}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjdubah}(h]h ]h"]h$]h&]uh1j3hjRubeh}(h]h ]h"]h$]h&]uh1jhhhK!hjubj)}(hjPCITEST_MSI: Tests message signalled interrupts. The MSI number to be tested should be passed as argument.h](j$)}(h PCITEST_MSI:h]h PCITEST_MSI:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK$hjubj4)}(hhh]h)}(h]Tests message signalled interrupts. The MSI number to be tested should be passed as argument.h]h]Tests message signalled interrupts. The MSI number to be tested should be passed as argument.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK$hjubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhK$hjubj)}(hmPCITEST_MSIX: Tests message signalled interrupts. The MSI-X number to be tested should be passed as argument.h](j$)}(h PCITEST_MSIX:h]h PCITEST_MSIX:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK'hjubj4)}(hhh]h)}(h_Tests message signalled interrupts. The MSI-X number to be tested should be passed as argument.h]h_Tests message signalled interrupts. The MSI-X number to be tested should be passed as argument.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhK'hjubj)}(hPCITEST_SET_IRQTYPE: Changes driver IRQ type configuration. The IRQ type should be passed as argument (0: Legacy, 1:MSI, 2:MSI-X).h](j$)}(hPCITEST_SET_IRQTYPE:h]hPCITEST_SET_IRQTYPE:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK*hjubj4)}(hhh]h)}(hmChanges driver IRQ type configuration. The IRQ type should be passed as argument (0: Legacy, 1:MSI, 2:MSI-X).h]hmChanges driver IRQ type configuration. The IRQ type should be passed as argument (0: Legacy, 1:MSI, 2:MSI-X).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK*hjubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhK*hjubj)}(h8PCITEST_GET_IRQTYPE: Gets driver IRQ type configuration.h](j$)}(hPCITEST_GET_IRQTYPE:h]hPCITEST_GET_IRQTYPE:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK,hjubj4)}(hhh]h)}(h#Gets driver IRQ type configuration.h]h#Gets driver IRQ type configuration.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK-hj ubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhK,hjubj)}(hXPCITEST_WRITE: Perform write tests. The size of the buffer should be passed as argument.h](j$)}(hPCITEST_WRITE:h]hPCITEST_WRITE:}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK/hj=ubj4)}(hhh]h)}(hIPerform write tests. The size of the buffer should be passed as argument.h]hIPerform write tests. The size of the buffer should be passed as argument.}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hjOubah}(h]h ]h"]h$]h&]uh1j3hj=ubeh}(h]h ]h"]h$]h&]uh1jhhhK/hjubj)}(hVPCITEST_READ: Perform read tests. The size of the buffer should be passed as argument.h](j$)}(h PCITEST_READ:h]h PCITEST_READ:}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK2hjlubj4)}(hhh]h)}(hHPerform read tests. The size of the buffer should be passed as argument.h]hHPerform read tests. The size of the buffer should be passed as argument.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK2hj~ubah}(h]h ]h"]h$]h&]uh1j3hjlubeh}(h]h ]h"]h$]h&]uh1jhhhK2hjubj)}(hWPCITEST_COPY: Perform read tests. The size of the buffer should be passed as argument. h](j$)}(h PCITEST_COPY:h]h PCITEST_COPY:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j#hhhK6hjubj4)}(hhh]h)}(hHPerform read tests. The size of the buffer should be passed as argument.h]hHPerform read tests. The size of the buffer should be passed as argument.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hjubah}(h]h ]h"]h$]h&]uh1j3hjubeh}(h]h ]h"]h$]h&]uh1jhhhK6hjubeh}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j#hhhKhjhhubhfootnote)}(h8Documentation/PCI/endpoint/function/binding/pci-test.rsth](hlabel)}(h1h]h1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hjh]h8Documentation/PCI/endpoint/function/binding/pci-test.rst}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjubeh}(h]hah ]h"]1ah$]h&]hahhuh1jhhhK8hjhhhKubeh}(h]ioctlah ]h"]ioctlah$]h&]uh1hhhhhhhhKubeh}(h]%driver-for-pci-endpoint-test-functionah ]h"]%driver for pci endpoint test functionah$]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_handlerj3error_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}1]hasrefids}nameids}(j j jjjhu nametypes}(j jjuh}(j hhhjjhju footnote_refs}js]has citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes]ja citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jAKsRparse_messages]transform_messages] transformerN include_log] decorationNhhub.