Skip to content

Conversation

@lyakh
Copy link
Collaborator

@lyakh lyakh commented Jul 26, 2021

Currently when an IPC message arrives, the primary core receives the interrupt, schedules a task and begins processing the message. If it identifies, that the message is for another core, it sends an IDC message to it and waits in a busy loop until the other core completes processing the message and writes a response into the mailbox. After that the primary core notifies the host about completing the processing. This patch lets the processing secondary core notify the host directly, which also frees the primary core to handle other tasks instead of waiting in a busy loop.

@lgirdwood This is a prerequisite for the "trigger from thread" #4471

Currently when an IPC message arrives, the primary core receives the
interrupt, schedules a task and begins processing the message. If it
identifies, that the message is for another core, it sends an IDC
message to it and waits in a busy loop until the other core completes
processing the message and writes a response into the mailbox. After
that the primary core notifies the host about completing the
processing. This patch lets the processing secondary core notify the
host directly, which also frees the primary core to handle other
tasks instead of waiting in a busy loop.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Copy link
Member

@lgirdwood lgirdwood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I assume the blocking DAI config IPC change will follow in another PR as I cant see anyone setting blocking == true here.

@lyakh
Copy link
Collaborator Author

lyakh commented Jul 26, 2021

I assume the blocking DAI config IPC change will follow in another PR as I cant see anyone setting blocking == true here.

@lgirdwood it is already there in line 199 of dai.c:

	ret = ipc_process_on_core(i, true);

true above means "blocking" as opposed to all other calls to ipc_process_on_core(..., false)

@lyakh
Copy link
Collaborator Author

lyakh commented Jul 26, 2021

CI: the single Zephyr test device is gone and BYT "firmware presence" test timed out but all others succeeded

@lgirdwood lgirdwood merged commit 98e8016 into thesofproject:main Jul 26, 2021
@lyakh lyakh deleted the ipc branch July 26, 2021 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants