Convert plain text documentation to reStructuredText format and add it to Sphinx TOC tree. No essential content change. Signed-off-by: Changbin Du <changbin.du@gmail.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
		
			
				
	
	
		
			236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			236 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. SPDX-License-Identifier: GPL-2.0
 | |
| 
 | |
| ===================
 | |
| PCI Test User Guide
 | |
| ===================
 | |
| 
 | |
| :Author: Kishon Vijay Abraham I <kishon@ti.com>
 | |
| 
 | |
| 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.
 | |
| 
 | |
| Endpoint Device
 | |
| ===============
 | |
| 
 | |
| Endpoint Controller Devices
 | |
| ---------------------------
 | |
| 
 | |
| To find the list of endpoint controller devices in the system::
 | |
| 
 | |
| 	# ls /sys/class/pci_epc/
 | |
| 	  51000000.pcie_ep
 | |
| 
 | |
| If PCI_ENDPOINT_CONFIGFS is enabled::
 | |
| 
 | |
| 	# ls /sys/kernel/config/pci_ep/controllers
 | |
| 	  51000000.pcie_ep
 | |
| 
 | |
| 
 | |
| Endpoint Function Drivers
 | |
| -------------------------
 | |
| 
 | |
| To find the list of endpoint function drivers in the system::
 | |
| 
 | |
| 	# ls /sys/bus/pci-epf/drivers
 | |
| 	  pci_epf_test
 | |
| 
 | |
| If PCI_ENDPOINT_CONFIGFS is enabled::
 | |
| 
 | |
| 	# ls /sys/kernel/config/pci_ep/functions
 | |
| 	  pci_epf_test
 | |
| 
 | |
| 
 | |
| Creating pci-epf-test Device
 | |
| ----------------------------
 | |
| 
 | |
| PCI endpoint function device can be created using the configfs. To create
 | |
| pci-epf-test device, the following commands can be used::
 | |
| 
 | |
| 	# mount -t configfs none /sys/kernel/config
 | |
| 	# cd /sys/kernel/config/pci_ep/
 | |
| 	# mkdir functions/pci_epf_test/func1
 | |
| 
 | |
| The "mkdir func1" above creates the pci-epf-test function device that will
 | |
| be probed by pci_epf_test driver.
 | |
| 
 | |
| The PCI endpoint framework populates the directory with the following
 | |
| configurable fields::
 | |
| 
 | |
| 	# ls functions/pci_epf_test/func1
 | |
| 	  baseclass_code	interrupt_pin	progif_code	subsys_id
 | |
| 	  cache_line_size	msi_interrupts	revid		subsys_vendorid
 | |
| 	  deviceid          	msix_interrupts	subclass_code	vendorid
 | |
| 
 | |
| The PCI endpoint function driver populates these entries with default values
 | |
| when the device is bound to the driver. The pci-epf-test driver populates
 | |
| vendorid with 0xffff and interrupt_pin with 0x0001::
 | |
| 
 | |
| 	# cat functions/pci_epf_test/func1/vendorid
 | |
| 	  0xffff
 | |
| 	# cat functions/pci_epf_test/func1/interrupt_pin
 | |
| 	  0x0001
 | |
| 
 | |
| 
 | |
| Configuring pci-epf-test Device
 | |
| -------------------------------
 | |
| 
 | |
| The user can configure the pci-epf-test device using configfs entry. In order
 | |
| to change the vendorid and the number of MSI interrupts used by the function
 | |
| device, the following commands can be used::
 | |
| 
 | |
| 	# echo 0x104c > functions/pci_epf_test/func1/vendorid
 | |
| 	# echo 0xb500 > functions/pci_epf_test/func1/deviceid
 | |
| 	# echo 16 > functions/pci_epf_test/func1/msi_interrupts
 | |
| 	# echo 8 > functions/pci_epf_test/func1/msix_interrupts
 | |
| 
 | |
| 
 | |
| Binding pci-epf-test Device to EP Controller
 | |
| --------------------------------------------
 | |
| 
 | |
| 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::
 | |
| 
 | |
| 	# ln -s functions/pci_epf_test/func1 controllers/51000000.pcie_ep/
 | |
| 
 | |
| Once the above step is completed, the PCI endpoint is ready to establish a link
 | |
| with the host.
 | |
| 
 | |
| 
 | |
| Start the Link
 | |
| --------------
 | |
| 
 | |
| In order for the endpoint device to establish a link with the host, the _start_
 | |
| field should be populated with '1'::
 | |
| 
 | |
| 	# echo 1 > controllers/51000000.pcie_ep/start
 | |
| 
 | |
| 
 | |
| RootComplex Device
 | |
| ==================
 | |
| 
 | |
| lspci Output
 | |
| ------------
 | |
| 
 | |
| Note that the devices listed here correspond to the value populated in 1.4
 | |
| above::
 | |
| 
 | |
| 	00:00.0 PCI bridge: Texas Instruments Device 8888 (rev 01)
 | |
| 	01:00.0 Unassigned class [ff00]: Texas Instruments Device b500
 | |
| 
 | |
| 
 | |
| Using Endpoint Test function Device
 | |
| -----------------------------------
 | |
| 
 | |
| pcitest.sh added in tools/pci/ can be used to run all the default PCI endpoint
 | |
| tests. To compile this tool the following commands should be used::
 | |
| 
 | |
| 	# cd <kernel-dir>
 | |
| 	# make -C tools/pci
 | |
| 
 | |
| or if you desire to compile and install in your system::
 | |
| 
 | |
| 	# cd <kernel-dir>
 | |
| 	# make -C tools/pci install
 | |
| 
 | |
| The tool and script will be located in <rootfs>/usr/bin/
 | |
| 
 | |
| 
 | |
| pcitest.sh Output
 | |
| ~~~~~~~~~~~~~~~~~
 | |
| ::
 | |
| 
 | |
| 	# pcitest.sh
 | |
| 	BAR tests
 | |
| 
 | |
| 	BAR0:           OKAY
 | |
| 	BAR1:           OKAY
 | |
| 	BAR2:           OKAY
 | |
| 	BAR3:           OKAY
 | |
| 	BAR4:           NOT OKAY
 | |
| 	BAR5:           NOT OKAY
 | |
| 
 | |
| 	Interrupt tests
 | |
| 
 | |
| 	SET IRQ TYPE TO LEGACY:         OKAY
 | |
| 	LEGACY IRQ:     NOT OKAY
 | |
| 	SET IRQ TYPE TO MSI:            OKAY
 | |
| 	MSI1:           OKAY
 | |
| 	MSI2:           OKAY
 | |
| 	MSI3:           OKAY
 | |
| 	MSI4:           OKAY
 | |
| 	MSI5:           OKAY
 | |
| 	MSI6:           OKAY
 | |
| 	MSI7:           OKAY
 | |
| 	MSI8:           OKAY
 | |
| 	MSI9:           OKAY
 | |
| 	MSI10:          OKAY
 | |
| 	MSI11:          OKAY
 | |
| 	MSI12:          OKAY
 | |
| 	MSI13:          OKAY
 | |
| 	MSI14:          OKAY
 | |
| 	MSI15:          OKAY
 | |
| 	MSI16:          OKAY
 | |
| 	MSI17:          NOT OKAY
 | |
| 	MSI18:          NOT OKAY
 | |
| 	MSI19:          NOT OKAY
 | |
| 	MSI20:          NOT OKAY
 | |
| 	MSI21:          NOT OKAY
 | |
| 	MSI22:          NOT OKAY
 | |
| 	MSI23:          NOT OKAY
 | |
| 	MSI24:          NOT OKAY
 | |
| 	MSI25:          NOT OKAY
 | |
| 	MSI26:          NOT OKAY
 | |
| 	MSI27:          NOT OKAY
 | |
| 	MSI28:          NOT OKAY
 | |
| 	MSI29:          NOT OKAY
 | |
| 	MSI30:          NOT OKAY
 | |
| 	MSI31:          NOT OKAY
 | |
| 	MSI32:          NOT OKAY
 | |
| 	SET IRQ TYPE TO MSI-X:          OKAY
 | |
| 	MSI-X1:         OKAY
 | |
| 	MSI-X2:         OKAY
 | |
| 	MSI-X3:         OKAY
 | |
| 	MSI-X4:         OKAY
 | |
| 	MSI-X5:         OKAY
 | |
| 	MSI-X6:         OKAY
 | |
| 	MSI-X7:         OKAY
 | |
| 	MSI-X8:         OKAY
 | |
| 	MSI-X9:         NOT OKAY
 | |
| 	MSI-X10:        NOT OKAY
 | |
| 	MSI-X11:        NOT OKAY
 | |
| 	MSI-X12:        NOT OKAY
 | |
| 	MSI-X13:        NOT OKAY
 | |
| 	MSI-X14:        NOT OKAY
 | |
| 	MSI-X15:        NOT OKAY
 | |
| 	MSI-X16:        NOT OKAY
 | |
| 	[...]
 | |
| 	MSI-X2047:      NOT OKAY
 | |
| 	MSI-X2048:      NOT OKAY
 | |
| 
 | |
| 	Read Tests
 | |
| 
 | |
| 	SET IRQ TYPE TO MSI:            OKAY
 | |
| 	READ (      1 bytes):           OKAY
 | |
| 	READ (   1024 bytes):           OKAY
 | |
| 	READ (   1025 bytes):           OKAY
 | |
| 	READ (1024000 bytes):           OKAY
 | |
| 	READ (1024001 bytes):           OKAY
 | |
| 
 | |
| 	Write Tests
 | |
| 
 | |
| 	WRITE (      1 bytes):          OKAY
 | |
| 	WRITE (   1024 bytes):          OKAY
 | |
| 	WRITE (   1025 bytes):          OKAY
 | |
| 	WRITE (1024000 bytes):          OKAY
 | |
| 	WRITE (1024001 bytes):          OKAY
 | |
| 
 | |
| 	Copy Tests
 | |
| 
 | |
| 	COPY (      1 bytes):           OKAY
 | |
| 	COPY (   1024 bytes):           OKAY
 | |
| 	COPY (   1025 bytes):           OKAY
 | |
| 	COPY (1024000 bytes):           OKAY
 | |
| 	COPY (1024001 bytes):           OKAY
 |