ipc4: notification: Add filtering feature#10552
Open
wjablon1 wants to merge 2 commits intothesofproject:mainfrom
Open
ipc4: notification: Add filtering feature#10552wjablon1 wants to merge 2 commits intothesofproject:mainfrom
wjablon1 wants to merge 2 commits intothesofproject:mainfrom
Conversation
Moving memory allocation for IPC4 notifications to the notification module. With this change all the logic needed for sending IPC4 notifications is contained within the notification module. Currently all the notifications are allocated out of the same memory pool, so the selection of a memory pool is not part of the function interface of the notification module, but we can easily modify that behavior by adding a pool ID parameter. This change enables robust implementation of the notification filtering feature without exposing additional symbols to LLEXT modules. Signed-off-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
Adding a handler for retrieving info about the IPC4 notification mask out of the LargeConfig. The notification mask is then used for filtering IPC4 notifications sent by the FW. This feature allows muting notifications of a given kind to enhance readability of logs during debugging. Also, this feature enhances reliability of certain tests run on FPGA-based setups where the FW notifications are too overwhelming for those setups. Signed-off-by: Wojciech Jablonski <wojciech.jablonski@intel.com>
lyakh
reviewed
Feb 18, 2026
| cd->xrun_notification_sent = true; | ||
| } | ||
| uint32_t node_id = cd->link_connector_node_id.dw; | ||
| bool notif_sent = false; |
| if (ret == -EPIPE && !dd->xrun_notification_sent) { | ||
| struct ipc_msg *notify = ipc_notification_pool_get(IPC4_RESOURCE_EVENT_SIZE); | ||
| uint32_t ppl_id = dev->pipeline->pipeline_id; | ||
| bool notif_sent = false; |
| hd->xrun_notification_sent = true; | ||
| } | ||
| uint32_t ppl_id = dev->pipeline->pipeline_id; | ||
| bool notif_sent = false; |
| if (!msg) | ||
| return false; | ||
|
|
||
| struct ipc4_resource_event_data_notification *notif = msg->tx_data; |
Collaborator
There was a problem hiding this comment.
I assume this cannot be NULL
| mixer_underrun_data.data_mixed = data_mixed; | ||
| mixer_underrun_data.expected_data_mixed = expected_data_mixed; | ||
|
|
||
| send_resource_notif(resource_id, SOF_IPC4_MIXER_UNDERRUN_DETECTED, SOF_IPC4_PIPELINE, |
Collaborator
There was a problem hiding this comment.
how about we only export send_resource_notif() and move all this component-specific functions to respective components and potentially make them static there?
|
|
||
| __cold static int basefw_notification_mask_info(const char *data) | ||
| { | ||
| struct ipc4_notification_mask_info *mask_info; |
Collaborator
There was a problem hiding this comment.
we could make the argument const void *data and just initialise struct ipc4_notification_mask_info *mask_info = data; directly here
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.
Uh oh!
There was an error while loading. Please reload this page.