diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-07 22:56:40 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-07 22:56:40 -0500 |
| commit | 94c68e118d05f9a4c4b398f4a057cb8a636dac69 (patch) | |
| tree | 842ec0ae0d6616c002bfdac48273cd629933bb1e /kernel/include/memory.h | |
| parent | d2524210912b934edab92e4412f6f7680ae048bb (diff) | |
| download | open-iov-94c68e118d05f9a4c4b398f4a057cb8a636dac69.tar.gz open-iov-94c68e118d05f9a4c4b398f4a057cb8a636dac69.zip | |
vgsp-disp: fix disp.lock self-deadlock; backfill h_object from the alloc
gsp_disp_engine_channel_add() took disp.lock and then called the
self-locking gsp_disp_find_object(), deadlocking the RPC thread on the
first display push-buffer control (r1621c: watchdog hard lockups in
gsp_emu_0 channel_add+0x13b and gsp-sema-svc pump+0x88, R13=0xc57d).
Use a caller-holds-lock helper instead.
The push-buffer control arrives before the alloc (control, registration,
alloc), so a channel registered from the control had h_object=0 and the
completion-event post stayed inert. Backfill h_object when the alloc
note lands for a registered channel.
Diffstat (limited to 'kernel/include/memory.h')
0 files changed, 0 insertions, 0 deletions
