Message ID | 20230828192507.117334-1-bartosz.golaszewski@linaro.org (mailing list archive) |
---|---|
Headers | show |
Series | arm64: qcom: add and enable SHM Bridge support | expand |
On Mon, 28 Aug 2023 at 22:29, Bartosz Golaszewski <bartosz.golaszewski@linaro.org> wrote: > > SHM Bridge is a mechanism allowing to map limited areas of kernel's > virtual memory to physical addresses and share those with the > trustzone in order to not expose the entire RAM for SMC calls. > > This series adds support for Qualcomm SHM Bridge in form of a platform > driver and library functions available to users. It enables SHM Bridge > support for three platforms and contains a bunch of cleanups for > qcom-scm. Which users do you expect for this API? Also, could you please describe your design a bit more? Why have you implemented the shm-bridge as a separate driver rather than a part of the SCM driver? > > Bartosz Golaszewski (11): > firmware: qcom-scm: drop unneeded 'extern' specifiers > firmware: qcom-scm: order includes alphabetically > firmware: qcom-scm: atomically assign and read the global __scm > pointer > firmware: qcom-scm: add support for SHM bridge operations > dt-bindings: document the Qualcomm TEE Shared Memory Bridge > firmware: qcom-shm-bridge: new driver > firmware: qcom-scm: use SHM bridge if available > arm64: defconfig: enable Qualcomm SHM bridge module > arm64: dts: qcom: sm8450: enable SHM bridge > arm64: dts: qcom: sa8775p: enable SHM bridge > arm64: dts: qcom: sm8150: enable SHM bridge > > .../bindings/firmware/qcom,shm-bridge.yaml | 36 ++ > arch/arm64/boot/dts/qcom/sa8775p.dtsi | 4 + > arch/arm64/boot/dts/qcom/sm8150.dtsi | 4 + > arch/arm64/boot/dts/qcom/sm8450.dtsi | 4 + > arch/arm64/configs/defconfig | 1 + > drivers/firmware/Kconfig | 8 + > drivers/firmware/Makefile | 1 + > drivers/firmware/qcom-shm-bridge.c | 452 ++++++++++++++++++ > drivers/firmware/qcom_scm-smc.c | 20 +- > drivers/firmware/qcom_scm.c | 106 +++- > drivers/firmware/qcom_scm.h | 3 + > include/linux/firmware/qcom/qcom_scm.h | 109 +++-- > include/linux/firmware/qcom/shm-bridge.h | 32 ++ > 13 files changed, 712 insertions(+), 68 deletions(-) > create mode 100644 Documentation/devicetree/bindings/firmware/qcom,shm-bridge.yaml > create mode 100644 drivers/firmware/qcom-shm-bridge.c > create mode 100644 include/linux/firmware/qcom/shm-bridge.h > > -- > 2.39.2 >
On Mon, 28 Aug 2023 at 23:24, Dmitry Baryshkov <dmitry.baryshkov@linaro.org> wrote: > > On Mon, 28 Aug 2023 at 22:29, Bartosz Golaszewski > <bartosz.golaszewski@linaro.org> wrote: > > > > SHM Bridge is a mechanism allowing to map limited areas of kernel's > > virtual memory to physical addresses and share those with the > > trustzone in order to not expose the entire RAM for SMC calls. > > > > This series adds support for Qualcomm SHM Bridge in form of a platform > > driver and library functions available to users. It enables SHM Bridge > > support for three platforms and contains a bunch of cleanups for > > qcom-scm. > > Which users do you expect for this API? > This series adds a single user: the SCM driver. We have another user almost ready for upstream in the form of the scminvoke driver and I learned today, I can already convert another user upstream right now that I will try to get ready for v2. > Also, could you please describe your design a bit more? Why have you > implemented the shm-bridge as a separate driver rather than a part of > the SCM driver? > It's self-contained enough to be put into a separate module and not all platforms support it so in order to avoid unnecessary ifdeffery in the scm driver, I made it separate. Bart > > > > Bartosz Golaszewski (11): > > firmware: qcom-scm: drop unneeded 'extern' specifiers > > firmware: qcom-scm: order includes alphabetically > > firmware: qcom-scm: atomically assign and read the global __scm > > pointer > > firmware: qcom-scm: add support for SHM bridge operations > > dt-bindings: document the Qualcomm TEE Shared Memory Bridge > > firmware: qcom-shm-bridge: new driver > > firmware: qcom-scm: use SHM bridge if available > > arm64: defconfig: enable Qualcomm SHM bridge module > > arm64: dts: qcom: sm8450: enable SHM bridge > > arm64: dts: qcom: sa8775p: enable SHM bridge > > arm64: dts: qcom: sm8150: enable SHM bridge > > > > .../bindings/firmware/qcom,shm-bridge.yaml | 36 ++ > > arch/arm64/boot/dts/qcom/sa8775p.dtsi | 4 + > > arch/arm64/boot/dts/qcom/sm8150.dtsi | 4 + > > arch/arm64/boot/dts/qcom/sm8450.dtsi | 4 + > > arch/arm64/configs/defconfig | 1 + > > drivers/firmware/Kconfig | 8 + > > drivers/firmware/Makefile | 1 + > > drivers/firmware/qcom-shm-bridge.c | 452 ++++++++++++++++++ > > drivers/firmware/qcom_scm-smc.c | 20 +- > > drivers/firmware/qcom_scm.c | 106 +++- > > drivers/firmware/qcom_scm.h | 3 + > > include/linux/firmware/qcom/qcom_scm.h | 109 +++-- > > include/linux/firmware/qcom/shm-bridge.h | 32 ++ > > 13 files changed, 712 insertions(+), 68 deletions(-) > > create mode 100644 Documentation/devicetree/bindings/firmware/qcom,shm-bridge.yaml > > create mode 100644 drivers/firmware/qcom-shm-bridge.c > > create mode 100644 include/linux/firmware/qcom/shm-bridge.h > > > > -- > > 2.39.2 > > > > > -- > With best wishes > Dmitry
On Tue, 29 Aug 2023 at 22:03, Bartosz Golaszewski <bartosz.golaszewski@linaro.org> wrote: > > On Mon, 28 Aug 2023 at 23:24, Dmitry Baryshkov > <dmitry.baryshkov@linaro.org> wrote: > > > > On Mon, 28 Aug 2023 at 22:29, Bartosz Golaszewski > > <bartosz.golaszewski@linaro.org> wrote: > > > > > > SHM Bridge is a mechanism allowing to map limited areas of kernel's > > > virtual memory to physical addresses and share those with the > > > trustzone in order to not expose the entire RAM for SMC calls. > > > > > > This series adds support for Qualcomm SHM Bridge in form of a platform > > > driver and library functions available to users. It enables SHM Bridge > > > support for three platforms and contains a bunch of cleanups for > > > qcom-scm. > > > > Which users do you expect for this API? > > > > This series adds a single user: the SCM driver. We have another user > almost ready for upstream in the form of the scminvoke driver and I > learned today, I can already convert another user upstream right now > that I will try to get ready for v2. > > > Also, could you please describe your design a bit more? Why have you > > implemented the shm-bridge as a separate driver rather than a part of > > the SCM driver? > > > > It's self-contained enough to be put into a separate module and not > all platforms support it so in order to avoid unnecessary ifdeffery in > the scm driver, I made it separate. Judging from other reviews, I'm not the only one who questioned this design. I still suppose that it might be better to move it into the SCM driver. You can put ifdef's to the header file defining the interface between SCM and SHM bridge part.
On Mon, 28 Aug 2023 21:24:56 +0200, Bartosz Golaszewski wrote: > SHM Bridge is a mechanism allowing to map limited areas of kernel's > virtual memory to physical addresses and share those with the > trustzone in order to not expose the entire RAM for SMC calls. > > This series adds support for Qualcomm SHM Bridge in form of a platform > driver and library functions available to users. It enables SHM Bridge > support for three platforms and contains a bunch of cleanups for > qcom-scm. > > [...] Applied, thanks! [01/11] firmware: qcom-scm: drop unneeded 'extern' specifiers commit: 2758ac3a11d78af56e6969af04dec611806a62de [02/11] firmware: qcom-scm: order includes alphabetically commit: bc7fbb5ea701b22c09c0fa5acbc122207283366a Best regards,