-
Notifications
You must be signed in to change notification settings - Fork 209
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
Reading the last bytes of memory (sometimes) SErrors #97
Comments
Is this directly booted from iboot without any other code running before? |
Yes, it is. It's vanilla m1n1 without, to the best of my knowledge, doing anything weird :-) |
Why is 7c54aa3 not a valid commit in this repository and why does the version also mention -dirty then? |
Cause I can't copy-and-paste:
Sorry about that. (The problem was building from a zipfile of vanilla m1n1, to make sure it was actually vanilla. That calls |
(I'm perfectly willing to try someone else's |
No, I knew that this could happen because we map too much memory. The i2c error just made it obvious that this was not a vanilla m1n1 or at least not booted by iBoot. The correct fix is to modify memory.c such that it doesn't map anything after the end of useable RAM. Not a high priority for me though. |
As I said, I guess it all makes sense.
??? I am booting straight from iBoot, and it is a vanilla m1n1, and the i2c error sometimes happens.
Well, we need to map (some of) that RAM for m1n1 to work, obviously. |
Then just keep whatever is required above that mapped as well. |
This is a bit of a weird one, but I'm using vanilla m1n1 and can reproduce this at will. Here's a log that demonstrates what's going on:
What happens on the console is an SError with ESR 0xbe000000 and L2C_ERR_ADR 0x300000bd9498000, which is the
top_of_mem
address.(The "65566 bpp" thing and the i2c error are real, too, I'm afraid)
I guess this all makes sense since we did create a "normal" mapping for the poisoned page that starts unavailable "memory", but I'm not sure how best to fix it. I think what happens is the CPU speculatively prefetches from the mapped-but-inaccessible page. The ringbuffer read code, which is where the SError hits, does look like it would trigger such a prefetch by reading bytes sequentially (which is why it might not be possible to reproduce this using a UART, come to think of it).
The text was updated successfully, but these errors were encountered: