New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rsx: Recover from invalid writes to CELL_GCM_NV4097_SET_INDEX_ARRAY_DMA #6737
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
kd-11
reviewed
Oct 10, 2019
kd-11
reviewed
Oct 10, 2019
kd-11
reviewed
Oct 10, 2019
const bool is_flip_sema = offset == 0x10 && ctxt == CELL_GCM_CONTEXT_DMA_SEMAPHORE_R; | ||
if (!is_flip_sema) | ||
{ | ||
rsx->sync_point_request = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had an idea to set up a special recovery command sequence for this purpose, but I suppose we can exploit the inbuilt flip routine for this too.
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
from
October 10, 2019 13:19
2aeaeaf
to
0b090be
Compare
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
2 times, most recently
from
October 10, 2019 13:52
8399503
to
5fac477
Compare
Added some unknown yet valid methods. |
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
from
October 10, 2019 13:58
5fac477
to
49de0be
Compare
kd-11
reviewed
Oct 10, 2019
kd-11
reviewed
Oct 10, 2019
Also: Trigger a FIFO recovery when encountering an invalid method.
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
from
October 10, 2019 14:58
49de0be
to
eee0dfb
Compare
kd-11
approved these changes
Oct 10, 2019
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
from
October 10, 2019 15:59
2587960
to
f754fb1
Compare
This comment has been minimized.
This comment has been minimized.
elad335
force-pushed
the
rsx-fifo-break-wall-smash
branch
from
October 10, 2019 16:08
f754fb1
to
eee0dfb
Compare
19 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hw tests reveal that any write with a bit set to 1 which are not bits 0 or 3 to register CELL_GCM_NV4097_SET_INDEX_ARRAY_DMA, results in an exception being raised at the write command.
Because the exception is raised at command write, that's where I decided to put the validation check.
This improves stability in Metal Gear Solid 4, allowing the renderer to continue after such crash.
Second commit improves FIFO recovery when the last semaphore came from a flip, allowing to reset registers using gcm's reset by ignoring the last semaphore_release (recovering from the first semaphore_acquire instead). Inspired by flip commands sequence dump