Repository navigation
Conversation
Make SOF_OS_LINUX_COMPAT_PRIORITY default to y so that a plain SOF build targets the Linux SOF driver without needing any overlay. Non Linux builds (e.g. internal CI) can still disable it via an overlay. Also derive the VIRTUAL_HEAP_EXTENDED default from it, as the additional virtual heap buffers are only needed by non-Linux configurations. This keeps the behaviour of os_linux_overlay.conf, which disables both. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
There was a problem hiding this comment.
🟡 Changes recommended
The internal CI check ignores the environment-provided EXTRA_CONF_FILE, causing ACE3.x+ builds to select LL userspace without preserving the required board-specific IMR context-save and PTL proxy settings.
1 open issue
What changed in this PR
This PR makes Linux-compatible firmware the default SOF build and preserves the previous non-Linux configuration through an explicit internal CI overlay.
Changes:
- Updates Kconfig and Intel board defaults, including automatic LL userspace on ACE3.x+.
- Adds shared and board-specific internal CI overlays while retaining the deprecated Linux overlay for script compatibility.
- Adds internal CI build coverage and updates userspace documentation.
| File | Description |
|---|---|
zephyr/test/userspace/README.md |
Preserves the test configuration with the internal CI overlay. |
zephyr/Kconfig |
Defaults extended virtual heap buffers to non-Linux configurations. |
src/include/sof/userspace/README.md |
Documents the default and internal CI privilege configurations. |
Kconfig.sof |
Enables Linux compatibility by default. |
app/overlays/internal_ci/intel_adsp_ace40_nvls.conf |
Restores NVL-S context saving and error-level logging. |
app/overlays/internal_ci/intel_adsp_ace40_nvl.conf |
Restores NVL context saving and error-level logging. |
app/overlays/internal_ci/intel_adsp_ace30_wcl.conf |
Restores WCL context saving. |
app/overlays/internal_ci/intel_adsp_ace30_ptl.conf |
Restores PTL context saving and the userspace proxy. |
app/overlays/internal_ci/intel_adsp_ace20_lnl.conf |
Restores LNL context saving. |
app/os_linux_overlay.conf |
Retains an empty, deprecated compatibility overlay. |
app/ll_userspace_overlay.conf |
Updates comments describing automatic inclusion. |
app/internal_ci_overlay.conf |
Disables Linux compatibility and documents restoration behavior. |
app/CMakeLists.txt |
Selects automatic overlays and normalizes board names. |
app/boards/intel_adsp_ace40_nvls.conf |
Disables context saving and defaults runtime logging to INFO. |
app/boards/intel_adsp_ace40_nvl.conf |
Disables context saving and defaults runtime logging to INFO. |
app/boards/intel_adsp_ace30_wcl.conf |
Disables context saving by default. |
app/boards/intel_adsp_ace30_ptl.conf |
Disables context saving and removes explicit proxy enablement. |
app/boards/intel_adsp_ace20_lnl.conf |
Disables context saving by default. |
.github/workflows/zephyr.yml |
Adds LNL/PTL internal CI builds with distinct artifact names. |
Review effort: Balanced
kv2019i
left a comment
There was a problem hiding this comment.
Looks good. We certainly have had many issues with people not using the correct overlay when trying to build SOF (to be used with Linux kernel), so making it default will avoid a lot of user (and increasingly, agent) errors.
The copilot comment seems valid. The extra-conf handling is quite complex in Zephyr build, a lot of cases to cover.
Until now the Intel board configurations described the non-Linux configuration and Linux builds had to add os_linux_overlay.conf (which, for ACE3.x and newer, also pulled in ll_userspace_overlay.conf). Make the Linux configuration the default instead: - set ADSP_IMR_CONTEXT_SAVE=n for lnl, ptl, wcl, nvl and nvl-s - do not enable SOF_USERSPACE_PROXY on ptl - use runtime log level INFO on nvl and nvl-s - always include ll_userspace_overlay.conf for ACE3.x and newer The previous default configuration is kept as internal_ci_overlay.conf. As some of the settings are board specific, app/CMakeLists.txt also includes app/overlays/internal_ci/<board>.conf when building with internal_ci_overlay.conf, and it then omits ll_userspace_overlay.conf. The overlays are looked up in EXTRA_CONF_FILE and the deprecated OVERLAY_CONFIG, given either as CMake variables or in the environment, as Zephyr merges all of them. The overlays added by app/CMakeLists.txt are now explicitly placed before user provided overlays. This matches the effective order Zephyr already produced when merging EXTRA_CONF_FILE from the cache and the local scope. The resulting .config is identical for all Intel targets (tgl, tgl-h, mtl, lnl, ptl, ptl-sim, wcl, wcl-sim, nvl, nvl-s): - new default == old default + os_linux_overlay.conf - new default + internal_ci_overlay.conf == old default Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The default SOF build now targets the Linux SOF driver, so os_linux_overlay.conf is no longer needed. Keep it as an empty overlay so that existing build scripts keep working, and remove it in a future release. Update the overlay and userspace documentation to describe the new default, and add internal_ci_overlay.conf to the userspace test build instructions so that the test keeps building with the same configuration as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The default configuration now targets the Linux SOF driver. Add a build of lnl and ptl with app/internal_ci_overlay.conf so that the previous default (non-Linux) configuration keeps being built in CI. The artifact name only gets the overlay suffix when one is used, so that the Linux vs Windows reproducibility comparison keeps matching the existing artifact names. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
03bda73 to
7459d97
Compare
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Copilot review overview
2 open issues
1 resolved since last review
Review effort: Lite
| if("${_sof_conf_files}" MATCHES "internal_ci_overlay") | ||
| # Internal CI build: also add the board specific internal CI overlay, | ||
| # if there is one. | ||
| set(_sof_ci_overlay | ||
| "${CMAKE_CURRENT_SOURCE_DIR}/overlays/internal_ci/${_sof_board_conf}.conf") | ||
| if(EXISTS "${_sof_ci_overlay}") | ||
| list(PREPEND EXTRA_CONF_FILE "${_sof_ci_overlay}") | ||
| endif() |
| @@ -0,0 +1,8 @@ | |||
| # Board specific internal CI settings for ptl, automatically | |||
| # included after internal_ci_overlay.conf. See internal_ci_overlay.conf. | |||

The Intel board configs (
app/boards/intel_adsp_*.conf) currently hold the non-Linux configuration. To build firmware for the Linux SOF driver you have to add-o app/os_linux_overlay.conf, and on ACE3.x+app/CMakeLists.txtthen also pulls inll_userspace_overlay.conf. This PR makes the Linux configuration the default and keeps the current default asapp/internal_ci_overlay.conf.Changes
SOF_OS_LINUX_COMPAT_PRIORITYnow defaults toy.VIRTUAL_HEAP_EXTENDEDdefaults toyonly if!SOF_OS_LINUX_COMPAT_PRIORITY, which matches the intent of f66d005 ("limit additional buffers to non-Linux configurations").ADSP_IMR_CONTEXT_SAVE=non lnl, ptl, wcl, nvl and nvl-sSOF_USERSPACE_PROXYapp/CMakeLists.txt:ll_userspace_overlay.confis always included, unlessinternal_ci_overlayis used.internal_ci_overlay,app/overlays/internal_ci/<board>.confis also included. This holds the per-board settings: IMR context save, the ptl userspace proxy, and the nvl log level.BOARD+BOARD_QUALIFIERS, so both the full and the split form work.EXTRA_CONF_FILEwithMERGE REVERSEand keeps the last duplicate.os_linux_overlay.conf: now empty and marked deprecated, so scripts that pass it keep working. To be removed in a later release.internal_ci_overlay.conf. The artifact names of the existing jobs don't change, so the Linux-vs-Windows reproducibility check still pairs them.internal_ci_overlay.conf, so the test keeps the same config as before.Verification
I ran a configure-only build for tgl, tgl-h, mtl, lnl, ptl, ptl-sim, wcl, wcl-sim, nvl and nvl-s, and diffed the generated
.configagainst main. All three comparisons are identical on all 10 targets:os_linux_overlay.confos_linux_overlay.confos_linux_overlay.confinternal_ci_overlay.confSOF_OS_LINUX_COMPAT_PRIORITY=y, which only Intel code reads.LOG_RUNTIME_DEFAULT_LEVELwas assigned on boards without runtime log filtering.Open points
-o app/internal_ci_overlay.confbefore this merges. Otherwise it silently gets the Linux configuration.SOF_BOOT_TEST_ALLOWED=n,CROSS_CORE_STREAM=n,INTEL_ADSP_MIC_PRIVACY=nandXRUN_NOTIFICATIONS_ENABLE=n. The new internal CI job keeps the previous configuration covered.🤖 Generated with Claude Code