Repository navigation
IMR restore feature implementation - #4320
Conversation
|
mark it as draft and I will fix test_bench issue later. |
9d78545 to
6fa9019
Compare
|
The corresponding Linux PR here: thesofproject/linux#2989, though it is backward compatible so the 2 PRs can be merged separately. |
|
This simply series implement the IMR restoring feature from the FW side. It is verified on cAVS platforms. After switching to IMR restoring, the resuming boot time is decreased significantly: |
lgirdwood
left a comment
There was a problem hiding this comment.
Almost good to merge. Good work !
There was a problem hiding this comment.
If the host decide what happens, is there a way for the host to tell the DSP to skip the status save in IMR?
There was a problem hiding this comment.
If the host decide what happens, is there a way for the host to tell the DSP to skip the status save in IMR?
Just keep today's flow on the host side, the sending of the FW_PURGE IPC will make the DSP to skip it.
kv2019i
left a comment
There was a problem hiding this comment.
Obligatory ABI process note. If everybody agreed, we can make an exception, but I want to ensure we make an explicit choice about it.
Add a platform_context_save() routine to all platforms, which can be used to perform any platform specific stuff during suspending the DSPs. Initialize all these routines to be do nothing. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Use the unified macro IMR_BOOT_LDR_TEXT_ENTRY_BASE for the boot loader text entry. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
To enable the feature that resuming from IMR, we need to configure IMR layout with correct magic number and IMR restore vector, in the platform_context_save() routine. This is harmless even the driver want to re-downloading FW at resuming stage, sending the FW_PURGE IPC from the host side will ask the ROM code to omit these IMR restoring stuff. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Invoke platform_context_save() routine to perform platform specific suspending stuff, before handling the CTX_SAVE IPC. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Add flag SOF_IPC_INFO_D3_PERSISTENT to inform host driver if the IMR restore feature is supported to the fw_ready message, then the host driver can decide whether to choose it or not. Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
|
@lgirdwood @kv2019i @plbossart flag naming updated, ABI minor version bumped, please help to review. |
This is worth a discussion at next TSC. We are not changing the structure or the usage of the structure members, but are adding a value/bit (could also apply to enum) to an existing "flags" member. Anyway I've added to ABI. |
|
@keyonjie can you link kernel PR in here too. |
sure, as mentioned above, the corresponding Linux PR here: thesofproject/linux#2989. |
|
@lgirdwood this PR does not work as is with the matching PR thesofproject/linux#2989 We may have to revert and retest separately. Testing at the firmware level only did not show any problems, the change of flows only happens when the kernel decides to not reboot the DSP. We need to be more careful for stuff like this, e.g. by asking for a dedicated test with the two changes. |
This series will implement the IMR restoring feature from the FW side.
We still need the host Linux driver side change to enable this feature, but the implementation here is backward compatible.
Next:
add information to FW_READY message to inform host if IMR restore feature is supported, then the Linux driver can decide to enable it or not.