From a3c9709e40ad050b30f9f69e8a169f0fc0b5ecae Mon Sep 17 00:00:00 2001 From: Adrian Warecki Date: Mon, 1 Dec 2025 15:58:35 +0100 Subject: [PATCH 1/4] west.yml: update Zephyr to 6cd7cfa104a Total of 91 commits. Changes include: 6cd7cfa104a xtensa: mmu: ptables: Set PPN in region_map_update to fix memory mapping 942b1e85715 xtensa: mmu: ptables: Introduce PTE_PPN_SET macro f5f56113fe2 xtensa: mmu: ptables: Introduce PTE_PPN_GET macro 53eaf0f71ee llext: llext_priv: INSTR_FETCHABLE missing parentheses in definition Signed-off-by: Adrian Warecki --- west.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/west.yml b/west.yml index 31f5235e9aec..6d8e372b1055 100644 --- a/west.yml +++ b/west.yml @@ -43,7 +43,7 @@ manifest: - name: zephyr repo-path: zephyr - revision: f908d0b5f22adaaf912e729317c323864f1e1641 + revision: 6cd7cfa104a5f4de68408c9bf6516cd1109b9782 remote: zephyrproject # Import some projects listed in zephyr/west.yml@revision From 6fe8463b23cf70761f3bf4a09851f2bd8a5d645e Mon Sep 17 00:00:00 2001 From: Adrian Warecki Date: Fri, 7 Nov 2025 18:16:06 +0100 Subject: [PATCH 2/4] dp: Disable DP task deadline recalculation from userspace DP thread Disable DP tasks deadline recalculation from DP threads running in userspace. Recalculation requires information about other DP threads, which is not available from a DP thread operating in userspace. This is a temporary change until a better solution is found. Signed-off-by: Adrian Warecki --- src/schedule/zephyr_dp_schedule.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/schedule/zephyr_dp_schedule.c b/src/schedule/zephyr_dp_schedule.c index 34e30fe78d51..b4ce7f768f90 100644 --- a/src/schedule/zephyr_dp_schedule.c +++ b/src/schedule/zephyr_dp_schedule.c @@ -405,10 +405,13 @@ static void dp_thread_fn(void *p1, void *p2, void *p3) (void)p2; (void)p3; struct task_dp_pdata *task_pdata = task->priv_data; + struct scheduler_dp_data *dp_sch = NULL; unsigned int lock_key; enum task_state state; bool task_stop; - struct scheduler_dp_data *dp_sch = scheduler_get_data(SOF_SCHEDULE_DP); + + if (!(task->flags & K_USER)) + dp_sch = scheduler_get_data(SOF_SCHEDULE_DP); do { /* @@ -454,7 +457,8 @@ static void dp_thread_fn(void *p1, void *p2, void *p3) * TODO: it should be for all tasks, for all cores * currently its limited to current core only */ - scheduler_dp_recalculate(dp_sch, false); + if (dp_sch) + scheduler_dp_recalculate(dp_sch, false); scheduler_dp_unlock(lock_key); } while (!task_stop); From f5ee2529d59608f291b32b8ab2b16bf5c64ce975 Mon Sep 17 00:00:00 2001 From: Adrian Warecki Date: Mon, 4 Aug 2025 12:32:48 +0200 Subject: [PATCH 3/4] ptl: enable user-space support for PTL PTL supports user-space, enable it by default. Signed-off-by: Adrian Warecki --- app/boards/intel_adsp_ace30_ptl.conf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/boards/intel_adsp_ace30_ptl.conf b/app/boards/intel_adsp_ace30_ptl.conf index 48a923ab7870..1be5253991e3 100644 --- a/app/boards/intel_adsp_ace30_ptl.conf +++ b/app/boards/intel_adsp_ace30_ptl.conf @@ -65,3 +65,11 @@ CONFIG_LOG_BACKEND_ADSP=n CONFIG_LOG_FLUSH_SLEEP_US=5000 CONFIG_LOG_OUTPUT_FORMAT_LINUX_TIMESTAMP=y CONFIG_WINSTREAM_CONSOLE=n + +# Userspace options +CONFIG_USERSPACE=y +CONFIG_DYNAMIC_THREAD=y +CONFIG_DYNAMIC_THREAD_ALLOC=y +CONFIG_DYNAMIC_THREAD_PREFER_ALLOC=y +CONFIG_SOF_STACK_SIZE=8192 +CONFIG_SOF_USERSPACE_PROXY=y From 63f26de7b73fa2206fcc58e0a82d7e99b66a7695 Mon Sep 17 00:00:00 2001 From: Adrian Warecki Date: Mon, 1 Dec 2025 21:18:11 +0100 Subject: [PATCH 4/4] W/A: Workaround for invalid IMR size reported by simulator Signed-off-by: Adrian Warecki --- zephyr/lib/alloc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/zephyr/lib/alloc.c b/zephyr/lib/alloc.c index 9be37f93c10e..a7b5d64c350d 100644 --- a/zephyr/lib/alloc.c +++ b/zephyr/lib/alloc.c @@ -241,8 +241,11 @@ static inline size_t get_l3_heap_size(void) * - actual IMR heap start */ size_t offset = IMR_L3_HEAP_BASE - L3_MEM_BASE_ADDR; + size_t size = ace_imr_get_mem_size(); - return ROUND_DOWN(ace_imr_get_mem_size() - offset, L3_MEM_PAGE_SIZE); + if (size > MB(48)) + size = MB(16); + return ROUND_DOWN(size - offset, L3_MEM_PAGE_SIZE); } void l3_heap_save(void)