Skip to content

Conversation

@kv2019i
Copy link
Contributor

@kv2019i kv2019i commented May 12, 2025

Commit fa4a9db ("dma: intel_adsp_hda: Fix invalid init sequence and register use") moved intel_adsp_hda_channels_init() out from resume path. This causes a regression to CONFIG_DMA_INTEL_ADSP_HDA_TIMING_L1_EXIT as without irq_config() call the interrupt configuration may be partial.

Address this by calling irq_config() unconditionally on resume path.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR fixes a regression by re-enabling the interrupt configuration on resume for the Intel ADSP HDA DMA driver. It introduces a helper function (intel_adsp_hda_enable_irqs) to centralize the irq configuration and updates both channel initialization and power management resume actions to call this helper.

@kv2019i kv2019i added the platform: Intel ADSP Intel Audio platforms label May 12, 2025
@github-actions github-actions bot added the area: DMA Direct Memory Access label May 12, 2025
@kv2019i
Copy link
Contributor Author

kv2019i commented May 12, 2025

@tmleman Please take a look. I've confirmed I see "ie[ACE_INTL].HODMA" not set on ace30 without this PR, so a suspend/resume cycle breaks the L1-exit isr logic and interrupts stop being delivered (they work initially e.g. for external module loads, but then stop). FYI @abonislawski

abonislawski
abonislawski previously approved these changes May 12, 2025
Copy link
Member

@abonislawski abonislawski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely needed

tmleman
tmleman previously approved these changes May 12, 2025
Copy link
Contributor

@tmleman tmleman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

teburd
teburd previously approved these changes May 12, 2025
nashif
nashif previously approved these changes May 12, 2025
@kv2019i
Copy link
Contributor Author

kv2019i commented May 12, 2025

FYI @tmleman @abonislawski this seems to be related to context save. I could reproduce this issue on ACE1.5 with CONFIG_ADSP_IMR_CONTEXT_SAVE=y (it's disabled by default in upstream).

Commit fa4a9db ("dma: intel_adsp_hda: Fix invalid init sequence and
register use") moved intel_adsp_hda_channels_init() out from resume
path. This causes a regression to CONFIG_DMA_INTEL_ADSP_HDA_TIMING_L1_EXIT
as without irq_config() call the interrupt configuration may be partial.

Address this by calling irq_config() unconditionally on resume path.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
@kv2019i kv2019i force-pushed the 202505-hda-dma-fix-irq-renable-on-resume branch from 1579064 to 7fc8573 Compare May 13, 2025 12:06
@kv2019i
Copy link
Contributor Author

kv2019i commented May 13, 2025

New version:

  • fixed one compiler warning that was caught by Twister tests

@tmleman
Copy link
Contributor

tmleman commented May 13, 2025

this seems to be related to context save. I could reproduce this issue on ACE1.5 with CONFIG_ADSP_IMR_CONTEXT_SAVE=y (it's disabled by default in upstream).

Context save changes the flow during booting. The driver's init function is called during kernel startup. If CONFIG_ADSP_IMR_CONTEXT_SAVE=n, it is called during every transition from D3 to D0. If CONFIG_ADSP_IMR_CONTEXT_SAVE=y, the init function will be called only during the first loading of the FW.

@sonarqubecloud
Copy link

@kartben kartben merged commit d411288 into zephyrproject-rtos:main May 14, 2025
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: DMA Direct Memory Access platform: Intel ADSP Intel Audio platforms

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants