€•%nŒ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”Œ//translations/zh_CN/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/zh_TW/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/it_IT/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ja_JP/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/ko_KR/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒPortuguese (Brazilian)”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/pt_BR/PCI/endpoint/pci-test-howto”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ//translations/sp_SP/PCI/endpoint/pci-test-howto”Œ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Œ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…””}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒI/var/lib/git/docbuild/linux/Documentation/PCI/endpoint/pci-test-howto.rst”h´KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒPCI Test User Guide”h]”hŒPCI Test User Guide”…””}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ field_list”“”)”}”(hhh]”hŒfield”“”)”}”(hhh]”(hŒ field_name”“”)”}”(hŒAuthor”h]”hŒAuthor”…””}”(hhéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hçhhäh³hÇh´KubhŒ field_body”“”)”}”(hŒ'Kishon Vijay Abraham I ”h]”hŒ paragraph”“”)”}”(hŒ&Kishon Vijay Abraham I ”h]”(hŒKishon Vijay Abraham I <”…””}”(hhÿh²hh³Nh´NubhŒ reference”“”)”}”(hŒ kishon@ti.com”h]”hŒ kishon@ti.com”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:kishon@ti.com”uh1jhhÿubhŒ>”…””}”(hhÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khhùubah}”(h]”h ]”h"]”h$]”h&]”uh1h÷hhäubeh}”(h]”h ]”h"]”h$]”h&]”uh1hâh³hÇh´Khhßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhhÊh²hh³hÇh´Kubhþ)”}”(hŒÈThis document is a guide to help users use pci-epf-test function driver and pci_endpoint_test host driver for testing PCI. The list of steps to be followed in the host side and EP side is given below.”h]”hŒÈThis document is a guide to help users use pci-epf-test function driver and pci_endpoint_test host driver for testing PCI. The list of steps to be followed in the host side and EP side is given below.”…””}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K hhÊh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒEndpoint Device”h]”hŒEndpoint Device”…””}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjCh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒEndpoint Controller Devices”h]”hŒEndpoint Controller Devices”…””}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjTh²hh³hÇh´Kubhþ)”}”(hŒ?To find the list of endpoint controller devices in the system::”h]”hŒ>To find the list of endpoint controller devices in the system:”…””}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KhjTh²hubhŒ literal_block”“”)”}”(hŒ+# ls /sys/class/pci_epc/ 51000000.pcie_ep”h]”hŒ+# ls /sys/class/pci_epc/ 51000000.pcie_ep”…””}”hjusbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´KhjTh²hubhþ)”}”(hŒ%If PCI_ENDPOINT_CONFIGFS is enabled::”h]”hŒ$If PCI_ENDPOINT_CONFIGFS is enabled:”…””}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KhjTh²hubjt)”}”(hŒ=# ls /sys/kernel/config/pci_ep/controllers 51000000.pcie_ep”h]”hŒ=# ls /sys/kernel/config/pci_ep/controllers 51000000.pcie_ep”…””}”hj‘sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´KhjTh²hubeh}”(h]”Œendpoint-controller-devices”ah ]”h"]”Œendpoint controller devices”ah$]”h&]”uh1hÈhjCh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒEndpoint Function Drivers”h]”hŒEndpoint Function Drivers”…””}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj§h²hh³hÇh´Kubhþ)”}”(hŒ=To find the list of endpoint function drivers in the system::”h]”hŒ functions/pci_epf_test/func1/vendorid # echo 0xb500 > functions/pci_epf_test/func1/deviceid # echo 32 > functions/pci_epf_test/func1/msi_interrupts # echo 2048 > functions/pci_epf_test/func1/msix_interrupts”h]”hŒÞ# echo 0x104c > functions/pci_epf_test/func1/vendorid # echo 0xb500 > functions/pci_epf_test/func1/deviceid # echo 32 > functions/pci_epf_test/func1/msi_interrupts # echo 2048 > functions/pci_epf_test/func1/msix_interrupts”…””}”hj’sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´KRhjsh²hubhþ)”}”(hŒ7By default, pci-epf-test uses the following BAR sizes::”h]”hŒ6By default, pci-epf-test uses the following BAR sizes:”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KWhjsh²hubjt)”}”(hX¹# grep . functions/pci_epf_test/func1/pci_epf_test.0/bar?_size functions/pci_epf_test/func1/pci_epf_test.0/bar0_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar1_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar2_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar3_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar4_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar5_size:1048576”h]”hX¹# grep . functions/pci_epf_test/func1/pci_epf_test.0/bar?_size functions/pci_epf_test/func1/pci_epf_test.0/bar0_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar1_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar2_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar3_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar4_size:131072 functions/pci_epf_test/func1/pci_epf_test.0/bar5_size:1048576”…””}”hj®sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´KYhjsh²hubhŒdefinition_list”“”)”}”(hhh]”hŒdefinition_list_item”“”)”}”(hŒzThe user can override a default value using e.g.:: # echo 1048576 > functions/pci_epf_test/func1/pci_epf_test.0/bar1_size ”h]”(hŒterm”“”)”}”(hŒ2The user can override a default value using e.g.::”h]”hŒ2The user can override a default value using e.g.::”…””}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÇh³hÇh´KbhjÃubhŒ definition”“”)”}”(hhh]”hþ)”}”(hŒF# echo 1048576 > functions/pci_epf_test/func1/pci_epf_test.0/bar1_size”h]”hŒF# echo 1048576 > functions/pci_epf_test/func1/pci_epf_test.0/bar1_size”…””}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KbhjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j×hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jÁh³hÇh´Kbhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjsh²hh³hÇh´Nubhþ)”}”(hŒ}Overriding the default BAR sizes can only be done before binding the pci-epf-test device to a PCI endpoint controller driver.”h]”hŒ}Overriding the default BAR sizes can only be done before binding the pci-epf-test device to a PCI endpoint controller driver.”…””}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kdhjsh²hubhþ)”}”(hŒšNote: Some endpoint controllers might have fixed-size BARs or reserved BARs; for such controllers, the corresponding BAR size in configfs will be ignored.”h]”hŒšNote: Some endpoint controllers might have fixed-size BARs or reserved BARs; for such controllers, the corresponding BAR size in configfs will be ignored.”…””}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kghjsh²hubeh}”(h]”Œconfiguring-pci-epf-test-device”ah ]”h"]”Œconfiguring pci-epf-test device”ah$]”h&]”uh1hÈhjCh²hh³hÇh´KLubhÉ)”}”(hhh]”(hÎ)”}”(hŒ,Binding pci-epf-test Device to EP Controller”h]”hŒ,Binding pci-epf-test Device to EP Controller”…””}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´Klubhþ)”}”(hŒÔIn order for the endpoint function device to be useful, it has to be bound to a PCI endpoint controller driver. Use the configfs to bind the function device to one of the controller driver present in the system::”h]”hŒÓIn order for the endpoint function device to be useful, it has to be bound to a PCI endpoint controller driver. Use the configfs to bind the function device to one of the controller driver present in the system:”…””}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Knhj h²hubjt)”}”(hŒB# ln -s functions/pci_epf_test/func1 controllers/51000000.pcie_ep/”h]”hŒB# ln -s functions/pci_epf_test/func1 controllers/51000000.pcie_ep/”…””}”hj?sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´Krhj h²hubhþ)”}”(hŒ^Once the above step is completed, the PCI endpoint is ready to establish a link with the host.”h]”hŒ^Once the above step is completed, the PCI endpoint is ready to establish a link with the host.”…””}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kthj h²hubeh}”(h]”Œ,binding-pci-epf-test-device-to-ep-controller”ah ]”h"]”Œ,binding pci-epf-test device to ep controller”ah$]”h&]”uh1hÈhjCh²hh³hÇh´KlubhÉ)”}”(hhh]”(hÎ)”}”(hŒStart the Link”h]”hŒStart the Link”…””}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjch²hh³hÇh´Kyubhþ)”}”(hŒtIn order for the endpoint device to establish a link with the host, the _start_ field should be populated with '1'::”h]”hŒwIn order for the endpoint device to establish a link with the host, the _start_ field should be populated with ‘1’:”…””}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K{hjch²hubjt)”}”(hŒ-# echo 1 > controllers/51000000.pcie_ep/start”h]”hŒ-# echo 1 > controllers/51000000.pcie_ep/start”…””}”hj‚sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´K~hjch²hubeh}”(h]”Œstart-the-link”ah ]”h"]”Œstart the link”ah$]”h&]”uh1hÈhjCh²hh³hÇh´Kyubeh}”(h]”Œendpoint-device”ah ]”h"]”Œendpoint device”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)”}”(hhh]”(hÎ)”}”(hŒRootComplex Device”h]”hŒRootComplex Device”…””}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´K‚ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ lspci Output”h]”hŒ lspci Output”…””}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj±h²hh³hÇh´K…ubhþ)”}”(hŒRNote that the devices listed here correspond to the value populated in 1.4 above::”h]”hŒQNote that the devices listed here correspond to the value populated in 1.4 above:”…””}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K‡hj±h²hubjt)”}”(hŒy00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01) 01:00.0 Unassigned class [ff00]: Texas Instruments Device b500”h]”hŒy00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01) 01:00.0 Unassigned class [ff00]: Texas Instruments Device b500”…””}”hjÐsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´KŠhj±h²hubeh}”(h]”Œ lspci-output”ah ]”h"]”Œ lspci output”ah$]”h&]”uh1hÈhj h²hh³hÇh´K…ubhÉ)”}”(hhh]”(hÎ)”}”(hŒ#Using Endpoint Test function Device”h]”hŒ#Using Endpoint Test function Device”…””}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjæh²hh³hÇh´Kubhþ)”}”(hŒÉKselftest added in tools/testing/selftests/pci_endpoint can be used to run all the default PCI endpoint tests. To build the Kselftest for PCI endpoint subsystem, the following commands should be used::”h]”hŒÈKselftest added in tools/testing/selftests/pci_endpoint can be used to run all the default PCI endpoint tests. To build the Kselftest for PCI endpoint subsystem, the following commands should be used:”…””}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K‘hjæh²hubjt)”}”(hŒ@# cd # make -C tools/testing/selftests/pci_endpoint”h]”hŒ@# cd # make -C tools/testing/selftests/pci_endpoint”…””}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´K•hjæh²hubhþ)”}”(hŒ8or if you desire to compile and install in your system::”h]”hŒ7or if you desire to compile and install in your system:”…””}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´K˜hjæh²hubjt)”}”(hŒ^# cd # make -C tools/testing/selftests/pci_endpoint INSTALL_PATH=/usr/bin install”h]”hŒ^# cd # make -C tools/testing/selftests/pci_endpoint INSTALL_PATH=/usr/bin install”…””}”hj!sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´Kšhjæh²hubhþ)”}”(hŒ-The test will be located in /usr/bin/”h]”hŒ-The test will be located in /usr/bin/”…””}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Khjæh²hubhÉ)”}”(hhh]”(hÎ)”}”(hŒKselftest Output”h]”hŒKselftest Output”…””}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj=h²hh³hÇh´K ubjt)”}”(hXû# pci_endpoint_test TAP version 13 1..16 # Starting 16 tests from 9 test cases. # RUN pci_ep_bar.BAR0.BAR_TEST ... # OK pci_ep_bar.BAR0.BAR_TEST ok 1 pci_ep_bar.BAR0.BAR_TEST # RUN pci_ep_bar.BAR1.BAR_TEST ... # OK pci_ep_bar.BAR1.BAR_TEST ok 2 pci_ep_bar.BAR1.BAR_TEST # RUN pci_ep_bar.BAR2.BAR_TEST ... # OK pci_ep_bar.BAR2.BAR_TEST ok 3 pci_ep_bar.BAR2.BAR_TEST # RUN pci_ep_bar.BAR3.BAR_TEST ... # OK pci_ep_bar.BAR3.BAR_TEST ok 4 pci_ep_bar.BAR3.BAR_TEST # RUN pci_ep_bar.BAR4.BAR_TEST ... # OK pci_ep_bar.BAR4.BAR_TEST ok 5 pci_ep_bar.BAR4.BAR_TEST # RUN pci_ep_bar.BAR5.BAR_TEST ... # OK pci_ep_bar.BAR5.BAR_TEST ok 6 pci_ep_bar.BAR5.BAR_TEST # RUN pci_ep_basic.CONSECUTIVE_BAR_TEST ... # OK pci_ep_basic.CONSECUTIVE_BAR_TEST ok 7 pci_ep_basic.CONSECUTIVE_BAR_TEST # RUN pci_ep_basic.LEGACY_IRQ_TEST ... # OK pci_ep_basic.LEGACY_IRQ_TEST ok 8 pci_ep_basic.LEGACY_IRQ_TEST # RUN pci_ep_basic.MSI_TEST ... # OK pci_ep_basic.MSI_TEST ok 9 pci_ep_basic.MSI_TEST # RUN pci_ep_basic.MSIX_TEST ... # OK pci_ep_basic.MSIX_TEST ok 10 pci_ep_basic.MSIX_TEST # RUN pci_ep_data_transfer.memcpy.READ_TEST ... # OK pci_ep_data_transfer.memcpy.READ_TEST ok 11 pci_ep_data_transfer.memcpy.READ_TEST # RUN pci_ep_data_transfer.memcpy.WRITE_TEST ... # OK pci_ep_data_transfer.memcpy.WRITE_TEST ok 12 pci_ep_data_transfer.memcpy.WRITE_TEST # RUN pci_ep_data_transfer.memcpy.COPY_TEST ... # OK pci_ep_data_transfer.memcpy.COPY_TEST ok 13 pci_ep_data_transfer.memcpy.COPY_TEST # RUN pci_ep_data_transfer.dma.READ_TEST ... # OK pci_ep_data_transfer.dma.READ_TEST ok 14 pci_ep_data_transfer.dma.READ_TEST # RUN pci_ep_data_transfer.dma.WRITE_TEST ... # OK pci_ep_data_transfer.dma.WRITE_TEST ok 15 pci_ep_data_transfer.dma.WRITE_TEST # RUN pci_ep_data_transfer.dma.COPY_TEST ... # OK pci_ep_data_transfer.dma.COPY_TEST ok 16 pci_ep_data_transfer.dma.COPY_TEST # PASSED: 16 / 16 tests passed. # Totals: pass:16 fail:0 xfail:0 xpass:0 skip:0 error:0”h]”hXû# pci_endpoint_test TAP version 13 1..16 # Starting 16 tests from 9 test cases. # RUN pci_ep_bar.BAR0.BAR_TEST ... # OK pci_ep_bar.BAR0.BAR_TEST ok 1 pci_ep_bar.BAR0.BAR_TEST # RUN pci_ep_bar.BAR1.BAR_TEST ... # OK pci_ep_bar.BAR1.BAR_TEST ok 2 pci_ep_bar.BAR1.BAR_TEST # RUN pci_ep_bar.BAR2.BAR_TEST ... # OK pci_ep_bar.BAR2.BAR_TEST ok 3 pci_ep_bar.BAR2.BAR_TEST # RUN pci_ep_bar.BAR3.BAR_TEST ... # OK pci_ep_bar.BAR3.BAR_TEST ok 4 pci_ep_bar.BAR3.BAR_TEST # RUN pci_ep_bar.BAR4.BAR_TEST ... # OK pci_ep_bar.BAR4.BAR_TEST ok 5 pci_ep_bar.BAR4.BAR_TEST # RUN pci_ep_bar.BAR5.BAR_TEST ... # OK pci_ep_bar.BAR5.BAR_TEST ok 6 pci_ep_bar.BAR5.BAR_TEST # RUN pci_ep_basic.CONSECUTIVE_BAR_TEST ... # OK pci_ep_basic.CONSECUTIVE_BAR_TEST ok 7 pci_ep_basic.CONSECUTIVE_BAR_TEST # RUN pci_ep_basic.LEGACY_IRQ_TEST ... # OK pci_ep_basic.LEGACY_IRQ_TEST ok 8 pci_ep_basic.LEGACY_IRQ_TEST # RUN pci_ep_basic.MSI_TEST ... # OK pci_ep_basic.MSI_TEST ok 9 pci_ep_basic.MSI_TEST # RUN pci_ep_basic.MSIX_TEST ... # OK pci_ep_basic.MSIX_TEST ok 10 pci_ep_basic.MSIX_TEST # RUN pci_ep_data_transfer.memcpy.READ_TEST ... # OK pci_ep_data_transfer.memcpy.READ_TEST ok 11 pci_ep_data_transfer.memcpy.READ_TEST # RUN pci_ep_data_transfer.memcpy.WRITE_TEST ... # OK pci_ep_data_transfer.memcpy.WRITE_TEST ok 12 pci_ep_data_transfer.memcpy.WRITE_TEST # RUN pci_ep_data_transfer.memcpy.COPY_TEST ... # OK pci_ep_data_transfer.memcpy.COPY_TEST ok 13 pci_ep_data_transfer.memcpy.COPY_TEST # RUN pci_ep_data_transfer.dma.READ_TEST ... # OK pci_ep_data_transfer.dma.READ_TEST ok 14 pci_ep_data_transfer.dma.READ_TEST # RUN pci_ep_data_transfer.dma.WRITE_TEST ... # OK pci_ep_data_transfer.dma.WRITE_TEST ok 15 pci_ep_data_transfer.dma.WRITE_TEST # RUN pci_ep_data_transfer.dma.COPY_TEST ... # OK pci_ep_data_transfer.dma.COPY_TEST ok 16 pci_ep_data_transfer.dma.COPY_TEST # PASSED: 16 / 16 tests passed. # Totals: pass:16 fail:0 xfail:0 xpass:0 skip:0 error:0”…””}”hjNsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´K£hj=h²hubhþ)”}”(hŒçTestcase 16 (pci_ep_data_transfer.dma.COPY_TEST) will fail for most of the DMA capable endpoint controllers due to the absence of the MEMCPY over DMA. For such controllers, it is advisable to skip this testcase using this command::”h]”hŒæTestcase 16 (pci_ep_data_transfer.dma.COPY_TEST) will fail for most of the DMA capable endpoint controllers due to the absence of the MEMCPY over DMA. For such controllers, it is advisable to skip this testcase using this command:”…””}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´KÛhj=h²hubjt)”}”(hŒO# pci_endpoint_test -f pci_ep_bar -f pci_ep_basic -v memcpy -T COPY_TEST -v dma”h]”hŒO# pci_endpoint_test -f pci_ep_bar -f pci_ep_basic -v memcpy -T COPY_TEST -v dma”…””}”hjjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1jsh³hÇh´Kàhj=h²hubeh}”(h]”Œkselftest-output”ah ]”h"]”Œkselftest output”ah$]”h&]”uh1hÈhjæh²hh³hÇh´K ubhÉ)”}”(hhh]”(hÎ)”}”(hŒKselftest EP Doorbell”h]”hŒKselftest EP Doorbell”…””}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj€h²hh³hÇh´Kãubhþ)”}”(hŒbIf the Endpoint MSI controller is used for the doorbell usecase, run below command for testing it:”h]”hŒbIf the Endpoint MSI controller is used for the doorbell usecase, run below command for testing it:”…””}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kåhj€h²hubhŒ block_quote”“”)”}”(hX+# pci_endpoint_test -f pcie_ep_doorbell # Starting 1 tests from 1 test cases. # RUN pcie_ep_doorbell.DOORBELL_TEST ... # OK pcie_ep_doorbell.DOORBELL_TEST ok 1 pcie_ep_doorbell.DOORBELL_TEST # PASSED: 1 / 1 tests passed. # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0”h]”(hþ)”}”(hŒ'# pci_endpoint_test -f pcie_ep_doorbell”h]”hŒ'# pci_endpoint_test -f pcie_ep_doorbell”…””}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kèhj¡ubhþ)”}”(hX# Starting 1 tests from 1 test cases. # RUN pcie_ep_doorbell.DOORBELL_TEST ... # OK pcie_ep_doorbell.DOORBELL_TEST ok 1 pcie_ep_doorbell.DOORBELL_TEST # PASSED: 1 / 1 tests passed. # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0”h]”hX# Starting 1 tests from 1 test cases. # RUN pcie_ep_doorbell.DOORBELL_TEST ... # OK pcie_ep_doorbell.DOORBELL_TEST ok 1 pcie_ep_doorbell.DOORBELL_TEST # PASSED: 1 / 1 tests passed. # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0”…””}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýh³hÇh´Kêhj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jŸh³hÇh´Kèhj€h²hubeh}”(h]”Œkselftest-ep-doorbell”ah ]”h"]”Œkselftest ep doorbell”ah$]”h&]”uh1hÈhjæh²hh³hÇh´Kãubeh}”(h]”Œ#using-endpoint-test-function-device”ah ]”h"]”Œ#using endpoint test function device”ah$]”h&]”uh1hÈhj h²hh³hÇh´Kubeh}”(h]”Œrootcomplex-device”ah ]”h"]”Œrootcomplex device”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K‚ubeh}”(h]”Œpci-test-user-guide”ah ]”h"]”Œpci test user guide”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”Œentry”Œ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ájjšj¤j¡jõjòjpjmjjj`j]j•j’jÜjÙjãjàjÔjÑj}jzjÌjÉuŒ nametypes”}”(jä‰j‰j¤‰jõ‰jp‰j‰j`‰j•‰j܉jã‰jÔ‰j}‰j̉uh}”(jáhÊjšjCj¡jTjòj§jmjøjjsj]j j’jcjÙj jàj±jÑjæjzj=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”“”}”…”R”Œparse_messages”]”hŒsystem_message”“”)”}”(hhh]”hþ)”}”(hŒ`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.”h]”hŒdBlank line missing before literal block (after the “::â€)? Interpreted as a definition list item.”…””}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hýhjnubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œline”KcŒsource”hÇuh1jlhjÙubaŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.