aboutsummaryrefslogtreecommitdiffstats
path: root/hw/fence_write.py (follow)
Commit message (Collapse)AuthorAge
* finding: the ring frame's fence address is not range-checked, unlike the ↵user2026-09-30
command buffer Every other test in this audit varied command content, but the ring frame itself is equally host-controlled and carries both an address the processor writes to and the value it writes there. The command buffer address is range-checked against the trusted region; this destination never was. Confirmed on hardware: the processor writes a host-chosen value to a host-chosen address; a destination inside the trusted region is accepted and the command completes with the processor healthy, where the equivalent command-buffer address is rejected; and a null destination completes the command but freezes the heartbeat and wedges the card, a sixth trigger of the known class needing a power cycle. Corruption is explicitly not demonstrated. Host reads of the trusted region return all ones so read-back cannot settle it, and a dense functional test of sixteen thousand host-chosen values at sixty-four byte granularity across the whole first megabyte, where a loaded application image lives, leaves that application's behaviour identical. The likely explanation is that the write is subject to the same hardware protection, so the missing software check is covered. A first sparse attempt of three hundred values over nineteen megabytes is recorded as discarded for being too thin to support any conclusion. This is therefore recorded as a defence-in-depth gap rather than an exercisable primitive, with fixes to range-check the destination and to reject a null one with a status.