Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
bb92e9b
(---section submitted PRs START)
kv2019i Mar 23, 2026
4983cdd
schedule: use k_thread_cpu_pin() for CPU affinity
Jun 24, 2026
fcd7010
(---section submitted PRs STOP)
kv2019i Mar 23, 2026
a90f9f5
(---section dai-zephyr START)
kv2019i Feb 19, 2026
bb29ab2
WIP: audio: dai-zephyr: temporarily disable spinlock for dai properties
kv2019i Jun 10, 2026
bb1a7ed
audio: dai-zephyr: migrate to use dai_get_properties_copy()
kv2019i Feb 18, 2026
249dd70
(---section dai-zephyr STOP)
kv2019i Feb 19, 2026
46568f7
(---section schduler changes START)
kv2019i Mar 3, 2026
4d36a44
schedule: zephyr_ll: convert pdata->sem into a dynamic object
kv2019i Feb 13, 2026
8edbd21
schedule: add scheduler_get_data_for_core()
kv2019i Jun 10, 2026
05821fc
schedule: zephyr_ll: add user_ll_grant_access()
kv2019i Jun 26, 2026
f5dce61
schedule: zephyr_domain: use a different thread name for user LL
kv2019i Mar 24, 2026
f8dc5a9
coherent: disable core debug checks for user-space builds
kv2019i Mar 20, 2026
9dd3c98
schedule: zephyr_ll: make zephyr_ll_assert_core() user-space safe
kv2019i Jun 10, 2026
6fa83f8
schedule: zephyr_ll: use correct method to get scheduler data
kv2019i Jun 9, 2026
109529c
schedule: zephyr_dp_sched_app: fix build with no thread names
kv2019i Jun 16, 2026
cc42a76
(---section schduler changes END)
kv2019i Mar 3, 2026
4b3c1e7
(---section audio-user PRs START)
kv2019i Mar 25, 2026
830afaf
audio: pipeline-schedule: make pipeline_schedule_triggered() user safe
kv2019i Jun 10, 2026
c19f641
init: secondary_core_init: set up user-space LL scheduler context
kv2019i Jun 10, 2026
1398b35
audio: make comp_drivers_get() accessible from user-space
kv2019i Apr 15, 2026
15b3fb8
audio: chain_dma: add user-space memory and scheduling support
kv2019i Apr 21, 2026
b98e676
audio: chain-dma: use module context for allocations
kv2019i May 8, 2026
9441643
audio: chain_dma: run chain DMA in the user LL thread
kv2019i Jul 13, 2026
153e46f
userspace: fix debug-overlay builds
lyakh Jun 23, 2026
7726e13
(---section audio user PRs STOP)
kv2019i Mar 25, 2026
a19ec28
(---section: IPC user support START)
kv2019i Mar 17, 2026
6a7af4c
ipc: move standalone-test check later in ipc_init()
kv2019i Feb 10, 2026
747d7b8
ipc: add global IPC context and ll_alloc for user-space LL
kv2019i Jun 18, 2026
c4d8211
ipc4: handler: make config and pipeline-state processing context-agno…
kv2019i Jun 18, 2026
10e5065
ipc: make ipc_msg_reply and compound-message handlers syscalls
kv2019i Jun 18, 2026
8cb55a2
ipc: allocate IPC objects from the user-accessible system heap
kv2019i Jun 18, 2026
cef6a87
ipc: implement user-space IPC handling thread
kv2019i Jun 18, 2026
38950e6
zephyr: lib: make vregion_alloc/free system calls
kv2019i Jun 25, 2026
ad41e93
(---section: IPC user support STOP)
kv2019i Mar 27, 2026
a75e3f5
(---section: IPC notifications START)
kv2019i May 8, 2026
924b194
ipc: turn ipc_msg_send() into a system call if SOF_USERSPACE_LL=y
Apr 20, 2026
e2f10c3
ipc: make IPC message allocation userspace-safe
kv2019i Jun 25, 2026
284392e
ipc4: notification: make send_resource_notif() a syscall
Apr 23, 2026
54fbca1
(---section: IPC notifications STOP)
kv2019i May 8, 2026
79650de
(---section test-case START)
kv2019i Feb 19, 2026
2cfc9cf
zephyr: test: userspace: add pipeline_two_components test
kv2019i Apr 22, 2026
4ff1636
(---section WIP mandatory changes START)
kv2019i Feb 19, 2026
c8075ae
audio: pipeline: enable position reporting for user-space pipelines
kv2019i Jul 2, 2026
2ea1e49
schedule: zephyr_ll: fix use-after-free when freeing an active user-s…
kv2019i Jun 5, 2026
0ed5fd5
WIP: ipc: expose coldrodata to IPC user thread
kv2019i Apr 16, 2026
dcb5cf7
HACK: audio: collection of feature limitations to run LL in user
kv2019i Feb 26, 2026
d87f563
Revert "module: generic: remove MEM_API_CHECK_THREAD debug mechanism"
kv2019i Jul 2, 2026
70358c5
Revert "module: generic: add mutex to protect module_resources"
kv2019i Jul 2, 2026
5bef042
ipc: only add a partition if it's non-empty
lyakh May 21, 2026
54dbe70
audio: pipeline: add a missing header
lyakh May 21, 2026
7d8bd45
lib-manager: add a syscall to handle LLEXT-related work
lyakh May 22, 2026
549dc53
audio: pipeline: add a missing header
lyakh Jun 17, 2026
342f499
ipc: ipc4: type-cast a pointer instead of memcpy()
lyakh Jun 17, 2026
8fd4535
ipc: ipc4: fix a logging format
lyakh Jun 17, 2026
a03e8f4
schedule: LL: limit scope of two functions
lyakh Jun 17, 2026
3a9dde3
llext: add a function to map libraries to userspace
lyakh May 22, 2026
8d53748
lib-manager: use user heap for the driver object
lyakh May 22, 2026
c39d5b5
llext: map modules for userspace LL
lyakh May 22, 2026
157e8f2
ipc: enable syscalls for userspace always
lyakh May 22, 2026
0bc1569
ipc: remove driver copy
lyakh May 22, 2026
5340283
schedule: ll: userspace: enable LLEXT
lyakh May 22, 2026
f1af431
audio: pipeline: remove unneeded warning
lyakh Jun 10, 2026
e25919c
ipc: eliminate multiple memcpy() calls
lyakh Jun 10, 2026
ffb4fc6
ipc: allocate userspace IPC thread dynamically
lyakh Jun 10, 2026
a43a7ad
ipc: allocate userspace context uncached
lyakh Jun 10, 2026
2eee873
schedule: ll: use correct core
lyakh Jun 18, 2026
892aaef
userspace: ll: ipc: increase IPC processing timeout
lyakh Jun 15, 2026
2cd4abc
ipc: ipc4: extract pipeline ID detection into a function
lyakh Jun 22, 2026
4fc8d16
ipc: allocate userspace LL context uncached
lyakh Jun 22, 2026
a9cbb55
schedule: ll: enable multicore userspace
lyakh Jun 10, 2026
9ae8630
audio: add driver list access debugging
lyakh Jul 2, 2026
ab235b3
schedule: ll: remove a redundant type-cast
lyakh Jul 2, 2026
58798ac
userspace: use syscalls for kernel builds too
lyakh Jul 2, 2026
9b75e7e
init: fix an "unused variable" compiler warning
lyakh Jul 2, 2026
05baa8f
ipc: fix an "unused variable" compiler warning
lyakh Jul 2, 2026
2633e30
ipc: add the DP case to module initialization
lyakh Jul 2, 2026
d586943
llext: with userspace let LL thread access DP modules too
lyakh Jul 2, 2026
6d513fe
userspace: fix cpu_is_me() for kernel context
lyakh Jul 2, 2026
6478e58
audio: module-adapter: add two system calls
lyakh Jul 6, 2026
0d94483
vregion: make 3 vregion API functions syscalls
lyakh Jul 7, 2026
0741aee
schedule: dp: call directly instead of a notifier
lyakh Jul 7, 2026
4f1891d
schedule: userspace: DP: make scheduler_dp_ll_tick() a syscall
lyakh Jul 7, 2026
1ff13d9
schedule: (cosmetic) clarify arch_*schedulers_get()
lyakh Jul 7, 2026
27a5a64
schedule: dp: userspace: make scheduler_dp_internal_free() a syscall
lyakh Jul 7, 2026
df8141d
schedule: dp: userspace grant IPC thread rights on DP assets
lyakh Jul 8, 2026
c631828
schedule: ll: fix non-userspace build
lyakh Jul 8, 2026
6feb026
schedule: ll: userspace: grant the LL thread rights on DP
lyakh Jul 8, 2026
4017b09
schedule: dp: make compatible with userspace LL
lyakh Jul 9, 2026
3dcb43c
ipc: remove a duplicate header
lyakh Jul 9, 2026
57188df
ipc: add a comment to explain DP flow
lyakh Jul 9, 2026
baa3237
schedule: fix regression with DRAM execution debugging
lyakh Jul 16, 2026
31e1e7a
llext: adjust for MMU flag application
lyakh Jul 31, 2026
dc9ed05
ipc: don't attempt to add missing cold sections
lyakh Aug 3, 2026
8f3afdb
ipc: (cosmetic) compact several lines
lyakh Aug 3, 2026
08744c7
build: fix gcc compilation
lyakh Aug 3, 2026
2d7b90d
(cosmetic) move variable definitions closer to usage
lyakh Aug 3, 2026
b1fce50
ipc: (cosmetic) reduce the numner of type-casts
lyakh Aug 3, 2026
0bc3737
component: use a local UUID copy for LLEXT instances
lyakh Aug 3, 2026
ea11914
ipc: ipc4: extract common code into a function
lyakh Aug 3, 2026
19531d0
llext: add a check to llext_manager_mod_find()
lyakh Aug 3, 2026
25af508
llext: move 2 functions higher
lyakh Aug 3, 2026
b99676d
llext: don't access DRAM when freeing
lyakh Aug 3, 2026
ee80437
llext: temporarily map ELF headers for userspace when freeing
lyakh Aug 3, 2026
6fe6623
llext: avoid DRAM access in userspace when freeing
lyakh Aug 3, 2026
8d16a0d
userspace: perform library loading in kernel context
lyakh Aug 3, 2026
bd4b1c4
llext: remove llext_manager_map_lib()
lyakh Aug 3, 2026
c20c623
userspace-ll: re-enable DRAM execution and data
lyakh Aug 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions app/overlays/ptl/ll_userspace_overlay.conf
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,18 @@ CONFIG_DAI_USERSPACE=y

# problem with DSP panics due to illegal instruction hit in user-space if cold
# store execution is enabled. Disable it for now until rootcause is found.
CONFIG_COLD_STORE_EXECUTE_DRAM=n
CONFIG_COLD_STORE_EXECUTE_DEBUG=n

# telemetry not yet user-space compatible
CONFIG_SOF_TELEMETRY_PERFORMANCE_MEASUREMENTS=n
CONFIG_SOF_TELEMETRY_IO_PERFORMANCE_MEASUREMENTS=n

# disable loadable modules (hits privilege issues in user-space now)
CONFIG_LLEXT_STORAGE_WRITABLE=n
CONFIG_LLEXT_EXPERIMENTAL=n
CONFIG_MODULES=n

# some of current boot tests interfere with user-space setup
CONFIG_SOF_BOOT_TEST_ALLOWED=n

# misc features not yet compatible with user-space
CONFIG_CROSS_CORE_STREAM=n
CONFIG_INTEL_ADSP_MIC_PRIVACY=n
CONFIG_XRUN_NOTIFICATIONS_ENABLE=n

CONFIG_MAX_THREAD_BYTES=4
21 changes: 21 additions & 0 deletions posix/include/rtos/mutex.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,25 @@ static inline int sys_mutex_unlock(struct sys_mutex *mutex)
return 0;
}

/* provide a no-op implementation for zephyr/sys/sem.h */

struct sys_sem {
};

static inline int sys_sem_init(struct sys_sem *sem, unsigned int initial_count,
unsigned int limit)
{
return 0;
}

static inline int sys_sem_give(struct sys_sem *sem)
{
return 0;
}

static inline int sys_sem_take(struct sys_sem *sem, k_timeout_t timeout)
{
return 0;
}

#endif
5 changes: 3 additions & 2 deletions scripts/llext_link_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,8 +144,7 @@ def main():
# critical functions in a .cold ELF section, read-only data in a
# .coldrodata ELF section, etc. When compiling and linking such
# functions, an additional .cold.literal section is automatically
# created. Note, that for some reason the compiler also marks .cold as
# executable.
# created.
# This script links those sections at address 0. We could hard-code
# section names, but so far we choose to only link .text the "original"
# way and all other executable sections we link at 0. For data sections
Expand All @@ -168,6 +167,8 @@ def main():

dram_addr += section.header['sh_size']

dram_addr = align_up(dram_addr, 0x1000)

for section in readonly_dram:
s_alignment = section.header['sh_addralign']
s_name = section.name
Expand Down
4 changes: 2 additions & 2 deletions src/audio/buffers/comp_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include <sof/audio/sink_api.h>
#include <sof/audio/source_api.h>
#include <sof/audio/sink_source_utils.h>
#include <sof/audio/module_adapter/module/generic.h>
#include <rtos/userspace_helper.h>
#include <sof/common.h>
#include <rtos/interrupt.h>
Expand Down Expand Up @@ -165,8 +166,7 @@ static void comp_buffer_free(struct sof_audio_buffer *audio_buffer)

if (alloc && alloc->vreg) {
vregion_free(alloc->vreg, buffer);
if (!vregion_put(alloc->vreg))
rfree(alloc);
module_adapter_vreg_free(alloc);
} else {
sof_heap_free(alloc ? alloc->heap : NULL, buffer);
}
Expand Down
Loading