File Index
Files and directories
Sign in
FILE

TESTING

File preview with syntax highlighting.

linux-6.19.14/drivers/platform/raspberrypi/vchiq-interface/TESTING PLAIN TEXT
  1This document contains some hints to test the function of the VCHIQ driver
  2without having additional hardware to the Raspberry Pi.
  3
  4* Requirements & limitations
  5
  6Testing the VCHIQ driver requires a Raspberry Pi with one of the following SoC:
  7  - BCM2835 ( e.g. Raspberry Pi Zero W )
  8  - BCM2836 ( e.g. Raspberry Pi 2 )
  9  - BCM2837 ( e.g. Raspberry Pi 3 B+ )
 10
 11The BCM2711 used in the Raspberry Pi 4 is currently not supported in the
 12mainline kernel.
 13
 14There are no specific requirements to the VideoCore firmware to get VCHIQ
 15working.
 16
 17The test scenarios described in this document based on the tool vchiq_test.
 18Its source code is available here: https://github.com/raspberrypi/userland
 19
 20* Configuration
 21
 22Here are the most common kernel configurations:
 23
 24 1. BCM2835 target SoC (ARM 32 bit)
 25
 26    Just use bcm2835_defconfig which already has VCHIQ enabled.
 27
 28 2. BCM2836/7 target SoC (ARM 32 bit)
 29
 30    Use the multi_v7_defconfig as a base and then enable all VCHIQ options.
 31
 32 3. BCM2837 target SoC (ARM 64 bit)
 33
 34    Use the defconfig which has most of the VCHIQ options enabled.
 35
 36* Scenarios
 37
 38 * Initial test
 39
 40   Check the driver is probed and /dev/vchiq is created
 41
 42 * Functional test
 43
 44   Command: vchiq_test -f 10
 45
 46   Expected output:
 47   Functional test - iters:10
 48   ======== iteration 1 ========
 49   Testing bulk transfer for alignment.
 50   Testing bulk transfer at PAGE_SIZE.
 51   ...
 52
 53 * Ping test
 54
 55   Command: vchiq_test -p
 56
 57   Expected output:
 58   Ping test - service:echo, iters:1000, version 3
 59   vchi ping (size 0) -> 57.000000us
 60   vchi ping (size 0, 0 async, 0 oneway) -> 122.000000us
 61   vchi bulk (size 0, 0 async, 0 oneway) -> 546.000000us
 62   vchi bulk (size 0, 0 oneway) -> 230.000000us
 63   vchi ping (size 0) -> 49.000000us
 64   vchi ping (size 0, 0 async, 0 oneway) -> 70.000000us
 65   vchi bulk (size 0, 0 async, 0 oneway) -> 296.000000us
 66   vchi bulk (size 0, 0 oneway) -> 266.000000us
 67   vchi ping (size 0, 1 async, 0 oneway) -> 65.000000us
 68   vchi bulk (size 0, 0 oneway) -> 456.000000us
 69   vchi ping (size 0, 2 async, 0 oneway) -> 74.000000us
 70   vchi bulk (size 0, 0 oneway) -> 640.000000us
 71   vchi ping (size 0, 10 async, 0 oneway) -> 125.000000us
 72   vchi bulk (size 0, 0 oneway) -> 2309.000000us
 73   vchi ping (size 0, 0 async, 1 oneway) -> 70.000000us
 74   vchi ping (size 0, 0 async, 2 oneway) -> 76.000000us
 75   vchi ping (size 0, 0 async, 10 oneway) -> 105.000000us
 76   vchi ping (size 0, 10 async, 10 oneway) -> 165.000000us
 77   vchi ping (size 0, 100 async, 0 oneway) -> nanus
 78   vchi bulk (size 0, 0 oneway) -> nanus
 79   vchi ping (size 0, 0 async, 100 oneway) -> nanus
 80   vchi ping (size 0, 100 async, 100 oneway) -> infus
 81   vchi ping (size 0, 200 async, 0 oneway) -> infus
 82   ...
 83
 84 * Debugfs test
 85
 86   Command: cat /sys/kernel/debug/vchiq/state
 87
 88   Example output:
 89   State 0: CONNECTED
 90     tx_pos=0x1e8(@43b0acda), rx_pos=0x170(@05493af8)
 91     Version: 8 (min 3)
 92     Stats: ctrl_tx_count=7, ctrl_rx_count=7, error_count=0
 93     Slots: 30 available (29 data), 0 recyclable, 0 stalls (0 data)
 94     Platform: 2835 (VC master)
 95     Local: slots 34-64 tx_pos=0x1e8 recycle=0x1f
 96       Slots claimed:
 97       DEBUG: SLOT_HANDLER_COUNT = 20(0x14)
 98       DEBUG: SLOT_HANDLER_LINE = 1937(0x791)
 99       DEBUG: PARSE_LINE = 1864(0x748)
100       DEBUG: PARSE_HEADER = -249155224(0xf1263168)
101       DEBUG: PARSE_MSGID = 67362817(0x403e001)
102       DEBUG: AWAIT_COMPLETION_LINE = 0(0x0)
103       DEBUG: DEQUEUE_MESSAGE_LINE = 0(0x0)
104       DEBUG: SERVICE_CALLBACK_LINE = 0(0x0)
105       DEBUG: MSG_QUEUE_FULL_COUNT = 0(0x0)
106       DEBUG: COMPLETION_QUEUE_FULL_COUNT = 0(0x0)
107     Remote: slots 2-32 tx_pos=0x170 recycle=0x1f
108       Slots claimed:
109         2: 10/9
110       DEBUG: SLOT_HANDLER_COUNT = 20(0x14)
111       DEBUG: SLOT_HANDLER_LINE = 1851(0x73b)
112       DEBUG: PARSE_LINE = 1827(0x723)
113       DEBUG: PARSE_HEADER = -150330912(0xf70a21e0)
114       DEBUG: PARSE_MSGID = 67113022(0x400103e)
115       DEBUG: AWAIT_COMPLETION_LINE = 0(0x0)
116       DEBUG: DEQUEUE_MESSAGE_LINE = 0(0x0)
117       DEBUG: SERVICE_CALLBACK_LINE = 0(0x0)
118       DEBUG: MSG_QUEUE_FULL_COUNT = 0(0x0)
119       DEBUG: COMPLETION_QUEUE_FULL_COUNT = 0(0x0)
120   Service 0: LISTENING (ref 1) 'PEEK little-endian (0x4b454550)' remote n/a (msg use 0/3840, slot use 0/15)
121     Bulk: tx_pending=0 (size 0), rx_pending=0 (size 0)
122     Ctrl: tx_count=0, tx_bytes=0, rx_count=0, rx_bytes=0
123     Bulk: tx_count=0, tx_bytes=0, rx_count=0, rx_bytes=0
124     0 quota stalls, 0 slot stalls, 0 bulk stalls, 0 aborted, 0 errors
125     instance b511f60b
~/ Read-only file preview.