-
Notifications
You must be signed in to change notification settings - Fork 8.4k
dma: intel_adsp_hda: re-enable interrupts upon resume #89830
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
dma: intel_adsp_hda: re-enable interrupts upon resume #89830
Conversation
There was a problem hiding this 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.
|
@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
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Definitely needed
tmleman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
|
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>
7fc8573
1579064 to
7fc8573
Compare
|
New version:
|
Context save changes the flow during booting. The driver's init function is called during kernel startup. If |
|



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.