diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 20:21:24 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-23 20:21:24 -0400 |
| commit | 1e5be920add0dfd2d5c388b9cf8a4a09f3e72e37 (patch) | |
| tree | 3f062014019f855e10b73cdd7ca42b18cb25d090 /debug/risc-v-gsp-rm-vm/sim/machine.py | |
| parent | bd01273cd1b221f55eb484e8b7fd742417a4d4bd (diff) | |
| download | open-iov-1e5be920add0dfd2d5c388b9cf8a4a09f3e72e37.tar.gz open-iov-1e5be920add0dfd2d5c388b9cf8a4a09f3e72e37.zip | |
vgsp-rm r579: post the event notifyIndex INDEX field, not the overloaded registration word
THE 2nd-client event-wait root cause (live guest Oops): the NV01_EVENT
registration word we echoed (e.g. 0x3c00000c) is an OVERLOADED field -
cl0005.h: INDEX=bits[15:0], SUBDEVICE=bits[23:16], FLAGS=bits[31:24] - but
the guest's _kgspRpcPostEvent passes the payload's notifyIndex straight to
gpuNotifySubDeviceEvent_IMPL, which indexes its notifier array with it.
Posting 0x3c00000c produced a wild pointer (base + 0x3c00000c*4 + 0x1508)
and a kernel Oops on every dispatched event:
BUG: unable to handle page fault for address: ffffd04d4235f808
RIP: gpuNotifySubDeviceEvent_IMPL+0x21f [nvidia] RAX: 000000003c00000c
note: victory_matmul[12151] exited with irqs disabled
Fixing recursive fault but reboot is needed!
The Oops killed the dispatch before osNotifyEvent/nv_post_event (hence the
r576/r577 experiments: records consumed, nv_post_event=0, independent of
sequence/bNotifyList/hClient), dropped every event, and tainted the guest
kernel - clients that needed an event wake (the 2nd-client device-state
spins) wedged. Mask the posted notifyIndex to bits[15:0] (the INDEX field).
Also loadable probe r578: gsp_rm_ev_func (event records carry a
caller-chosen RPC function for reachability tests).
Diffstat (limited to 'debug/risc-v-gsp-rm-vm/sim/machine.py')
0 files changed, 0 insertions, 0 deletions
