diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-17 01:15:00 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-17 01:15:00 -0400 |
| commit | 0bb52e0e3cdc86b31dce2daa23eafd099461604a (patch) | |
| tree | 5d194cf768445884396369e4dc4675ec5bf749e8 /kernel/gsp_rm_emulation.h | |
| parent | 01994e83c3754c98c065489daabd980fa001d5ba (diff) | |
| download | open-iov-0bb52e0e3cdc86b31dce2daa23eafd099461604a.tar.gz open-iov-0bb52e0e3cdc86b31dce2daa23eafd099461604a.zip | |
vgsp: m171 event completion fixes (minimal cudaEventSynchronize repro now passes) + AGENT-F R2 write/read consistency ledger
- gsp_rm_emulation: the event burst budget becomes a time-windowed rate
(1 s) with completion posts allowed headroom over hint re-posts; the
periodic hint dedups events posted within 250 ms (strictly below its own
500 ms cadence - an equal window races the boundary and skips forever);
force_post skips retired slots (rc=22 spam was an artifact). Verified:
the minimal cudaEventCreate/Record/Synchronize repro and a second repro
with cross-stream waits and elapsed-time now complete on a live boot;
previously cudaEventSynchronize hung forever.
- gsp_sema_service: write/read consistency ledger (AGENT-F R2). Large
device-destination writes record {va_page -> pa, aperture}; the launch
data fill and device-source reads prefer the recorded page whenever
their own resolution disagrees (sema-ledger DIVERGE log). Session
scoped, zero cost while empty.
Diffstat (limited to 'kernel/gsp_rm_emulation.h')
| -rw-r--r-- | kernel/gsp_rm_emulation.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/gsp_rm_emulation.h b/kernel/gsp_rm_emulation.h index e464809..96ea16a 100644 --- a/kernel/gsp_rm_emulation.h +++ b/kernel/gsp_rm_emulation.h @@ -197,11 +197,13 @@ struct gsp_rm_emu { u32 notify_index; u32 data; bool valid; + unsigned long last_post; /* m171: jiffies of the last posted record */ } events[GSPRM_MAX_EVENTS]; u32 events_n; u64 events_posted; u64 events_dropped; - u32 event_burst; /* event records written since the last reply */ + u32 event_burst; /* event records written in the current window */ + unsigned long event_burst_at; /* m171: burst window start (time-based reset) */ }; int gsp_rm_emu_init(struct nv_vgpu_device *vgpu, struct gsp_emu_context *ctx); |
