Repository navigation
Conversation
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues block the kernel/userspace reorganization.
No open issues 🎉
What changed in this PR
Continues the kernel/userspace partition in #11306 by moving inter-core communication into src/kernel/idc. The stacked changes from #11394 also establish sof_kernel and relocate initialization code, with no intended functional changes.
Changes:
- Build IDC and initialization code under the dedicated
sof_kernellibrary. - Route IDC configuration through
src/kernel/Kconfig, preserving option values. - Update documentation paths, kernel-tier guidance, and a test-support comment.
| File | Description |
|---|---|
zephyr/CMakeLists.txt |
Creates and links sof_kernel, adds its subtree, and configures trace paths. |
test/ztest/unit/common/sof_context.c |
Updates the initialization path in a comment. |
src/kernel/Kconfig |
Sources the relocated IDC configuration. |
src/kernel/init/README.md |
Updates initialization paths and the userspace documentation link. |
src/kernel/init/init.c |
Relocates firmware initialization code unchanged. |
src/kernel/init/ext_manifest.c |
Relocates firmware metadata definitions unchanged. |
src/kernel/init/CMakeLists.txt |
Relocates initialization source registration. |
src/kernel/idc/zephyr_idc.c |
Relocates Zephyr inter-core messaging unchanged. |
src/kernel/idc/README.md |
Updates the IDC directory path and documentation link. |
src/kernel/idc/Kconfig |
Preserves the IDC timeout option at its new location. |
src/kernel/idc/idc.c |
Relocates IDC command handling unchanged. |
src/kernel/idc/CMakeLists.txt |
Relocates IDC source registration. |
src/kernel/CMakeLists.txt |
Selects sof_kernel for the IDC and initialization subdirectories. |
src/Kconfig |
Replaces the direct IDC include with the kernel configuration entry point. |
src/include/sof/userspace/README.md |
Documents the kernel subtree and dedicated library. |
src/audio/README.md |
Updates the kernel-only IDC path. |
AGENTS.md |
Updates kernel-tier placement guidance for the new layout. |
Review effort: Balanced
The inter-core communication code only runs in kernel mode. Move it to src/kernel/idc, where it is built into the sof_kernel library. Add src/kernel/Kconfig for the Kconfig files of the moved directories and source it from src/Kconfig in place of idc/Kconfig. The option values are unchanged. Fix the relative link in the README. Only Zephyr builds the IDC code, so the host builds are not affected. No functional change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
AGENTS.md, the user-space README and the audio README list the kernel-only directories by name and still name src/init and src/idc, which are now under src/kernel. List src/kernel, note that it is built into the sof_kernel library, and keep the directories that have not moved there yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
lgirdwood
force-pushed
the
kernel-user/phase2b
branch
from
November 4, 2026 11:42
abaabc9 to
70ae569
Compare
lgirdwood
marked this pull request as ready for review
November 4, 2026 16:28
lgirdwood
requested review from
abonislawski,
dbaluta,
iuliana-prodan,
kv2019i,
lbetlej,
lyakh,
mmaka1 and
plbossart
as code owners
November 4, 2026 16:28
kv2019i
approved these changes
Nov 4, 2026
PR 11398: test resultsRun date: 2026-11-04 17:51 UTC Tested commit: 70ae5693af1b1953d53ce861bbe693aa7f53b77a |
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.
Phase 2 of #11306 (kernel / user-space partition), second part: move the inter-core communication code to
src/kernel/idc. Follows #11394.Patches
src/idc→src/kernel/idc: a pure move. The code is now built into thesof_kernellibrary added in Phase 2 (part 1): add src/kernel and a sof_kernel library, move src/init #11394.src/kernel/Kconfigsources the Kconfig files of the moved directories.src/Kconfigsources it in place ofidc/Kconfig, and the option values are unchanged.AGENTS.md, the user-space README and the audio README list the kernel-only directories by name. They now listsrc/kernel, note thesof_kernellibrary, and keep the directories that have not moved yet. This also coverssrc/init, which Phase 2 (part 1): add src/kernel and a sof_kernel library, move src/init #11394 moved but did not update here.Functional change
None. The objects are unchanged, and every build's
.confighas the same option values before and after. As in #11394, the only effect is on link order: in every firmware image the symbols (name, type and size) and theSYS_INIT()order are identical, and only alignment padding in some sections changes. Two more link-order effects:kobject_hash.c,wordlist) changes size. gperf generates it from the kernel objects' addresses, which move with the link order.sof_init()changes size with the commit hash it embeds, as explained in Phase 2 (part 1): add src/kernel and a sof_kernel library, move src/init #11394.Testing
CONFIG_SOF_USERSPACE_PROXY=n;os_linux_overlay.conf;llext_relocatable.conf.SYS_INIT()order and section sizes.sof-hda-generic-cavs25-2ch.tplgboots, plays 5 s on the HDA analog PCM, and plays again after runtime suspend, with no DSP errors.All of the above was run on 78b23ad with #11394 applied. After the rebase onto d3f51d0 (current main, including #11394), the patches are unchanged, and the firmware builds, the host library and cmocka were repeated at the tip.
🤖 Generated with Claude Code