[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6e189833-b76b-030f-482e-d13e0d6d131a@quicinc.com>
Date: Mon, 20 Nov 2023 22:35:00 -0800
From: Prasad Sodagudi <quic_psodagud@...cinc.com>
To: Bartosz Golaszewski <brgl@...ev.pl>,
Andy Gross <agross@...nel.org>,
"Bjorn Andersson" <andersson@...nel.org>,
Konrad Dybcio <konrad.dybcio@...aro.org>,
Elliot Berman <quic_eberman@...cinc.com>,
Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>,
Guru Das Srinagesh <quic_gurus@...cinc.com>,
Andrew Halaney <ahalaney@...hat.com>,
"Maximilian Luz" <luzmaximilian@...il.com>,
Alex Elder <elder@...aro.org>,
"Srini Kandagatla" <srinivas.kandagatla@...aro.org>
CC: <linux-arm-msm@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
<linux-arm-kernel@...ts.infradead.org>, <kernel@...cinc.com>,
"Bartosz Golaszewski" <bartosz.golaszewski@...aro.org>
Subject: Re: [RESEND PATCH v5 02/12] firmware: qcom: scm: enable the TZ mem
allocator
On 11/20/2023 5:21 AM, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@...aro.org>
>
> Select the TrustZone memory allocator in Kconfig and create a pool of
> memory shareable with the TrustZone when probing the SCM driver.
>
> This will allow a gradual conversion of all relevant SCM calls to using
> the dedicated allocator.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@...aro.org>
> Reviewed-by: Andrew Halaney <ahalaney@...hat.com>
> Tested-by: Andrew Halaney <ahalaney@...hat.com> # sc8280xp-lenovo-thinkpad-x13s
> ---
> drivers/firmware/qcom/Kconfig | 1 +
> drivers/firmware/qcom/qcom_scm.c | 16 ++++++++++++++++
> 2 files changed, 17 insertions(+)
>
> diff --git a/drivers/firmware/qcom/Kconfig b/drivers/firmware/qcom/Kconfig
> index b80269a28224..237da40de832 100644
> --- a/drivers/firmware/qcom/Kconfig
> +++ b/drivers/firmware/qcom/Kconfig
> @@ -7,6 +7,7 @@
> menu "Qualcomm firmware drivers"
>
> config QCOM_SCM
> + select QCOM_TZMEM
> tristate
>
> config QCOM_TZMEM
> diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> index 520de9b5633a..0d4c028be0c1 100644
> --- a/drivers/firmware/qcom/qcom_scm.c
> +++ b/drivers/firmware/qcom/qcom_scm.c
> @@ -8,8 +8,10 @@
> #include <linux/completion.h>
> #include <linux/cpumask.h>
> #include <linux/dma-mapping.h>
> +#include <linux/err.h>
> #include <linux/export.h>
> #include <linux/firmware/qcom/qcom_scm.h>
> +#include <linux/firmware/qcom/qcom_tzmem.h>
> #include <linux/init.h>
> #include <linux/interconnect.h>
> #include <linux/interrupt.h>
> @@ -20,9 +22,11 @@
> #include <linux/of_platform.h>
> #include <linux/platform_device.h>
> #include <linux/reset-controller.h>
> +#include <linux/sizes.h>
> #include <linux/types.h>
>
> #include "qcom_scm.h"
> +#include "qcom_tzmem.h"
>
> static bool download_mode = IS_ENABLED(CONFIG_QCOM_SCM_DOWNLOAD_MODE_DEFAULT);
> module_param(download_mode, bool, 0);
> @@ -41,6 +45,8 @@ struct qcom_scm {
> int scm_vote_count;
>
> u64 dload_mode_addr;
> +
> + struct qcom_tzmem_pool *mempool;
> };
>
> struct qcom_scm_current_perm_info {
> @@ -1887,6 +1893,16 @@ static int qcom_scm_probe(struct platform_device *pdev)
> if (of_property_read_bool(pdev->dev.of_node, "qcom,sdi-enabled"))
> qcom_scm_disable_sdi();
>
> + ret = qcom_tzmem_enable(__scm->dev);
> + if (ret)
> + return dev_err_probe(__scm->dev, ret,
> + "Failed to enable the TrustZone memory allocator\n");
Based on my knowledge shmbridge is supported from sm8250 SoC in the
firmware.
sdm845 and couple of other targets may not have support shmbridge
support and probe will be fail for these targets right?
> +
> + __scm->mempool = devm_qcom_tzmem_pool_new(__scm->dev, SZ_256K);
> + if (IS_ERR(__scm->mempool))
> + return dev_err_probe(__scm->dev, PTR_ERR(__scm->mempool),
> + "Failed to create the SCM memory pool\n");
> +
> /*
> * Initialize the QSEECOM interface.
> *
Powered by blists - more mailing lists