[GIT PULL] firmware: arm_scmi: Updates for v6.3
Sudeep Holla
sudeep.holla at arm.com
Fri Jan 20 08:21:52 PST 2023
Hi ARM SoC Team,
Please pull !
The majority of the changes are in -next for a week now and all the reported
build related issues are fixed.
Regards,
Sudeep
-->8
The following changes since commit 1b929c02afd37871d5afb9d498426f83432e71c2:
Linux 6.2-rc1 (2022-12-25 13:41:39 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git tags/scmi-updates-6.3
for you to fetch changes up to 32a55bbdd74e2bb76a76979bc4f37e7e7ebe620d:
firmware: arm_scmi: Clarify raw per-channel ABI documentation (2023-01-20 14:11:38 +0000)
----------------------------------------------------------------
Arm SCMI updates for v6.3
The main addition is a unified userspace interface for SCMI irrespective
of the underlying transport and along with some changed to refactor the
SCMI stack probing sequence.
1. SCMI unified userspace interface
This is to have a unified way of testing an SCMI platform firmware
implementation for compliance, fuzzing etc., from the perspective of
the non-secure OSPM irrespective of the underlying transport supporting
SCMI. It is just for testing/development and not a feature intended fo
use in production.
Currently an SCMI Compliance Suite[1] can only work by injecting SCMI
messages using the mailbox test driver only which makes it transport
specific and can't be used with any other transport like virtio,
smc/hvc, optee, etc. Also the shared memory can be transport specific
and it is better to even abstract/hide those details while providing
the userspace access. So in order to scale with any transport, we need
a unified interface for the same.
In order to achieve that, SCMI "raw mode support" is being added through
debugfs which is more configurable as well. A userspace application
can inject bare SCMI binary messages into the SCMI core stack; such
messages will be routed by the SCMI regular kernel stack to the backend
platform firmware using the configured transport transparently. This
eliminates the to know about the specific underlying transport
internals that will be taken care of by the SCMI core stack itself.
Further no additional changes needed in the device tree like in the
mailbox-test driver.
[1] https://gitlab.arm.com/tests/scmi-tests
2. Refactoring of the SCMI stack probing sequence
On some platforms, SCMI transport can be provide by OPTEE/TEE which
introduces certain dependency in the probe ordering. In order to address
the same, the SCMI bus is split into its own module which continues to
be initialized at subsys_initcall, while the SCMI core stack, including
its various transport backends (like optee, mailbox, virtio, smc), is
now moved into a separate module at module_init level.
This allows the other possibly dependent subsystems to register and/or
access SCMI bus well before the core SCMI stack and its dependent
transport backends.
----------------------------------------------------------------
Cristian Marussi (31):
firmware: arm_scmi: Clear stale xfer->hdr.status
firmware: arm_scmi: Harden shared memory access in fetch_response
firmware: arm_scmi: Harden shared memory access in fetch_notification
firmware: arm_scmi: Fix virtio channels cleanup on shutdown
firmware: arm_scmi: Simplify chan_available transport operation
firmware: arm_scmi: Use dedicated devices to initialize channels
firmware: arm_scmi: Move protocol registration helpers
firmware: arm_scmi: Add common notifier helpers
firmware: arm_scmi: Refactor protocol device creation
firmware: arm_scmi: Move handle get/set helpers
firmware: arm_scmi: Refactor device create/destroy helpers
firmware: arm_scmi: Introduce a new lifecycle for protocol devices
firmware: arm_scmi: Split bus and driver into distinct modules
firmware: arm_scmi: Refactor xfer in-flight registration routines
firmware: arm_scmi: Refactor polling helpers
firmware: arm_scmi: Refactor scmi_wait_for_message_response
firmware: arm_scmi: Add flags field to xfer
firmware: arm_scmi: Add xfer helpers to provide raw access
firmware: arm_scmi: Move errors defs and code to common.h
firmware: arm_scmi: Add internal platform/channel identifiers
include: trace: Add platform and channel instance references
debugfs: Export debugfs_create_str symbol
firmware: arm_scmi: Populate a common SCMI debugfs root
firmware: arm_scmi: Add debugfs ABI documentation for common entries
firmware: arm_scmi: Add core raw transmission support
firmware: arm_scmi: Add debugfs ABI documentation for raw mode
firmware: arm_scmi: Reject SCMI drivers when configured in raw mode
firmware: arm_scmi: Call raw mode hooks from the core stack
firmware: arm_scmi: Add the raw mode co-existence support
firmware: arm_scmi: Add per-channel raw injection support
firmware: arm_scmi: Clarify raw per-channel ABI documentation
Documentation/ABI/testing/debugfs-scmi | 70 ++
Documentation/ABI/testing/debugfs-scmi-raw | 117 +++
drivers/firmware/arm_scmi/Kconfig | 32 +
drivers/firmware/arm_scmi/Makefile | 9 +-
drivers/firmware/arm_scmi/bus.c | 395 ++++++--
drivers/firmware/arm_scmi/common.h | 100 +-
drivers/firmware/arm_scmi/driver.c | 1225 ++++++++++++++---------
drivers/firmware/arm_scmi/mailbox.c | 6 +-
drivers/firmware/arm_scmi/optee.c | 6 +-
drivers/firmware/arm_scmi/protocols.h | 7 +
drivers/firmware/arm_scmi/raw_mode.c | 1443 ++++++++++++++++++++++++++++
drivers/firmware/arm_scmi/raw_mode.h | 31 +
drivers/firmware/arm_scmi/shmem.c | 9 +-
drivers/firmware/arm_scmi/smc.c | 6 +-
drivers/firmware/arm_scmi/virtio.c | 11 +-
fs/debugfs/file.c | 1 +
include/linux/scmi_protocol.h | 5 -
include/trace/events/scmi.h | 18 +-
18 files changed, 2917 insertions(+), 574 deletions(-)
create mode 100644 Documentation/ABI/testing/debugfs-scmi
create mode 100644 Documentation/ABI/testing/debugfs-scmi-raw
create mode 100644 drivers/firmware/arm_scmi/raw_mode.c
create mode 100644 drivers/firmware/arm_scmi/raw_mode.h
More information about the linux-arm-kernel
mailing list