diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-29 14:41:14 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-29 14:41:14 -0400 |
| commit | a83a42df71c235c5f9f8eaeb3b62053a75fe30c7 (patch) | |
| tree | abeb5c7676a100050e28ca7c8a95c1bce33dbf92 /kernel/gsp_sema_service.h | |
| parent | ca944b45ba35f3c0dc63fa9f722067af13e97ab4 (diff) | |
| download | open-iov-a83a42df71c235c5f9f8eaeb3b62053a75fe30c7.tar.gz open-iov-a83a42df71c235c5f9f8eaeb3b62053a75fe30c7.zip | |
kernel: grace window for untranslatable GR entries; tools: coalesce window pin output
The first GR window pin landed ~2 s after the pump consumed the freshly
created channels' GPFIFO entries on the first failed read, so the pushes
(and the tracking-semaphore releases they carry) were lost. GR entries with
an unresolvable push page now stay pending for sema_gr_grace_ms (default
8 s) before the stale-entry consume; a pin landing in that window makes the
entry readable and it executes normally. The completion counter is still
published from put at the end of every pass, so the client's counter wait
is not delayed.
guest_pmap_win.py coalesces contiguous VA+PA pages into run lines, so a
15k-page window transfers as ~200 lines instead of ~15k and the pin batch
lands within a second of the pages appearing.
Diffstat (limited to 'kernel/gsp_sema_service.h')
| -rw-r--r-- | kernel/gsp_sema_service.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/gsp_sema_service.h b/kernel/gsp_sema_service.h index 3b85591..8cd9e61 100644 --- a/kernel/gsp_sema_service.h +++ b/kernel/gsp_sema_service.h @@ -77,4 +77,12 @@ extern bool gsp_sema_gr_rings; */ extern bool gsp_sema_fake_rel; +/* + * Grace window (ms) an untranslatable GR GPFIFO entry is left pending before + * the pump consumes it as stale. The GR push pages are pinned from guest + * truth a moment after the channels appear; the window lets those pins land + * so the releases inside the pushes are applied. + */ +extern unsigned gsp_sema_gr_grace_ms; + #endif /* _GSP_SEMA_SERVICE_H_ */ |
