You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implements the Linux host side of the 2-step DSP-shell-driven llext module
load handshake introduced by the companion SOF firmware patch.
New files:
sound/soc/sof/shell-llext-shm.h — shared mailbox struct and state enum
(binary layout must match zephyr/include/sof/shell_llext_load.h).
sound/soc/sof/sof-client-llext-load.c — SOF auxiliary client driver that
creates /sys/kernel/debug/sof/llext_load. Writing a raw rimage binary
to this file drives the complete host-side flow:
1. Locate the ADSP_DW_SLOT_LLEXT_LOAD debug window slot populated by
the DSP 'sof llext_load' shell command.
2. Set state DMA_ACTIVE, copy the user buffer via vmalloc.
3. Call snd_sof_ipc4_load_library_from_buf() → IPC4 LOAD_LIBRARY DMA.
4. Write DMA_DONE (or ERROR + errno) back to the slot.
Other changes:
ipc4-loader.c / ipc4-priv.h — snd_sof_ipc4_load_library_from_buf(): in-
memory variant of sof_ipc4_load_library(), exported as SND_SOC_SOF so
the client module can call it.
sof-client.h — declare sof_client_ipc4_load_library_buf() helper.
sof-client.c — register/unregister the llext-load auxiliary client device
(IPC4 only).
include/sound/sof/ipc4/header.h — add SOF_IPC4_DEBUG_SLOT_LLEXT_LOAD.
Kconfig — add SND_SOC_SOF_CLIENT_LLEXT_LOAD tristate; reorganise debug
menu so the new option sits alongside the serial client.
Makefile — wire up snd-sof-llext-load module.
core.c — increase default IPC timeout 500 → 1500 ms to accommodate the
longer HDA DMA transfer time for library binaries.
intel/hda-loader.c — add lib_dmi_keepalive kthread: keeps the CPU in C0
while sof_ipc_tx_message() sleeps, preventing DMI L1 entry which stalls
the code-loader HDA stream on ACE (MTL/ARL-S).
intel/hda-stream.c — add dev_info BDL trace for DMA buffer diagnostics.
Usage:
Step 1 (DSP shell): sof llext_load mymodule 1
Step 2 (Linux host): cat mymodule.ri > /sys/kernel/debug/sof/llext_load
Requires CONFIG_SOF_SHELL_LLEXT_LOAD=y in the DSP firmware build.
Requires matching Zephyr patch: intel/adsp: add ADSP_DW_SLOT_LLEXT_LOAD.
Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
0 commit comments