diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-29 14:25:05 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-29 14:25:05 -0400 |
| commit | be46061c66690752bf03aaaf4d72e4fa2b5f418d (patch) | |
| tree | 7941d7e4c6930d0bf697ddd7b037f7990a6bfc25 /scripts/qemu_gdb_attach.sh | |
| parent | 1af6fd4562dfcc40a77f54b2523c9a7199a2c063 (diff) | |
| download | open-iov-be46061c66690752bf03aaaf4d72e4fa2b5f418d.tar.gz open-iov-be46061c66690752bf03aaaf4d72e4fa2b5f418d.zip | |
kernel: batch the map-add channel rewind; trust injected streams for ops
Two fixes for the CE data path. (1) svc_handle_map_add rewound every
channel by 8 ring entries on every injected mapping; a 16 MB push-buffer pin
is thousands of page injections, so the pump's last_get was pinned in place
and it re-read the same entries for the whole batch (3645 submissions, zero
ops). The rewind now runs once per drained batch. (2) The push-start
heuristic (op=INC_METHOD at address 0) rejects UVM's real CE memop pushes,
which start with an IMM method at address 8 (observed 0x60020002, PTE data
words) or a release method at 0x700 (0x200381c0); a buffer read through a
host-injected (ipin) translation is now decoded fully trusted, ops included.
Result on the next boot: memset=2718/0/0 ringops=1794 (first sustained CE
work), false 12k->1.9k. semfix_watch: bulk-pin contiguous runs via
sema_map_add len, read rm_mem size, 16 MB (4096 page) cap, non-blocking QMP
read (the fixed 30 ms sleep made 4096 gva2gpa calls take two minutes), and
KEEP_TRACE=1 to preserve the guest trace for post-mortems.
Diffstat (limited to 'scripts/qemu_gdb_attach.sh')
0 files changed, 0 insertions, 0 deletions
