This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# Phase 1.0D early RetroArch diagnostic
|
||||
|
||||
`retroarch_ps5_early_diag.elf` is compile-time profile
|
||||
`PS5_PROFILE=early-diag` with `CHIMERA_PS5_EARLY_DIAG=1`. It retains the real
|
||||
RetroArch frontend, static chimera_smokecore, write firewall, bounded runtime,
|
||||
W^X layout, reverse cleanup, no network, no content/configuration, no dynamic
|
||||
core, no retry, no autoload, and `_Exit`.
|
||||
|
||||
## Diagnostic ladder
|
||||
|
||||
The fixed D00-D12 ladder covers RetroArch main, platform begin/result, SDL
|
||||
begin/result, VideoOut open, buffers, first flip, Pad, AudioOut, core init,
|
||||
runloop, and shutdown. Each stage owns one bit in an in-memory attempted mask,
|
||||
so a notification is attempted at most once. Notification failure is recorded
|
||||
as a raw error and never blocks the primary path. Text is built in a fixed
|
||||
192-byte buffer; truncation is counted and no dynamic formatting allocation is
|
||||
used. Login users are represented only by count and numeric IDs.
|
||||
|
||||
`sceVideoOutSetBufferAttribute2` is `void` in the pinned SDL source. The
|
||||
diagnostic stores `CHIMERA_PS5_DIAG_NO_RETURN_VALUE`; it does not fabricate a
|
||||
success return. Consequently that exact boundary cannot receive a return-code
|
||||
failure injection. Every representable boundary is injected by the host test.
|
||||
|
||||
## Earliest frame
|
||||
|
||||
After VideoOut open, direct-memory allocation/mapping, equeue/event setup, and
|
||||
buffer registration—but before input, audio, core, and runloop—the SDL overlay
|
||||
writes a full magenta frame, a fixed white rectangle, and an embedded black
|
||||
pattern. It submits frame ID 0 once and waits once for at most 100,000
|
||||
microseconds. A failed first flip records D07 and enters bounded teardown; it
|
||||
does not retry or initialize another buffer chain.
|
||||
|
||||
Source callsites are `retroarch.c:6201` for D00 and the
|
||||
`PS5_PresentEarlyDiagnosticFrame` hunk in
|
||||
`pkg/ps5/sdl2-ps5-early-diag.patch` for the magenta frame. Disassembly binds
|
||||
D00 at `main+0xd` (`0x3ccd`), the diagnostic frame helper at `0xfdf90`, its
|
||||
first-flip call at `0xfe1ec`, the common notification call at `0x4776b`, and
|
||||
`_Exit` at `0x3cef`.
|
||||
|
||||
## Host fault model
|
||||
|
||||
ASan/UBSan host tests cover notification failure, truncation and duplicate
|
||||
suppression; user-service failure and no-login-user; VideoOut open; direct
|
||||
allocation/map; registration; equeue/event; first flip; Pad; AudioOut; core;
|
||||
deadline; every cleanup boundary; the write firewall; stable D-code; and
|
||||
exactly one selected `_Exit` path. No test result is hardware evidence.
|
||||
|
||||
Two clean target builds are byte-identical at 1,844,664 bytes and SHA-256
|
||||
`092bcabc0f8717a648030c592aa0dc900f878952fb14ee453851a29f298ea7ee`.
|
||||
Their map hash is
|
||||
`0d4d4614826fa4cbbf11e7374a2d2ecb574a00b55ad9deac17272f9504b254a0`.
|
||||
The artifact is `execution_eligible=false`.
|
||||
Reference in New Issue
Block a user