From 82b8d08a28e31cc30d012d15b07f92d1e59ee031 Mon Sep 17 00:00:00 2001 From: Tomasz Lauda Date: Fri, 10 Jan 2020 14:09:10 +0100 Subject: [PATCH] memory: add platform_shared_commit function Adds platform_shared_commit function for keeping shared data synchronized. It's used after usage of data shared by different cores. Such data is either statically marked with SHARED_DATA or dynamically allocated with SOF_MEM_FLAG_SHARED flag. cAVS platforms use uncached memory region, so no additional synchronization is needed, but for SMP platforms without uncache this function should writeback and invalidate data. Signed-off-by: Tomasz Lauda --- src/platform/baytrail/include/platform/lib/memory.h | 9 +++++++++ src/platform/haswell/include/platform/lib/memory.h | 9 +++++++++ src/platform/imx8/include/platform/lib/memory.h | 9 +++++++++ src/platform/intel/cavs/include/cavs/lib/memory.h | 11 +++++++++++ src/platform/library/include/platform/lib/memory.h | 2 ++ 5 files changed, 40 insertions(+) diff --git a/src/platform/baytrail/include/platform/lib/memory.h b/src/platform/baytrail/include/platform/lib/memory.h index a25765120..2020a1bbd 100644 --- a/src/platform/baytrail/include/platform/lib/memory.h +++ b/src/platform/baytrail/include/platform/lib/memory.h @@ -29,6 +29,15 @@ static inline void *platform_shared_get(void *ptr, int bytes) return ptr; } +/** + * \brief Function for keeping shared data synchronized. + * It's used after usage of data shared by different cores. + * Such data is either statically marked with SHARED_DATA + * or dynamically allocated with SOF_MEM_FLAG_SHARED flag. + * Does nothing, since BYT doesn't support SMP. + */ +static inline void platform_shared_commit(void *ptr, int bytes) { } + static inline void *platform_rfree_prepare(void *ptr) { return ptr; diff --git a/src/platform/haswell/include/platform/lib/memory.h b/src/platform/haswell/include/platform/lib/memory.h index 002eeaffe..a4031821a 100644 --- a/src/platform/haswell/include/platform/lib/memory.h +++ b/src/platform/haswell/include/platform/lib/memory.h @@ -29,6 +29,15 @@ static inline void *platform_shared_get(void *ptr, int bytes) return ptr; } +/** + * \brief Function for keeping shared data synchronized. + * It's used after usage of data shared by different cores. + * Such data is either statically marked with SHARED_DATA + * or dynamically allocated with SOF_MEM_FLAG_SHARED flag. + * Does nothing, since HSW doesn't support SMP. + */ +static inline void platform_shared_commit(void *ptr, int bytes) { } + static inline void *platform_rfree_prepare(void *ptr) { return ptr; diff --git a/src/platform/imx8/include/platform/lib/memory.h b/src/platform/imx8/include/platform/lib/memory.h index 5acce285a..ccd88a53a 100644 --- a/src/platform/imx8/include/platform/lib/memory.h +++ b/src/platform/imx8/include/platform/lib/memory.h @@ -188,6 +188,15 @@ static inline void *platform_shared_get(void *ptr, int bytes) return ptr; } +/** + * \brief Function for keeping shared data synchronized. + * It's used after usage of data shared by different cores. + * Such data is either statically marked with SHARED_DATA + * or dynamically allocated with SOF_MEM_FLAG_SHARED flag. + * Does nothing, since IMX doesn't support SMP. + */ +static inline void platform_shared_commit(void *ptr, int bytes) { } + static inline void *platform_rfree_prepare(void *ptr) { return ptr; diff --git a/src/platform/intel/cavs/include/cavs/lib/memory.h b/src/platform/intel/cavs/include/cavs/lib/memory.h index 541a487aa..cb832d2e9 100644 --- a/src/platform/intel/cavs/include/cavs/lib/memory.h +++ b/src/platform/intel/cavs/include/cavs/lib/memory.h @@ -111,6 +111,17 @@ static inline void *platform_shared_get(void *ptr, int bytes) #endif } +/** + * \brief Function for keeping shared data synchronized. + * It's used after usage of data shared by different cores. + * Such data is either statically marked with SHARED_DATA + * or dynamically allocated with SOF_MEM_FLAG_SHARED flag. + * cAVS platforms use uncached memory region, so no additional + * synchronization is needed, but for SMP platforms without uncache + * this macro should writeback and invalidate data. + */ +static inline void platform_shared_commit(void *ptr, int bytes) { } + /** * \brief Transforms pointer if necessary before freeing the memory. * \param[in,out] ptr Pointer to the allocated memory. diff --git a/src/platform/library/include/platform/lib/memory.h b/src/platform/library/include/platform/lib/memory.h index be0aab57d..fb8fd6a59 100644 --- a/src/platform/library/include/platform/lib/memory.h +++ b/src/platform/library/include/platform/lib/memory.h @@ -34,6 +34,8 @@ static inline void *platform_shared_get(void *ptr, int bytes) return ptr; } +static inline void platform_shared_commit(void *ptr, int bytes) { } + #endif /* __PLATFORM_LIB_MEMORY_H__ */ #else