Repository navigation
Conversation
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
Overlap (#4855 / #5058 / #6054)Bot flagged only |
Duplicate-address reports used to continue the spin forever after the first timeout, freezing titles once a hung batch left the same wait address hot. Under APS5_SKIP_FAILED_SHADERS, return after the timeout so the queue can advance.
0672bd6 to
65c2b3f
Compare
adriadam10
left a comment
There was a problem hiding this comment.
Thanks for the fix. A few things before this can go in:
APS5_SKIP_FAILED_SHADERSis not read anywhere onmain(git grep SKIP_FAILED_SHADERS upstream/mainfinds nothing), so this PR would introduce that switch, not extend it. If a new bring-up switch is intended, name it for what it does (it abandons a wait, not a shader), document it where the otherAPS5_*environment variables are documented, and say in the description that it is new. If it comes from another branch, depend on that PR.- With it set,
waitMemoryreturns as if the wait had been satisfied (WaitMemory.cpp:379-385) while the memory still does not match the reference/mask. That is the "plausible result wheremainkeeps waiting" case; the debt line should list it under the section for deliberate deviations, and the behaviour should be limited to exactly the already-reported address you describe, not every timed-out wait. - No test. The hang can be reproduced on Linux CI: a queue whose WAIT_REG_MEM targets an address nobody writes, with
APS5_GPU_WAIT_TIMEOUT_MSsmall, submitted twice on the same address (the second wait is the one that never leaves the poll loop). Please add that test to the libSceAgcDriver tests, and show it fails without the change. - #6660 changes the same lines (
WaitMemory.cpp:376-377) and the WAIT_REG_MEM debt line; one of the two will need a rebase.
|
The
I am not going to add that switch. Abandoning a wait after the first timeout would be a different behaviour from |
What
Under
APS5_SKIP_FAILED_SHADERS, aWAIT_REG_MEMthat hitsAPS5_GPU_WAIT_TIMEOUT_MSnow returns instead of spinning forever.Previously, once an address had been reported, a later wait on the same address hit the static
reportedset, tookcontinuewithwarnedalready true, and never left the poll loop. That freezes the queue worker after a hung batch leaves the wait address hot. Default (non-skip-failed) behaviour is unchanged: timeout remains diagnostic-only per existing debt.Debt entry for WAIT_REG_MEM updated to record the skip-failed return.
Tested
Windows 11, RTX 3080. Conventions check against current
mainpassed. No new unit test: the hang is in the queue-worker poll loop over a live GPU wait address and needs a hung batch to reproduce; exercised under bring-up withAPS5_SKIP_FAILED_SHADERSwhere duplicate-address waits no longer pin the worker.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)APS5_SKIP_FAILED_SHADERS)