Repository navigation
audio: iadk: implement KPB service - #11307
serhiy-katsyuba-intel wants to merge 3 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The public token is incomplete, and the userspace bridge directly invokes an asynchronous kernel notifier without a validated boundary or reliable registration result.
6 open findings
Scope registrations and events to the target KPB instance · New Prevent reuse of in-flight cross-core notifier payloads · New Route notifier_event through a validated userspace syscall · New Expose complete KpbToken type in the public header · New Validate history depth against supported KPB limits · New Report registration success only after KPB acknowledgment · New
What changed in this PR
Adds IADK KPB service interfaces and connects them to SOF’s KPB component.
Changes:
- Implements KPB v1/v2 interfaces and client operations.
- Exposes interfaces through the native system service.
- Adds notifier transport, unregister handling, and build configuration.
| File | Description |
|---|---|
src/include/sof/audio/module_adapter/library/native_system_service.h |
Declares KPB interface providers. |
src/include/sof/audio/module_adapter/library/kpb_service.h |
Defines the C bridge API. |
src/include/sof/audio/module_adapter/iadk/kpb_interface.h |
Defines IADK KPB interfaces. |
src/audio/module_adapter/library/native_system_service.c |
Resolves versioned KPB interfaces. |
src/audio/module_adapter/library/kpb_service.cpp |
Implements C++ interface adapters. |
src/audio/module_adapter/library/kpb_service_bridge.c |
Bridges clients to KPB notifications. |
src/audio/module_adapter/Kconfig |
Enables notifier support for Intel modules. |
src/audio/module_adapter/CMakeLists.txt |
Builds KPB service sources. |
src/audio/kpb.c |
Generalizes notifier handling and unregisters clients. |
src/audio/Kconfig |
Adds the KPB notifier option. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
lgirdwood
left a comment
There was a problem hiding this comment.
LGTM, just minor questions. We can come back and use native zephyr messaging once we have working wov 1/2 merged if needed.
PR 11307: test resultsRun date: 2026-10-14 13:39 UTC Tested commit: cfbccb819609729971976755fa1f818ff4c6ab43 |
Declare KpbInterface and KpbInterfaceV2 for the KPB service so that IADK modules can use the SOF KPB module. Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com> Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
Add an independent KPB notifier option and use it to guard the notifier API. This allows notifier and AMS/CLI_Q transport support to be enabled separately or together. Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com>
cfbccb8 to
aec64df
Compare
|
I think there is some terminology being mixed up here. The System Service is intended for IADK modules and exposes a C++ interface. The native System Service variant was introduced for LMDK modules. It is reasonable for the IADK interface to internally call native functions, as both layers have to meet somewhere in the implementation. However, native APIs should not return a C++ classes. Returning a C++ interface from a native function breaks the separation between the native and IADK layers and blurs the original architectural boundary between them. |
Implement the KPB service, which provides KpbInterface and KpbInterfaceV2 interfaces so that IADK modules can use the SOF KPB module. Signed-off-by: Serhiy Katsyuba <serhiy.katsyuba@intel.com> Signed-off-by: Adrian Bonislawski <adrian.bonislawski@intel.com>
aec64df to
16a954a
Compare
Fixed in a new push. To my defense those native_xxx() functions were added to IADK system agent long before this PR. Now replaced two of them with new iadk_system_service_get_interface() and iadk_system_service_get_interface_versioned(). |


Implement the KPB service, which provides KpbInterface and KpbInterfaceV2 interfaces so that IADK modules can use the SOF KPB module.