diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-08 00:01:54 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-08 00:01:54 -0400 |
| commit | bf8915caeb4c983dbfb3b9bbd1bb3836bdc4761f (patch) | |
| tree | 9d1ab442b1d1befc478816582c18963a593b12da /firmware | |
| parent | 3a37bc1bf96e259ade4451e1b1a49265690f2756 (diff) | |
| download | open-iov-bf8915caeb4c983dbfb3b9bbd1bb3836bdc4761f.tar.gz open-iov-bf8915caeb4c983dbfb3b9bbd1bb3836bdc4761f.zip | |
tools: arm UVM kprobes deterministically (modprobe+wait+verify) and retry pushbuffer pins
Root cause of the cudaMalloc/UVM-init stall on our bring-up path:
guest_kprobes.sh ran while nvidia_uvm was not yet loaded (it loads lazily
with the first CUDA client), so every probe add failed silently (symbols
not in kallsyms) and the host never got the #sem -> pushbuffer-pin
pipeline. The CE push page (0x120021db8) then never translated and the
guest spun forever at DEVICE.
- guest_kprobes.sh: modprobe nvidia_uvm, wait (bounded 30 s) for the
uvmt symbol, install, and print KP_ARMED/KP_FAIL for bring-up checks.
- semfix_watch.pin_pushbuffer: retry transient/partial gva2gpa misses
in-call (bounded passes with a short sleep) instead of aborting on the
first all-miss block; report unresolved page counts.
Validated: 2/2 cold boots (vmkeep6/7) arm the probes and run
victory_mail green in 15-20 s (MAIL + VADD bad=0 checksum=12204516 +
STATUS OK, oracle-matched); pre-fix boots with unarmed probes stalled
4/4.
Diffstat (limited to 'firmware')
0 files changed, 0 insertions, 0 deletions
