summaryrefslogtreecommitdiffstats
path: root/kernel/bar_init.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-01 20:49:22 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-01 20:49:22 -0400
commit41c8bf7a43888ac679e9851453fa9ff845693149 (patch)
treead3e9fd161d58f422f05bfc9c5cbccaab8cdca59 /kernel/bar_init.c
parentcd0c888fd96a3772817f25044379eb064a2f4f4e (diff)
downloadopen-iov-41c8bf7a43888ac679e9851453fa9ff845693149.tar.gz
open-iov-41c8bf7a43888ac679e9851453fa9ff845693149.zip
gsp-phys: drain and decode the status queue on a failed CE submission
After a doorbell the GSP-RM status ring accumulated unconsumed records that nothing drained: the host readPtr stayed behind the writePtr and the engine's error text was never decoded. Add a bounded drain (max 64 records) using the existing validated ring walk: each record is logged with its function/status/seqNum, function 0x1006 (OS_ERROR_LOG) is decoded into exceptType/runlistId/chid/prevXid/errString, and function 0x1020 (GSP_POST_NOCAT_RECORD) into recType/errorCode/subsystem/ bugcheck/faultingEngine plus a bounded printable view of the diagnostic buffer. The host read pointer advances per consumed record (the normal consumer side), so the ring keeps free space. Stage 4's poll-timeout path drains before returning -ETIMEDOUT, and a new read-only debugfs file gsp-phys-status-drain triggers one bounded drain per read. No locks are taken and no device register is written.
Diffstat (limited to 'kernel/bar_init.c')
0 files changed, 0 insertions, 0 deletions