lkml.org 
[lkml]   [2023]   [Oct]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 10/15] firmware: qcom: scm: make qcom_scm_qseecom_app_get_id() use the TZ allocator
    Date
    From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

    Let's use the new TZ 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 | 18 ++++--------------
    1 file changed, 4 insertions(+), 14 deletions(-)

    diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
    index 11638daa2fe5..3a6cefb4eb2e 100644
    --- a/drivers/firmware/qcom/qcom_scm.c
    +++ b/drivers/firmware/qcom/qcom_scm.c
    @@ -1525,37 +1525,27 @@ 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_tzmem) = qcom_tzmem_alloc(__scm->mempool,
    + 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_tzmem_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-10-09 17:36    [W:4.054 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site