Skip to content

Commit 2c248ee

Browse files
tmlemankv2019i
authored andcommitted
lib_manager: Add cache writeback after library loading to IMR
Add dcache_writeback_region() call after copying library data to IMR (Isolated Memory Region) to ensure cache coherency in multicore scenarios. Without this cache operation, when Core 0 loads a library into IMR via memcpy_s(), the data remains in Core 0's data cache and is not written back to main memory. When Core 1 later tries to create a module from this library, it reads uninitialized or stale data from IMR, causing either: - "Unsupported module API version" errors (reading garbage build info) - Fatal PIF data errors and crashes (accessing corrupted module data) The fix adds a single cache writeback operation after all library data (manifest + module code/data) has been copied to IMR. This ensures library data written by Core 0 is flushed from cache to IMR memory before Core 1 attempts to read it, following the standard cache coherency protocol for non-coherent Harvard architecture (Xtensa). Fixes multicore topology crashes on Intel MTL, LNL, PTL, NVL platforms when loading external libraries with modules instantiated on secondary cores. Signed-off-by: Tomasz Leman <tomasz.m.leman@intel.com>
1 parent 5a37bcb commit 2c248ee

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/library_manager/lib_manager.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -937,6 +937,9 @@ static int lib_manager_store_library(struct lib_manager_dma_ext *dma_ext,
937937
return ret;
938938
}
939939

940+
/* Writeback entire library to ensure it's visible to other cores */
941+
dcache_writeback_region((__sparse_force void *)library_base_address, preload_size);
942+
940943
#if CONFIG_LIBRARY_AUTH_SUPPORT
941944
/* AUTH_PHASE_LAST - do final library authentication checks */
942945
ret = lib_manager_auth_proc((__sparse_force void *)library_base_address,

0 commit comments

Comments
 (0)