Message ID | 20210609102324.2222332-7-jens.wiklander@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tee: shared memory updates | expand |
On 2021-06-09 12:23:23, Jens Wiklander wrote: > Uses the new simplified tee_shm_alloc_kernel_buf() function instead of > the old deprecated tee_shm_alloc() function which required specific > TEE_SHM-flags. > > Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Since this series is essentially a rewrite of the shm allocation logic, it is worth pointing out that the rewrite still uses contiguous allocations (from alloc_pages()). The tee_bnxt_fw driver is performing an order-10 allocation which is the max, by default. I've only tested tee_bnxt_fw when it was built-in to the kernel and tee_bnxt_fw_probe() was called early in boot but I suspect that it might not succeed when built as a module and loaded later after memory is segmented. I think this driver would benefit from being able to request a non-contiguous allocation. Is this rewrite a good time to offer drivers a way to perform a non-contiguous allocation? Tyler > --- > drivers/firmware/broadcom/tee_bnxt_fw.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/firmware/broadcom/tee_bnxt_fw.c b/drivers/firmware/broadcom/tee_bnxt_fw.c > index ed10da5313e8..56d00ddd4357 100644 > --- a/drivers/firmware/broadcom/tee_bnxt_fw.c > +++ b/drivers/firmware/broadcom/tee_bnxt_fw.c > @@ -212,10 +212,9 @@ static int tee_bnxt_fw_probe(struct device *dev) > > pvt_data.dev = dev; > > - fw_shm_pool = tee_shm_alloc(pvt_data.ctx, MAX_SHM_MEM_SZ, > - TEE_SHM_MAPPED | TEE_SHM_DMA_BUF); > + fw_shm_pool = tee_shm_alloc_kernel_buf(pvt_data.ctx, MAX_SHM_MEM_SZ); > if (IS_ERR(fw_shm_pool)) { > - dev_err(pvt_data.dev, "tee_shm_alloc failed\n"); > + dev_err(pvt_data.dev, "tee_shm_alloc_kernel_buf failed\n"); > err = PTR_ERR(fw_shm_pool); > goto out_sess; > } > -- > 2.31.1 >
On Wed, Jun 9, 2021 at 4:58 PM Tyler Hicks <tyhicks@linux.microsoft.com> wrote: > > On 2021-06-09 12:23:23, Jens Wiklander wrote: > > Uses the new simplified tee_shm_alloc_kernel_buf() function instead of > > the old deprecated tee_shm_alloc() function which required specific > > TEE_SHM-flags. > > > > Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> > > Since this series is essentially a rewrite of the shm allocation logic, > it is worth pointing out that the rewrite still uses contiguous > allocations (from alloc_pages()). The tee_bnxt_fw driver is performing > an order-10 allocation which is the max, by default. I've only tested > tee_bnxt_fw when it was built-in to the kernel and tee_bnxt_fw_probe() > was called early in boot but I suspect that it might not succeed when > built as a module and loaded later after memory is segmented. I think > this driver would benefit from being able to request a non-contiguous > allocation. > > Is this rewrite a good time to offer drivers a way to perform a > non-contiguous allocation? Good idea, I'll look into that. I'll add it as a separate patch if it works OK. Cheers, Jens
diff --git a/drivers/firmware/broadcom/tee_bnxt_fw.c b/drivers/firmware/broadcom/tee_bnxt_fw.c index ed10da5313e8..56d00ddd4357 100644 --- a/drivers/firmware/broadcom/tee_bnxt_fw.c +++ b/drivers/firmware/broadcom/tee_bnxt_fw.c @@ -212,10 +212,9 @@ static int tee_bnxt_fw_probe(struct device *dev) pvt_data.dev = dev; - fw_shm_pool = tee_shm_alloc(pvt_data.ctx, MAX_SHM_MEM_SZ, - TEE_SHM_MAPPED | TEE_SHM_DMA_BUF); + fw_shm_pool = tee_shm_alloc_kernel_buf(pvt_data.ctx, MAX_SHM_MEM_SZ); if (IS_ERR(fw_shm_pool)) { - dev_err(pvt_data.dev, "tee_shm_alloc failed\n"); + dev_err(pvt_data.dev, "tee_shm_alloc_kernel_buf failed\n"); err = PTR_ERR(fw_shm_pool); goto out_sess; }
Uses the new simplified tee_shm_alloc_kernel_buf() function instead of the old deprecated tee_shm_alloc() function which required specific TEE_SHM-flags. Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> --- drivers/firmware/broadcom/tee_bnxt_fw.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)