dp: nocodec: switch playback SRC to DP by default#10469
dp: nocodec: switch playback SRC to DP by default#10469lgirdwood merged 10 commits intothesofproject:mainfrom
Conversation
|
@lyakh Some nocodec failings. |
@lgirdwood yes, I've traced it back to an update in Zephyr, which had disabled double mapping. I'm working to fix it. |
There was a problem hiding this comment.
Pull request overview
This PR switches the playback SRC (Sample Rate Converter) to use the DP (Data Processing) domain by default in the nocodec topology, while keeping the capture SRC in the default domain. Additionally, it adds cached memory partition support for DP scheduler tasks.
Key changes:
- Splits the SRC domain configuration into separate playback and capture domains
- Adds cached memory partition support (HEAP_CACHE and CFG_CACHE) for improved memory access patterns
- Updates test topology parameters to maintain capture path DP testing
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tools/topology/topology2/cavs-nocodec.conf | Splits SRC_DOMAIN into SRC_DOMAIN_PLAYBACK (DP) and SRC_DOMAIN_CAPTURE (default) and updates widget configurations |
| tools/topology/topology2/development/tplg-targets.cmake | Updates test topology parameters from SRC_DOMAIN to SRC_DOMAIN_CAPTURE for MTL, LNL, and PTL platforms |
| src/schedule/zephyr_dp_schedule_application.c | Adds cached memory partition initialization and cleanup for both heap and mailbox partitions |
| src/schedule/zephyr_dp_schedule.h | Extends the sof_dp_part_type enum with HEAP_CACHE and CFG_CACHE partition types |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
SOFCI TEST |
|
retest with #10474 merged |
|
SOFCI TEST |
|
SOFCI TEST |
b653aa5 to
1f3c6ed
Compare
|
SOFCI TEST |
|
https://github.com/thesofproject/sof/actions/runs/21742080825/job/62719480359?pr=10469 is a regression introduced by #10523 #10523 (comment) |
Since Zephyr has removed double mapping per Kconfig switch we need to restore it in SOF. Next we should try to optimize mappings to only use the ones we really need. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
DP tasks don't need to be rescheduled when pause is released. Default handling works correctly in that case too. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
We compare flags on repeated allocations from an existing pool, but initialisation got forgotten in the process. Restore it. Fixes: d6e6ac5 ("Add a object pool allocator") Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
When an objpool allocation fails an error should be returned. Fix the missing error code assignment. Fixes: fc73f9d ("sp: application: switch memory domains to object pools") Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
|
d263649 reverted because of a regression in SRC DP: |
A recent module-adapter feature addition broke SRC DP support. Fix it by adding a test for incomplete initialization data. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
|
SOFCI TEST |
|
nocodec PTL missing. rerun |
Results in with some data about the failure. https://sof-ci.01.org/sofpr/PR10469/build19078/devicetest/index.html?model=PTLH_RVP_NOCODEC&testcase=check-capture-3times |
2f076d8 to
b0263bd
Compare
This reverts commit 8acc9ca. It seems to break certain capture flows, revert it until fixed. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Userspace modules should only call mod_fast_get() and mod_fast_put(), which already can cross into the kernel space on their own, so fast_get() and fast_put() themselves don't need to be syscalls. Remove their syscall implementations. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
fast_get.c doesn't have a "trace context" - it doesn't have a DECLARE_TR_CTX() call. Hencs all calls to tr_err() and friends are wrong. Replace them with respective LOG_*() analogs. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
If a module fast-gets memory for a specific its instance, running in userspace and then another usuerspace instance wants to share it, access has to be granted to that object by that thread too. This patch does that while also restricting object sharing to "large" objects (currently larger than half a page), and smaller objects are just copied. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Switch both SRC instances in the nocodec topology on PTL to DP mode by default. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Old review from earlier version of PR. PR changed, updates for FLIX and alignment was reached to maintain the review history over splitting PR to re-review.
|
Commit fe86c2b introduced regression in SRC on PTL platform: [ 23.843020] <inf> dma: z_impl_sof_dma_put: dma_put(), dma = 0x400c0348, sref = 0
[ 23.843040] <err> os: print_fatal_exception: ** FATAL EXCEPTION
[ 23.843040] <err> os: print_fatal_exception: ** CPU 0 EXCCAUSE 28 (load prohibited)
[ 23.843040] <err> os: print_fatal_exception: ** PC 0xa0042e82 VADDR 0xa01c3000
[ 23.843040] <err> os: print_fatal_exception: ** PS 0x60523
[ 23.843040] <err> os: print_fatal_exception: ** (INTLEVEL:3 EXCM: 0 UM:1 RING:0 WOE:1 OWB:5 CALLINC:2)
[ 23.843040] <err> os: xtensa_dump_stack: ** A0 0xa006c9af SP 0xa00e5b70 A2 0xa01c3000 A3 0x40
[ 23.843040] <err> os: xtensa_dump_stack: ** A4 0x17e346 A5 0x91b9 A6 0xa01c3000 A7 0x40171324
[ 23.843040] <err> os: xtensa_dump_stack: ** A8 0xa01c403f A9 0xa01b2000 A10 (nil) A11 0xa01c3000
[ 23.843040] <err> os: xtensa_dump_stack: ** A12 0x1 A13 0x60123 A14 0x4017176c A15 0x103f
[ 23.843050] <err> os: xtensa_dump_stack: ** LBEG 0xa0042e82 LEND 0xa0042e88 LCOUNT 0x3f
[ 23.843050] <err> os: xtensa_dump_stack: ** SAR 0x20
[ 23.843050] <err> os: xtensa_dump_stack: ** THREADPTR (nil)fyi @lyakh @lgirdwood |
Switch one of the two SRC instances in the nocodec topology to DP mode by default.