Skip to content

Commit

Permalink
idc: zephyr: remove unnecessary cache invd/flush calls
Browse files Browse the repository at this point in the history
The IDC message objects are stored to static "idc_work", so
the cache operations are unnecessary when pointers to these
messages are passed around.

Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
  • Loading branch information
kv2019i committed Mar 20, 2024
1 parent 6c3bd47 commit f653059
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions src/idc/zephyr_idc.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ static void idc_handler(struct k_p4wq_work *work)
int payload = -1;
k_spinlock_key_t key;

/* A message is received from another core, invalidate local cache */
sys_cache_data_invd_range(msg, sizeof(*msg));
__ASSERT_NO_MSG(!is_cached(msg));

if (msg->size == sizeof(int)) {
const int idc_handler_memcpy_err __unused =
Expand Down Expand Up @@ -145,8 +144,8 @@ int idc_send_msg(struct idc_msg *msg, uint32_t mode)
/* Temporarily store sender core ID */
msg_cp->core = cpu_get_id();

/* Sending a message to another core, write back local message cache */
sys_cache_data_flush_range(msg_cp, sizeof(*msg_cp));
__ASSERT_NO_MSG(!is_cached(msg_cp));

k_p4wq_submit(q_zephyr_idc + target_cpu, work);

switch (mode) {
Expand Down

0 comments on commit f653059

Please sign in to comment.