mbox series

[v4,0/2] Support for I/O width within ARM SCMI SHMEM

Message ID 20240827182450.3608307-1-florian.fainelli@broadcom.com
Headers show
Series Support for I/O width within ARM SCMI SHMEM | expand

Message

Florian Fainelli Aug. 27, 2024, 6:24 p.m. UTC
We just got our hands on hardware that only supports 32-bit access width
to the SRAM being used. This patch series adds support for the
'reg-io-width' property and allows us to specify the exact access width
that the SRAM supports.

Changes in v4:

- added alignment warnings in case the source/destination/count are not
  a 4 bytes multiple
- switched to __ioread32_copy/__iowrite32_copy per Sudeep's suggestion
- dropped volatile qualifiers to permit that switch

Changes in v3:

- added missing documentation for the structure members being added
- removed the use of a macro for the 32-bit only operation, this
  gets rid of a number of checkpatch warnings
- added missing trailing barriers
- corrected binding indentation

Changes in v2:

- fixed typo in the binding and added reviewed-by tag from Krzysztof

- determine the correct I/O operation at the time we parse the
  'reg-io-width' property rather than for each
  tx_prepare/fetch_response/fetch_notification call

- dropped support for 1 and 2 bytes 'reg-io-width' as they do not quite
  make sense, if we can support such smaller access size, then we can
  support the larger 4 byte access width, too, and there are many places
  within the SCMI code where ioread32/iowrite32 are used

Florian Fainelli (2):
  dt-bindings: sram: Document reg-io-width property
  firmware: arm_scmi: Support 'reg-io-width' property for shared memory

 .../devicetree/bindings/sram/sram.yaml        |  6 ++
 drivers/firmware/arm_scmi/common.h            | 32 +++++++-
 .../arm_scmi/scmi_transport_mailbox.c         | 13 +++-
 .../firmware/arm_scmi/scmi_transport_optee.c  | 11 ++-
 .../firmware/arm_scmi/scmi_transport_smc.c    | 11 ++-
 drivers/firmware/arm_scmi/shmem.c             | 78 +++++++++++++++++--
 6 files changed, 130 insertions(+), 21 deletions(-)

Comments

Sudeep Holla Sept. 3, 2024, 3:40 p.m. UTC | #1
On Tue, Aug 27, 2024 at 11:24:50AM -0700, Florian Fainelli wrote:
> Some shared memory areas might only support a certain access width,
> such as 32-bit, which memcpy_{from,to}_io() does not adhere to at least
> on ARM64 by making both 8-bit and 64-bit accesses to such memory.
>
> Update the shmem layer to support reading from and writing to such
> shared memory area using the specified I/O width in the Device Tree. The
> various transport layers making use of the shmem.c code are updated
> accordingly to pass the I/O accessors that they store.
>

This looks good to me now, much simpler. I will push this to -next soon,
but it won't be for v6.12. I have already sent PR for that. I want this
to be in -next for longer just to see if anyone has any comments and
doesn't break any platform(which it shouldn't anyways).

Just hoping if anyone looks at it and have feedback once it is in -next.
I will apply formally at v6.12-rc1 and report back if no one complains
until then.

--
Regards,
Sudeep