[PATCH 0/4] Review/Extend SCMI Transport Core layer

Cristian Marussi
2021-05-24T23:15:41Z

Hi all,

this short series is meant to review and extend a couple of SCMI transport
core layer mechanisms in order to ease the interaction with more complex
SCMI transport driver like the upcoming virtio-scmi.

The commits in this series have not and *should not* have any impact or
require any change in the currently existing SCMI transports.

The two main principal area of change are:

- introduce monotonically increasing message tokens: change the policy
used by the OSPM agent to select sequence number for outgoing messages
in order to minimize the re-use of recently utilized tokens so as to
mitigate the possible misbehaviors on reception of late arrival 'ghost'
reply from the platform, currently hard to identify and discard.
More details and ASCII art of the involved logics follows in the related
commit :D

- introduce optional support for delegated xfers: expose a few helpers
from the SCMI core transport layer that can be used by the transports
to actively query the core for existing in-flight transactions already
associated with a received message header or to obtain a brand new xfer
to accommodate a just received notification.
The general idea is to optionally let the transports process early and
more of their transport specific payloads filling the xfer already
naturally associated with the received message header, so that the
transport specific implementations can get rid early-on of their
specific message envelope structures (before even calling into the
core scmi_rx_callback()) and so avoiding upfront the need to keep track
of the state of such transport specific message envelopes till the core
has processed them till completion or timeout. (while not modifying the
signature of scmi_rx_callback)....any feedback even on a more sensible
naming for this optional feature would be highly appreciated :D

This, as said, is intended to be preparatory work for the rework and
simplification of the WIP virtio-scmi series.

The series is based on sudeep/for-next [1] on top of commit:

commit a3b884cef873 ("firmware: arm_scmi: Add clock management to the SCMI
power domain")

Any feedback welcome.

Thanks,

Cristian

---
[1]:https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/log/?h=for-next/scmi

Cristian Marussi (4):
firmware: arm_scmi: reset_rx_to_maxsz during async commands
firmware: arm_scmi: Add support for type handling in common functions
firmware: arm_scmi: Introduce monotonically increasing tokens
firmware: arm_scmi: Introduce delegated xfers support

drivers/firmware/arm_scmi/common.h | 43 +++-
drivers/firmware/arm_scmi/driver.c | 390 ++++++++++++++++++++++++++---
2 files changed, 393 insertions(+), 40 deletions(-)

--
2.17.1