Alex Vanderveen
2a078ca8d7
DIAGNOSTIC BUILD: instrument why the sector ring starves the guest
...
Not a fix. The game is expected to still render wrong; this answers one
question that three ring attempts could not, because all three differed
only in the notification path and all three failed with byte-identical
numbers (lost=70, pended=80, the same per-LBA repeat counts). Identical
results across different notification code proves the notification was
never the cause.
The remaining suspect is deliver_read_sector_without_irq(). It raises NO
INT1 by design -- it exists purely to refill the buffer so an in-flight
multi-sector DMA keeps draining. With one buffer the refill lands in the
buffer the DMA is reading and the transfer flows seamlessly. With a ring
it lands in a NEW slot, and nothing moves the read pointer there, so the
DMA starves mid-transfer and the guest retries: exactly the duplicated
Setlocs and 2-7 repeated sector reads observed.
ring_starved counts drains that found their slot exhausted while another
slot held unread data. Non-zero confirms it outright and the fix follows
(the no-IRQ refill must advance the read pointer: it is a continuation of
a drain in progress, not a new notification). Zero kills the hypothesis
and the ring line of attack stops.
ring_norq_refill and ring_read_moves give the supporting picture.
ring_probe.py reads the verdict; a build without the counters reports
no-instrumentation rather than a misleading zero.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 12:55:58 -04:00
..
2026-07-20 14:13:46 -07:00
2026-08-12 16:49:03 -04:00
2026-07-02 16:27:57 -07:00
2026-06-25 23:23:15 -07:00
2026-08-24 12:55:58 -04:00
2026-06-27 21:06:04 -07:00
2026-08-23 18:30:26 -04:00
2026-08-24 12:55:58 -04:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 22:13:06 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-09 19:09:48 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-17 11:29:26 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-09 19:09:48 -07:00
2026-05-09 19:09:48 -07:00
2026-05-09 19:09:48 -07:00
2026-05-07 17:57:34 -07:00
2026-07-06 11:51:36 -07:00
2026-05-11 12:34:49 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 22:13:06 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 01:54:46 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 01:54:46 -07:00
2026-07-10 00:00:09 -07:00
2026-05-29 21:14:30 -07:00
2026-07-23 17:10:23 -03:00
2026-05-03 16:43:07 -07:00
2026-07-28 22:46:55 -07:00
2026-05-29 21:14:30 -07:00
2026-05-29 21:14:30 -07:00
2026-07-28 09:22:28 -07:00
2026-08-14 02:41:50 -04:00
2026-08-24 12:55:58 -04:00
2026-08-24 12:55:58 -04:00
2026-08-24 12:55:58 -04:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-26 00:36:15 -07:00
2026-04-30 14:26:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-14 02:03:14 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-08-24 12:55:58 -04:00
2026-06-12 15:15:08 -07:00
2026-05-13 01:31:27 -07:00
2026-05-13 01:31:27 -07:00
2026-05-29 23:42:16 -07:00
2026-08-24 12:55:58 -04:00
2026-08-24 12:55:58 -04:00
2026-08-21 21:38:56 -04:00
2026-07-06 11:51:36 -07:00
2026-08-21 19:42:40 -04:00
2026-08-03 22:32:17 -07:00
2026-06-26 21:18:26 -07:00
2026-08-16 17:09:26 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-21 14:23:09 -07:00
2026-04-21 14:23:09 -07:00
2026-04-28 21:29:19 -07:00
2026-07-06 11:21:20 -07:00
2026-04-24 00:29:06 -07:00
2026-04-14 01:34:27 -07:00
2026-08-24 12:55:57 -04:00
2026-04-29 14:46:26 -07:00
2026-04-24 00:29:06 -07:00
2026-04-24 00:29:06 -07:00
2026-04-24 00:29:06 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-08-24 12:55:58 -04:00
2026-04-14 01:34:27 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-26 00:36:15 -07:00
2026-04-24 00:29:06 -07:00
2026-06-07 12:32:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-26 00:36:15 -07:00
2026-05-30 00:02:33 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-08-24 12:55:58 -04:00
2026-08-05 14:02:58 -07:00
2026-07-18 06:30:37 -07:00
2026-07-31 23:18:24 -04:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-23 17:50:47 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-08-24 12:55:57 -04:00
2026-04-14 01:34:27 -07:00
2026-05-29 21:14:30 -07:00
2026-04-24 00:29:06 -07:00
2026-07-29 03:18:10 -04:00
2026-05-29 21:14:30 -07:00
2026-07-29 03:18:10 -04:00
2026-08-24 12:55:57 -04:00
2026-08-24 12:55:58 -04:00
2026-08-20 11:26:37 -04:00
2026-08-19 23:35:17 -04:00
2026-08-19 23:35:17 -04:00
2026-08-24 12:55:57 -04:00
2026-04-24 00:29:06 -07:00
2026-08-24 12:55:58 -04:00
2026-05-13 01:31:27 -07:00
2026-08-24 12:55:57 -04:00
2026-05-17 21:58:55 -07:00
2026-07-02 22:42:26 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-07-20 00:07:33 -07:00
2026-07-14 22:44:31 -07:00
2026-08-24 12:55:57 -04:00
2026-04-21 14:23:09 -07:00
2026-08-24 12:55:58 -04:00
2026-07-29 03:18:10 -04:00
2026-08-03 18:19:34 -07:00
2026-07-28 09:22:28 -07:00
2026-08-19 22:50:13 -04:00
2026-08-24 12:55:58 -04:00
2026-06-29 20:43:40 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-29 22:20:55 -07:00
2026-08-24 12:55:58 -04:00
2026-08-03 05:57:29 -04:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-13 21:19:32 -07:00
2026-04-29 22:20:55 -07:00
2026-04-29 22:20:55 -07:00
2026-04-29 22:20:55 -07:00
2026-05-29 23:29:05 -07:00
2026-08-24 12:55:58 -04:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-08-24 12:55:58 -04:00
2026-07-29 03:18:10 -04:00
2026-04-28 21:29:19 -07:00
2026-08-24 12:55:57 -04:00
2026-08-24 12:55:58 -04:00
2026-04-24 00:29:06 -07:00
2026-04-21 18:13:51 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-29 14:46:26 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-04-29 14:46:26 -07:00
2026-08-05 18:03:03 -07:00
2026-08-24 12:55:58 -04:00
2026-04-13 21:19:32 -07:00
2026-04-13 21:19:32 -07:00
2026-08-24 12:55:58 -04:00
2026-08-24 12:55:58 -04:00
2026-05-29 21:14:30 -07:00
2026-04-28 21:29:19 -07:00
2026-07-06 11:51:36 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-07-31 17:22:45 -04:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-07-28 09:22:28 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-06-21 13:43:34 -07:00
2026-04-28 21:29:19 -07:00
2026-08-24 12:55:58 -04:00
2026-08-24 12:55:58 -04:00
2026-08-14 02:41:50 -04:00
2026-08-11 09:37:32 +03:00
2026-04-29 21:15:09 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-05-03 16:43:07 -07:00
2026-08-24 12:55:58 -04:00
2026-07-19 12:11:56 -07:00
2026-08-10 00:06:29 -07:00
2026-07-06 11:51:36 -07:00
2026-08-23 20:28:20 -04:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-07-06 11:51:36 -07:00
2026-04-29 14:46:26 -07:00
2026-04-30 13:10:05 -07:00
2026-04-30 13:10:05 -07:00
2026-08-24 12:55:58 -04:00
2026-05-30 12:06:59 -07:00
2026-04-28 21:29:19 -07:00
2026-08-24 12:55:58 -04:00
2026-07-03 09:04:17 -07:00
2026-04-29 14:46:26 -07:00