[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAPDyKFq1ZbP4c9ECfM1SY+MEopf+dC19w9PkqXaUjevf=bPjcw@mail.gmail.com>
Date: Mon, 10 Feb 2025 14:21:02 +0100
From: Ulf Hansson <ulf.hansson@...aro.org>
To: Kamal Dasu <kamal.dasu@...adcom.com>, Jens Wiklander <jens.wiklander@...aro.org>
Cc: linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
adrian.hunter@...el.com, linux-mmc@...r.kernel.org, robh@...nel.org,
krzk+dt@...nel.org, conor+dt@...nel.org, wsa+renesas@...g-engineering.com,
f.fainelli@...il.com, bcm-kernel-feedback-list@...adcom.com
Subject: Re: [PATCH RFC 0/3] mmc: sdhci-brcmstb: Add rpmb sharing support
+ Jens
On Thu, 6 Feb 2025 at 23:09, Kamal Dasu <kamal.dasu@...adcom.com> wrote:
>
> This patch set adds support for Broadcom TZOS to read and write to RPMB
> partition using synchronized access to the controller hardware.
> To achieve this Linux OS and the secure TZOS make use of:
> - shared hardware semaphore register
> - a set of SDIO shared work registers and
> - IPI interrupt registers
> The sdio shared work registers indicates next in queue to access the controller
> and current agent in the queue. The currently running OS that needs access to
> the controller puts itself in its slot of work register and if its next in line
> it can try to grab the hardware semaphore and complete its mmc requests.
> Next agent queue state is changed under the hardware semaphore lock before it
> release it by looking at work slot register. send and receive IPI interrupts
> between linux and secure world are used to indicatecompletion of transaction to
> the waiting OS. TZOS has its own RPMB driver which accesses partition when it
> wants to read/write RPMB frames. Current implementation assumes Linux and TZOS
> as the two work agents.
We recently added an in-kernel interface/subsystem for RPMB
(drivers/misc/rpmb-core.c). The optee driver (drivers/tee/*) uses it
ro read/write frames and route them for the secure OS.
When the mmc subsystem probes the eMMC card, it registers it as an
RPMB device via the new RPMB subsystem. In this way, it allows
consumers (as the optee driver) to read/write to/from it.
>
> Change required adding two core mmc_host_ops request_start() and request_done()
> to let the host controller driver know when a mmc request starts and ends so
> that the access can be synchronized. This has been tested with both the sdhci
> and cqhci access. Currently these ops are implemented by the sdhci-brcmstb
> controller dirver to acquire and release the hardware semaphore before and
> after access. This change to the mmc/core driver does not have any impact to
> existing controller drivers.
It seems to me that this isn't needed at all, assuming we have an
in-kernel tee driver that can route the RPMB frames, but maybe I don't
fully understand the use case.
I have looped in Jens Wiklander, allowing him to comment on this too.
Kind regards
Uffe
>
> Posting this path to get comments on the initial implementation.
>
> Todo :
> - Provide hardware smeaphore using the harware spinlock driver framework
> - Use IPI send receive interrupt controller driver
>
> Kamal Dasu (3):
> mmc: add request_start() and request_done() mmc ops
> dt-bindings: mmc: brcm,sdhci-brcmstb: Add sdio sharing support
> mmc: sdhci-brcmstb: Add rpmb sharing support in host driver
>
> .../bindings/mmc/brcm,sdhci-brcmstb.yaml | 16 +-
> drivers/mmc/core/core.c | 14 +-
> drivers/mmc/host/sdhci-brcmstb.c | 275 +++++++++++++++++-
> include/linux/mmc/host.h | 4 +
> 4 files changed, 303 insertions(+), 6 deletions(-)
>
> --
> 2.17.1
>
Kind regards
Uffe
Powered by blists - more mailing lists