Skip to content

[IGNORE] re-test jenkins failure in PR 5182 / internal issue 607 - #5185

Closed
marc-hb wants to merge 3 commits into
thesofproject:topic/sof-devfrom
marc-hb:testjenkins607
Closed

marc-hb wants to merge 3 commits into
thesofproject:topic/sof-devfrom
marc-hb:testjenkins607

Conversation

@marc-hb

@marc-hb marc-hb commented Sep 19, 2024 •

Copy link
Copy Markdown
Collaborator

Re-test jenkins failure #5182 (comment) / internal issue 607

…download

It has been reported that the DMA memory allocation for firmware download can fail after extended period of uptime on systems with relatively small amount of RAM when the system memory becomes fragmented.

The issue primarily happens when the system is waking up from system suspend, swap might not be available and the MM system cannot move things around to allow for successful allocation.

If the IMR boot is not supported then for each DSP boot we would need to allocate the DMA buffer for firmware transfer, which can increase the chances of the issue to be hit.

This patch adds support for allocating the DMA buffer once at first boot time and keep it until the system is shut down, rebooted or the drivers re-loaded and makes this as the default operation.

With keep_firmware_dma_buffer module parameter the persistent firmware download DMA buffer can be disabled to fall back to on demand allocation.

The following functions are only used internally, they don't need to be
exported:
hda_cl_copy_fw(), hda_cl_prepare(), hda_cl_trigger() and hda_cl_cleanup().

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
While on first boot we obviously not going to do an IMR boot as we have
not booted the DSP up yet, but the flag can be evaluated earlier to allow
new features to rely on the IMR support flag.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
…download

It has been reported that the DMA memory allocation for firmware download
can fail after extended period of uptime on systems with relatively small
amount of RAM when the system memory becomes fragmented.

The issue primarily happens  when the system is waking up from system
suspend, swap might not be available and the MM system cannot move things
around to allow for successful allocation.

If the IMR boot is not supported then for each DSP boot we would need to
allocate the DMA buffer for firmware transfer, which can increase the
chances of the issue to be hit.

This patch adds support for allocating the DMA buffer once at first boot
time and keep it until the system is shut down, rebooted or the drivers
re-loaded.

In case IMR boot is not supported, always cache the DMA memory and a module
parameter is provided to force this behavior if needed.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
@marc-hb marc-hb closed this Sep 20, 2024
@marc-hb
marc-hb deleted the testjenkins607 branch September 20, 2024 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants