Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.
1 PCI TEST USERGUIDE 2 Kishon Vijay Abraham I <kishon@ti.com> 3 4 This document is a guide to help users use pci-epf-test function driver 5 and pci_endpoint_test host driver for testing PCI. The list of steps to 6 be followed in the host side and EP side is given below. 7 8 1. Endpoint Device 9 10 1.1 Endpoint Controller Devices 11 12 To find the list of endpoint controller devices in the system: 13 14 # ls /sys/class/pci_epc/ 15 51000000.pcie_ep 16 17 If PCI_ENDPOINT_CONFIGFS is enabled 18 # ls /sys/kernel/config/pci_ep/controllers 19 51000000.pcie_ep 20 21 1.2 Endpoint Function Drivers 22 23 To find the list of endpoint function drivers in the system: 24 25 # ls /sys/bus/pci-epf/drivers 26 pci_epf_test 27 28 If PCI_ENDPOINT_CONFIGFS is enabled 29 # ls /sys/kernel/config/pci_ep/functions 30 pci_epf_test 31 32 1.3 Creating pci-epf-test Device 33 34 PCI endpoint function device can be created using the configfs. To create 35 pci-epf-test device, the following commands can be used 36 37 # mount -t configfs none /sys/kernel/config 38 # cd /sys/kernel/config/pci_ep/ 39 # mkdir functions/pci_epf_test/func1 40 41 The "mkdir func1" above creates the pci-epf-test function device that will 42 be probed by pci_epf_test driver. 43 44 The PCI endpoint framework populates the directory with the following 45 configurable fields. 46 47 # ls functions/pci_epf_test/func1 48 baseclass_code interrupt_pin revid subsys_vendor_id 49 cache_line_size msi_interrupts subclass_code vendorid 50 deviceid progif_code subsys_id 51 52 The PCI endpoint function driver populates these entries with default values 53 when the device is bound to the driver. The pci-epf-test driver populates 54 vendorid with 0xffff and interrupt_pin with 0x0001 55 56 # cat functions/pci_epf_test/func1/vendorid 57 0xffff 58 # cat functions/pci_epf_test/func1/interrupt_pin 59 0x0001 60 61 1.4 Configuring pci-epf-test Device 62 63 The user can configure the pci-epf-test device using configfs entry. In order 64 to change the vendorid and the number of MSI interrupts used by the function 65 device, the following commands can be used. 66 67 # echo 0x104c > functions/pci_epf_test/func1/vendorid 68 # echo 0xb500 > functions/pci_epf_test/func1/deviceid 69 # echo 16 > functions/pci_epf_test/func1/msi_interrupts 70 71 1.5 Binding pci-epf-test Device to EP Controller 72 73 In order for the endpoint function device to be useful, it has to be bound to 74 a PCI endpoint controller driver. Use the configfs to bind the function 75 device to one of the controller driver present in the system. 76 77 # ln -s functions/pci_epf_test/func1 controllers/51000000.pcie_ep/ 78 79 Once the above step is completed, the PCI endpoint is ready to establish a link 80 with the host. 81 82 1.6 Start the Link 83 84 In order for the endpoint device to establish a link with the host, the _start_ 85 field should be populated with '1'. 86 87 # echo 1 > controllers/51000000.pcie_ep/start 88 89 2. RootComplex Device 90 91 2.1 lspci Output 92 93 Note that the devices listed here correspond to the value populated in 1.4 above 94 95 00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01) 96 01:00.0 Unassigned class [ff00]: Texas Instruments Device b500 97 98 2.2 Using Endpoint Test function Device 99 100 pcitest.sh added in tools/pci/ can be used to run all the default PCI endpoint 101 tests. Before pcitest.sh can be used pcitest.c should be compiled using the 102 following commands. 103 104 cd <kernel-dir> 105 make headers_install ARCH=arm 106 arm-linux-gnueabihf-gcc -Iusr/include tools/pci/pcitest.c -o pcitest 107 cp pcitest <rootfs>/usr/sbin/ 108 cp tools/pci/pcitest.sh <rootfs> 109 110 2.2.1 pcitest.sh Output 111 # ./pcitest.sh 112 BAR tests 113 114 BAR0: OKAY 115 BAR1: OKAY 116 BAR2: OKAY 117 BAR3: OKAY 118 BAR4: NOT OKAY 119 BAR5: NOT OKAY 120 121 Interrupt tests 122 123 LEGACY IRQ: NOT OKAY 124 MSI1: OKAY 125 MSI2: OKAY 126 MSI3: OKAY 127 MSI4: OKAY 128 MSI5: OKAY 129 MSI6: OKAY 130 MSI7: OKAY 131 MSI8: OKAY 132 MSI9: OKAY 133 MSI10: OKAY 134 MSI11: OKAY 135 MSI12: OKAY 136 MSI13: OKAY 137 MSI14: OKAY 138 MSI15: OKAY 139 MSI16: OKAY 140 MSI17: NOT OKAY 141 MSI18: NOT OKAY 142 MSI19: NOT OKAY 143 MSI20: NOT OKAY 144 MSI21: NOT OKAY 145 MSI22: NOT OKAY 146 MSI23: NOT OKAY 147 MSI24: NOT OKAY 148 MSI25: NOT OKAY 149 MSI26: NOT OKAY 150 MSI27: NOT OKAY 151 MSI28: NOT OKAY 152 MSI29: NOT OKAY 153 MSI30: NOT OKAY 154 MSI31: NOT OKAY 155 MSI32: NOT OKAY 156 157 Read Tests 158 159 READ ( 1 bytes): OKAY 160 READ ( 1024 bytes): OKAY 161 READ ( 1025 bytes): OKAY 162 READ (1024000 bytes): OKAY 163 READ (1024001 bytes): OKAY 164 165 Write Tests 166 167 WRITE ( 1 bytes): OKAY 168 WRITE ( 1024 bytes): OKAY 169 WRITE ( 1025 bytes): OKAY 170 WRITE (1024000 bytes): OKAY 171 WRITE (1024001 bytes): OKAY 172 173 Copy Tests 174 175 COPY ( 1 bytes): OKAY 176 COPY ( 1024 bytes): OKAY 177 COPY ( 1025 bytes): OKAY 178 COPY (1024000 bytes): OKAY 179 COPY (1024001 bytes): OKAY