From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Andy Gross <agross@kernel.org>,
Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Maximilian Luz <luzmaximilian@gmail.com>,
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
kernel@quicinc.com,
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Subject: [PATCH v2 03/11] firmware: qcom: scm: switch to using the SCM allocator
Date: Thu, 28 Sep 2023 11:20:32 +0200 [thread overview]
Message-ID: <20230928092040.9420-4-brgl@bgdev.pl> (raw)
In-Reply-To: <20230928092040.9420-1-brgl@bgdev.pl>
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
We need to allocate, map and pass a buffer to the trustzone if we have
more than 4 arguments for a given SCM calls. Let's use the new SCM
allocator for that memory and shrink the code in process.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/firmware/qcom/qcom_scm-smc.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/drivers/firmware/qcom/qcom_scm-smc.c b/drivers/firmware/qcom/qcom_scm-smc.c
index 16cf88acfa8e..0d5554df1321 100644
--- a/drivers/firmware/qcom/qcom_scm-smc.c
+++ b/drivers/firmware/qcom/qcom_scm-smc.c
@@ -2,6 +2,7 @@
/* Copyright (c) 2015,2019 The Linux Foundation. All rights reserved.
*/
+#include <linux/cleanup.h>
#include <linux/io.h>
#include <linux/errno.h>
#include <linux/delay.h>
@@ -152,8 +153,7 @@ int __scm_smc_call(struct device *dev, const struct qcom_scm_desc *desc,
{
int arglen = desc->arginfo & 0xf;
int i, ret;
- dma_addr_t args_phys = 0;
- void *args_virt = NULL;
+ void *args_virt __free(qcom_scm_mem) = NULL;
size_t alloc_len;
gfp_t flag = atomic ? GFP_ATOMIC : GFP_KERNEL;
u32 smccc_call_type = atomic ? ARM_SMCCC_FAST_CALL : ARM_SMCCC_STD_CALL;
@@ -173,7 +173,7 @@ int __scm_smc_call(struct device *dev, const struct qcom_scm_desc *desc,
if (unlikely(arglen > SCM_SMC_N_REG_ARGS)) {
alloc_len = SCM_SMC_N_EXT_ARGS * sizeof(u64);
- args_virt = kzalloc(PAGE_ALIGN(alloc_len), flag);
+ args_virt = qcom_scm_mem_alloc(PAGE_ALIGN(alloc_len), flag);
if (!args_virt)
return -ENOMEM;
@@ -192,25 +192,12 @@ int __scm_smc_call(struct device *dev, const struct qcom_scm_desc *desc,
SCM_SMC_FIRST_EXT_IDX]);
}
- args_phys = dma_map_single(dev, args_virt, alloc_len,
- DMA_TO_DEVICE);
-
- if (dma_mapping_error(dev, args_phys)) {
- kfree(args_virt);
- return -ENOMEM;
- }
-
- smc.args[SCM_SMC_LAST_REG_IDX] = args_phys;
+ smc.args[SCM_SMC_LAST_REG_IDX] = qcom_scm_mem_to_phys(args_virt);
}
/* ret error check follows after args_virt cleanup*/
ret = __scm_smc_do(dev, &smc, &smc_res, atomic);
- if (args_virt) {
- dma_unmap_single(dev, args_phys, alloc_len, DMA_TO_DEVICE);
- kfree(args_virt);
- }
-
if (ret)
return ret;
--
2.39.2
next prev parent reply other threads:[~2023-09-28 9:21 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-28 9:20 [PATCH v2 00/11] arm64: qcom: add and enable SHM Bridge support Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 01/11] firmware: qcom: move Qualcomm code into its own directory Bartosz Golaszewski
2023-09-28 17:08 ` Elliot Berman
2023-10-03 7:57 ` Krzysztof Kozlowski
2023-09-28 9:20 ` [PATCH v2 02/11] firmware: qcom: scm: add a dedicated SCM memory allocator Bartosz Golaszewski
2023-09-28 18:19 ` Jeff Johnson
2023-09-28 18:23 ` Bartosz Golaszewski
2023-09-28 9:20 ` Bartosz Golaszewski [this message]
2023-09-28 19:11 ` [PATCH v2 03/11] firmware: qcom: scm: switch to using the SCM allocator Elliot Berman
2023-09-29 8:15 ` Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 04/11] firmware: qcom: scm: make qcom_scm_assign_mem() use " Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 05/11] firmware: qcom: scm: make qcom_scm_ice_set_key() " Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 06/11] firmware: qcom: scm: make qcom_scm_pas_init_image() " Bartosz Golaszewski
2023-09-29 19:16 ` Andrew Halaney
2023-09-29 19:22 ` Bartosz Golaszewski
2023-09-29 20:44 ` Andrew Halaney
2023-09-29 22:48 ` Elliot Berman
2023-10-02 13:24 ` Andrew Halaney
2023-10-02 14:15 ` Andrew Halaney
2023-10-02 14:23 ` Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 07/11] firmware: qcom: scm: make qcom_scm_lmh_dcvsh() " Bartosz Golaszewski
2023-09-28 9:20 ` [RFT PATCH v2 08/11] firmware: qcom: scm: make qcom_scm_qseecom_app_get_id() " Bartosz Golaszewski
2023-09-28 9:20 ` [RFT PATCH v2 09/11] firmware: qcom: qseecom: convert to using " Bartosz Golaszewski
2023-09-28 9:20 ` [PATCH v2 10/11] firmware: qcom-scm: add support for SHM bridge operations Bartosz Golaszewski
2023-09-28 17:09 ` Elliot Berman
2023-09-28 9:20 ` [PATCH v2 11/11] firmware: qcom: scm: enable SHM bridge Bartosz Golaszewski
2023-09-28 17:10 ` Elliot Berman
2023-09-28 18:28 ` Bartosz Golaszewski
2023-09-28 19:00 ` Jeff Johnson
2023-09-29 19:00 ` Bartosz Golaszewski
2023-10-04 22:24 ` Maximilian Luz
2023-10-05 7:12 ` Bartosz Golaszewski
2023-10-05 9:12 ` Maximilian Luz
2023-09-29 15:29 ` [PATCH v2 00/11] arm64: qcom: add and enable SHM Bridge support Andrew Halaney
2023-09-29 18:56 ` Bartosz Golaszewski
2023-09-29 19:18 ` Andrew Halaney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230928092040.9420-4-brgl@bgdev.pl \
--to=brgl@bgdev.pl \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=bartosz.golaszewski@linaro.org \
--cc=kernel@quicinc.com \
--cc=konrad.dybcio@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luzmaximilian@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.