From d6dde0ecac4f031ea27a27df7767cba54ac44f55 Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Tue, 29 Sep 2026 13:52:49 -0400 Subject: kernel: authoritative host-injected VA->PA pins (ipin table) + wider pin table The CE push-buffer page 0x120000000 resolved to a zero-filled page even after sema_map_add injected the correct translation: the shared pin table silently dropped inserts once a hash cluster exceeded the 32-probe window (the page hashes to slot 0, a hot cluster), and lookups fell through to the content-scanned map and answered with a stale page - so every CE push read as implausible and memset stayed 0. Injected translations now live in a separate authoritative table checked before every other source and are never written by self-discovery; the general pin table is 4x larger with a 4x probe window and counts drops (pin_drop/ipin_drop) in the stats line. guest_kprobes.sh disables the kprobe group before removal (EBUSY) and matches p:kprobes/; the guest wait sampler can run counters-only with GDB=0. --- tools/guest-diag/track_waits.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/guest-diag/track_waits.sh') diff --git a/tools/guest-diag/track_waits.sh b/tools/guest-diag/track_waits.sh index 4c9cd1a..45a9a66 100644 --- a/tools/guest-diag/track_waits.sh +++ b/tools/guest-diag/track_waits.sh @@ -52,7 +52,7 @@ for i in $(seq 1 "$N"); do TS=$(date +%T.%3N) kill -0 "$PID" 2>/dev/null || { echo "PROCESS GONE at $TS (sample $i)" >> /tmp/trk.log; break; } - if [ $((i % 2)) -eq 1 ]; then + if [ $((i % 2)) -eq 1 ] && [ "${GDB:-1}" = "1" ]; then echo "=== $TS sample $i ===" >> /tmp/trk.log timeout 8 gdb -p "$PID" -batch -x /tmp/trkinfo.py 2>&1 \ | grep -vE "^\[|Reading symbols|^0x[0-9a-f]+ in |warning:" >> /tmp/trk.log -- cgit v1.2.3