lkml.org 
[lkml]   [2023]   [Sep]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFT PATCH v2 08/11] firmware: qcom: scm: make qcom_scm_qseecom_app_get_id() use the SCM allocator
    Date
    From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

    Let's use the new SCM memory allocator to obtain a buffer for this call
    instead of manually kmalloc()ing it and then mapping to physical space.

    Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
    ---
    drivers/firmware/qcom/qcom_scm.c | 17 +++--------------
    1 file changed, 3 insertions(+), 14 deletions(-)

    diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
    index 41095bf1d4d7..37e876437a3e 100644
    --- a/drivers/firmware/qcom/qcom_scm.c
    +++ b/drivers/firmware/qcom/qcom_scm.c
    @@ -1498,37 +1498,26 @@ int qcom_scm_qseecom_app_get_id(const char *app_name, u32 *app_id)
    unsigned long app_name_len = strlen(app_name);
    struct qcom_scm_desc desc = {};
    struct qcom_scm_qseecom_resp res = {};
    - dma_addr_t name_buf_phys;
    - char *name_buf;
    int status;

    if (app_name_len >= name_buf_size)
    return -EINVAL;

    - name_buf = kzalloc(name_buf_size, GFP_KERNEL);
    + char *name_buf __free(qcom_scm_mem) = qcom_scm_mem_alloc(name_buf_size,
    + GFP_KERNEL);
    if (!name_buf)
    return -ENOMEM;

    memcpy(name_buf, app_name, app_name_len);

    - name_buf_phys = dma_map_single(__scm->dev, name_buf, name_buf_size, DMA_TO_DEVICE);
    - status = dma_mapping_error(__scm->dev, name_buf_phys);
    - if (status) {
    - kfree(name_buf);
    - dev_err(__scm->dev, "qseecom: failed to map dma address\n");
    - return status;
    - }
    -
    desc.owner = QSEECOM_TZ_OWNER_QSEE_OS;
    desc.svc = QSEECOM_TZ_SVC_APP_MGR;
    desc.cmd = QSEECOM_TZ_CMD_APP_LOOKUP;
    desc.arginfo = QCOM_SCM_ARGS(2, QCOM_SCM_RW, QCOM_SCM_VAL);
    - desc.args[0] = name_buf_phys;
    + desc.args[0] = qcom_scm_mem_to_phys(name_buf);
    desc.args[1] = app_name_len;

    status = qcom_scm_qseecom_call(&desc, &res);
    - dma_unmap_single(__scm->dev, name_buf_phys, name_buf_size, DMA_TO_DEVICE);
    - kfree(name_buf);

    if (status)
    return status;
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-09-28 11:23    [W:5.137 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site