diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 02:09:40 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-09 02:09:40 -0400 |
| commit | 3688aac03c05b96b58ba5bf901d4fbb4d0fa8002 (patch) | |
| tree | ed04e9b85adfdd2f290d4dc5b2a26d1af1751141 /kernel/gsp_phys_booter_unload_img.h | |
| parent | f4bad9907c9cf909c532dae6e7f96fcd33360721 (diff) | |
| download | open-iov-3688aac03c05b96b58ba5bf901d4fbb4d0fa8002.tar.gz open-iov-3688aac03c05b96b58ba5bf901d4fbb4d0fa8002.zip | |
vgsp-sema: synchronize the session flush with channel registration; stop sleeping in the VA-space walker (ISSUE-0002)
Two host-side defects from the r9 capture:
1. The session-end flush was executed at the top of svc_rebuild without
checking whether the next session had already started registering:
in r9 it ran between the second client's first and later channel
registrations and wiped its freshly learned state mid-setup. The
flush now runs on svc_thread only (the sole writer of the discovery
state), at the top of its loop; a first channel of a new session
waits on svc_sess_flush_done before registering, so the wipe can
never land after that session's state exists and the new session
still starts from a clean slate. Scans abort on the pending flag so
the wait is bounded, and channel_del wakes svc_thread so the flush
runs promptly instead of waiting out a pass.
2. svc_walk_vaspaces held svc.vas_lock (spinlock) across svc_gmmu_walk,
whose guest reads go through vfio_dma_rw (mutex, may sleep) - the
'BUG: scheduling while atomic' in the r9 service log. The walker now
snapshots the published VA spaces under the lock and walks unlocked.
Diffstat (limited to 'kernel/gsp_phys_booter_unload_img.h')
0 files changed, 0 insertions, 0 deletions
