-
Notifications
You must be signed in to change notification settings - Fork 349
cavs: increase exit delay on memory bank powerup #7056
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
Conversation
For some reason the memory banks can still be inaccessible despite registers saying they are ready. If they are accessed prematurely this will result in a crash, typically when memory is being initialized. Adding this delay allows a device to pass over 1k reboots without a crash that previously could pass 5 cycles. Signed-off-by: Curtis Malainey <cujomalainey@chromium.org>
|
Note this was tested on rpl-001 but the diff between RPL-001 and main appears to be unrelated to the code flow for this issue. |
|
Note this regression is likely caused by the fact that #4466 (also on adl-004-drop-stable) managed to completely skip landing on main. We can pick that up instead if preferred, but I figured an exit delay is more deterministic since we know the registers signal availability before the bank is actually ready. |
|
Drive by zephyrization comment: AFAICT the equivalent driver[1] in a zephyr build does seem to have (what I think is!) the equivalent delay: https://github.com/zephyrproject-rtos/zephyr/blob/main/soc/xtensa/intel_adsp/cavs/sram.c#L44 Might be a good idea to audit to be sure. Are there known rules we could enforce more simply? Maybe something like "Must wait 3us after a write to the LDOCTL register"? Might be easier than sprinkling delay calls everywhere, and PM isn't likely to be a microsecond-scale performance path. [1] For the rather different Zephyr PM framework, but the low level code looks more or less directly translated. |
Actually I think its missing unfortunately. This new delay is the last step so it would be after this line |
It looks like the PR was left hanging and eventually closed when @slawblauciak left the SOF team.
@pblaszko did some research and it looks like this behavior might be related to a known issue. If we confirm that then the recommended fix will be to read EBB status twice and if different values is received then read again. |
Please make this a priority, we currently have devices in the hands of dogfooders that are unstable and are running out of time on our release calendar |
|
I have already created PR with recommended change |
For some reason the memory banks can still be inaccessible despite registers saying they are ready. If they are accessed prematurely this will result in a crash, typically when memory is being initialized. Adding this delay allows a device to pass over 1k reboots without a crash that previously could pass 5 cycles.
Signed-off-by: Curtis Malainey cujomalainey@chromium.org