audio: chain_dma: fix notification pool overflow#10816
Open
wjablon1 wants to merge 1 commit into
Open
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes a notification pool overflow in the chain DMA component. Previously, the shared chain_get_dma_status() wrapper was called for both Host and Link DMAs, and a successful Host DMA status check would clear the xrun_notification_sent latch — defeating its purpose and causing a flood of Link xrun notifications that exhausted the notification pool. The fix removes the wrapper and applies xrun notification handling only to the Link DMA path.
Changes:
- Replace
chain_get_dma_status()wrapper with directdma_get_status()calls for Host and Link. - Introduce
chain_dma_send_xrun_notif()helper guarded byCONFIG_XRUN_NOTIFICATIONS_ENABLE. - Clear the
xrun_notification_sentlatch only on a successful Link DMA status.
Task for DMA chain uses the same function wrapper for checking DMA statuses and sending notifications for both Host and Link DMAs. Moreover, only one xrun_notification_sent flag is defined for that purpose. For Host DMA notifications are not needed since the task immediately returns an error on any Host DMA failure. However, the side effect of using the common function wrapper is that we might clear the flag while checking the Host DMA status and thus cause a Link DMA notification flood. This change fixes this issue by removing the common function wrapper and limiting notification API usage to Link DMA. Signed-off-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
ba04247 to
6ee6df6
Compare
tmleman
approved these changes
May 28, 2026
softwarecki
approved these changes
May 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Task for DMA chain uses the same function wrapper for checking DMA statuses and sending notifications for both Host and Link DMAs. Moreover, only one xrun_notification_sent flag is defined for that purpose. For Host DMA notifications are not needed since the task immediately returns an error on any Host DMA failure. However, the side effect of using the common function wrapper is that we might clear the flag while checking the Host DMA status and thus cause a Link DMA notification flood. This change fixes this issue by removing the common function wrapper and limiting notification API usage to Link DMA.