Page MenuHomeFreeBSD

scmi: Fix SCMI mailbox polling mechanism
ClosedPublic

Authored by cristian.marussi_arm.com on Dec 13 2023, 6:37 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Nov 6, 10:41 AM
Unknown Object (File)
Mon, Nov 4, 10:26 PM
Unknown Object (File)
Mon, Nov 4, 10:26 PM
Unknown Object (File)
Mon, Nov 4, 10:10 PM
Unknown Object (File)
Sat, Oct 26, 11:54 PM
Unknown Object (File)
Mon, Oct 21, 8:27 PM
Unknown Object (File)
Oct 13 2024, 6:20 AM
Unknown Object (File)
Sep 30 2024, 2:28 AM
Subscribers

Details

Summary

When the system is cold, the SCMI stack processes commands in polling
mode with the current polling mechanism being a check of the status
register in the mailbox controller to see if there is any pending
doorbell request.

Anyway, the completion interrupt is optional by the SCMI specification
and a system could have been simply designed without it: for this
reason polling on the mailbox controller status registers is not going
to work in all situations.

Moreover even alternative SCMI transports based on shared memory, like
SMC, will not have at all a mailbox controller to poll for.

On the other side, the associated SCMI Shared Memory Transport defines
dedicated channel flags and status bits that can be used by the agent to
explicitly request a polling-based transaction, even if the completion
interrupt was available, and to check afterwards when the platform has
completed its processing on the outstanding command.

Use SCMI/SMT specific mechanism to process transactions in polling mode.

Tested on: ARM Morello Board
Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable