diff mbox series

[v3,07/15] firmware: qcom: scm: make qcom_scm_assign_mem() use the TZ allocator

Message ID 20231009153427.20951-8-brgl@bgdev.pl (mailing list archive)
State New, archived
Headers show
Series arm64: qcom: add and enable SHM Bridge support | expand

Commit Message

Bartosz Golaszewski Oct. 9, 2023, 3:34 p.m. UTC
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

Let's use the new TZ memory allocator to obtain a buffer for this call
instead of using dma_alloc_coherent().

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

Comments

Andrew Halaney Oct. 10, 2023, 10:19 p.m. UTC | #1
On Mon, Oct 09, 2023 at 05:34:19PM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> 
> Let's use the new TZ memory allocator to obtain a buffer for this call
> instead of using dma_alloc_coherent().
> 
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
>  drivers/firmware/qcom/qcom_scm.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> index 71e98b666391..754f6056b99f 100644
> --- a/drivers/firmware/qcom/qcom_scm.c
> +++ b/drivers/firmware/qcom/qcom_scm.c
> @@ -4,6 +4,7 @@
>   */
>  
>  #include <linux/arm-smccc.h>
> +#include <linux/cleanup.h>
>  #include <linux/clk.h>
>  #include <linux/completion.h>
>  #include <linux/cpumask.h>
> @@ -998,14 +999,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
>  	struct qcom_scm_mem_map_info *mem_to_map;
>  	phys_addr_t mem_to_map_phys;
>  	phys_addr_t dest_phys;
> -	dma_addr_t ptr_phys;
> +	phys_addr_t ptr_phys;
>  	size_t mem_to_map_sz;
>  	size_t dest_sz;
>  	size_t src_sz;
>  	size_t ptr_sz;
>  	int next_vm;
>  	__le32 *src;
> -	void *ptr;

nit: couldn't you keep this up here?

Otherwise,

Reviewed-by: Andrew Halaney <ahalaney@redhat.com>

>  	int ret, i, b;
>  	u64 srcvm_bits = *srcvm;
>  
> @@ -1015,10 +1015,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
>  	ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
>  			ALIGN(dest_sz, SZ_64);
>  
> -	ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
> +	void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
> +							ptr_sz, GFP_KERNEL);
>  	if (!ptr)
>  		return -ENOMEM;
>  
> +	ptr_phys = qcom_tzmem_to_phys(ptr);
> +
>  	/* Fill source vmid detail */
>  	src = ptr;
>  	i = 0;
> @@ -1047,7 +1050,6 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
>  
>  	ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
>  				    ptr_phys, src_sz, dest_phys, dest_sz);
> -	dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
>  	if (ret) {
>  		dev_err(__scm->dev,
>  			"Assign memory protection call failed %d\n", ret);
> -- 
> 2.39.2
>
Bartosz Golaszewski Oct. 11, 2023, 7:41 a.m. UTC | #2
On Wed, Oct 11, 2023 at 12:19 AM Andrew Halaney <ahalaney@redhat.com> wrote:
>
> On Mon, Oct 09, 2023 at 05:34:19PM +0200, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > Let's use the new TZ memory allocator to obtain a buffer for this call
> > instead of using dma_alloc_coherent().
> >
> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > ---
> >  drivers/firmware/qcom/qcom_scm.c | 10 ++++++----
> >  1 file changed, 6 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> > index 71e98b666391..754f6056b99f 100644
> > --- a/drivers/firmware/qcom/qcom_scm.c
> > +++ b/drivers/firmware/qcom/qcom_scm.c
> > @@ -4,6 +4,7 @@
> >   */
> >
> >  #include <linux/arm-smccc.h>
> > +#include <linux/cleanup.h>
> >  #include <linux/clk.h>
> >  #include <linux/completion.h>
> >  #include <linux/cpumask.h>
> > @@ -998,14 +999,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> >       struct qcom_scm_mem_map_info *mem_to_map;
> >       phys_addr_t mem_to_map_phys;
> >       phys_addr_t dest_phys;
> > -     dma_addr_t ptr_phys;
> > +     phys_addr_t ptr_phys;
> >       size_t mem_to_map_sz;
> >       size_t dest_sz;
> >       size_t src_sz;
> >       size_t ptr_sz;
> >       int next_vm;
> >       __le32 *src;
> > -     void *ptr;
>
> nit: couldn't you keep this up here?
>

This still needs to make its way into the coding style guide but I got
yelled at by Linus Torvalds personally for not declaring the managed
variables where they are initialized. So this is the correct approach.

Bart

> Otherwise,
>
> Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
>
> >       int ret, i, b;
> >       u64 srcvm_bits = *srcvm;
> >
> > @@ -1015,10 +1015,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> >       ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
> >                       ALIGN(dest_sz, SZ_64);
> >
> > -     ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
> > +     void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
> > +                                                     ptr_sz, GFP_KERNEL);
> >       if (!ptr)
> >               return -ENOMEM;
> >
> > +     ptr_phys = qcom_tzmem_to_phys(ptr);
> > +
> >       /* Fill source vmid detail */
> >       src = ptr;
> >       i = 0;
> > @@ -1047,7 +1050,6 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> >
> >       ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
> >                                   ptr_phys, src_sz, dest_phys, dest_sz);
> > -     dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
> >       if (ret) {
> >               dev_err(__scm->dev,
> >                       "Assign memory protection call failed %d\n", ret);
> > --
> > 2.39.2
> >
>
Andrew Halaney Oct. 11, 2023, 1:54 p.m. UTC | #3
On Wed, Oct 11, 2023 at 09:41:49AM +0200, Bartosz Golaszewski wrote:
> On Wed, Oct 11, 2023 at 12:19 AM Andrew Halaney <ahalaney@redhat.com> wrote:
> >
> > On Mon, Oct 09, 2023 at 05:34:19PM +0200, Bartosz Golaszewski wrote:
> > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > >
> > > Let's use the new TZ memory allocator to obtain a buffer for this call
> > > instead of using dma_alloc_coherent().
> > >
> > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > ---
> > >  drivers/firmware/qcom/qcom_scm.c | 10 ++++++----
> > >  1 file changed, 6 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> > > index 71e98b666391..754f6056b99f 100644
> > > --- a/drivers/firmware/qcom/qcom_scm.c
> > > +++ b/drivers/firmware/qcom/qcom_scm.c
> > > @@ -4,6 +4,7 @@
> > >   */
> > >
> > >  #include <linux/arm-smccc.h>
> > > +#include <linux/cleanup.h>
> > >  #include <linux/clk.h>
> > >  #include <linux/completion.h>
> > >  #include <linux/cpumask.h>
> > > @@ -998,14 +999,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > >       struct qcom_scm_mem_map_info *mem_to_map;
> > >       phys_addr_t mem_to_map_phys;
> > >       phys_addr_t dest_phys;
> > > -     dma_addr_t ptr_phys;
> > > +     phys_addr_t ptr_phys;
> > >       size_t mem_to_map_sz;
> > >       size_t dest_sz;
> > >       size_t src_sz;
> > >       size_t ptr_sz;
> > >       int next_vm;
> > >       __le32 *src;
> > > -     void *ptr;
> >
> > nit: couldn't you keep this up here?
> >
> 
> This still needs to make its way into the coding style guide but I got
> yelled at by Linus Torvalds personally for not declaring the managed
> variables where they are initialized. So this is the correct approach.

I'm being a stick in the mud, but couldn't you initialize to NULL and
keep them all up top? That seems more in line with the current "declare
all variables at the start of function" guideline the kernel follows.

Not a big deal... yours call! but /me shrugs

> 
> Bart
> 
> > Otherwise,
> >
> > Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
> >
> > >       int ret, i, b;
> > >       u64 srcvm_bits = *srcvm;
> > >
> > > @@ -1015,10 +1015,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > >       ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
> > >                       ALIGN(dest_sz, SZ_64);
> > >
> > > -     ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
> > > +     void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
> > > +                                                     ptr_sz, GFP_KERNEL);
> > >       if (!ptr)
> > >               return -ENOMEM;
> > >
> > > +     ptr_phys = qcom_tzmem_to_phys(ptr);
> > > +
> > >       /* Fill source vmid detail */
> > >       src = ptr;
> > >       i = 0;
> > > @@ -1047,7 +1050,6 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > >
> > >       ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
> > >                                   ptr_phys, src_sz, dest_phys, dest_sz);
> > > -     dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
> > >       if (ret) {
> > >               dev_err(__scm->dev,
> > >                       "Assign memory protection call failed %d\n", ret);
> > > --
> > > 2.39.2
> > >
> >
>
Bartosz Golaszewski Oct. 11, 2023, 2:33 p.m. UTC | #4
On Wed, Oct 11, 2023 at 3:54 PM Andrew Halaney <ahalaney@redhat.com> wrote:
>
> On Wed, Oct 11, 2023 at 09:41:49AM +0200, Bartosz Golaszewski wrote:
> > On Wed, Oct 11, 2023 at 12:19 AM Andrew Halaney <ahalaney@redhat.com> wrote:
> > >
> > > On Mon, Oct 09, 2023 at 05:34:19PM +0200, Bartosz Golaszewski wrote:
> > > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > >
> > > > Let's use the new TZ memory allocator to obtain a buffer for this call
> > > > instead of using dma_alloc_coherent().
> > > >
> > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > > ---
> > > >  drivers/firmware/qcom/qcom_scm.c | 10 ++++++----
> > > >  1 file changed, 6 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> > > > index 71e98b666391..754f6056b99f 100644
> > > > --- a/drivers/firmware/qcom/qcom_scm.c
> > > > +++ b/drivers/firmware/qcom/qcom_scm.c
> > > > @@ -4,6 +4,7 @@
> > > >   */
> > > >
> > > >  #include <linux/arm-smccc.h>
> > > > +#include <linux/cleanup.h>
> > > >  #include <linux/clk.h>
> > > >  #include <linux/completion.h>
> > > >  #include <linux/cpumask.h>
> > > > @@ -998,14 +999,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > >       struct qcom_scm_mem_map_info *mem_to_map;
> > > >       phys_addr_t mem_to_map_phys;
> > > >       phys_addr_t dest_phys;
> > > > -     dma_addr_t ptr_phys;
> > > > +     phys_addr_t ptr_phys;
> > > >       size_t mem_to_map_sz;
> > > >       size_t dest_sz;
> > > >       size_t src_sz;
> > > >       size_t ptr_sz;
> > > >       int next_vm;
> > > >       __le32 *src;
> > > > -     void *ptr;
> > >
> > > nit: couldn't you keep this up here?
> > >
> >
> > This still needs to make its way into the coding style guide but I got
> > yelled at by Linus Torvalds personally for not declaring the managed
> > variables where they are initialized. So this is the correct approach.
>
> I'm being a stick in the mud, but couldn't you initialize to NULL and
> keep them all up top? That seems more in line with the current "declare
> all variables at the start of function" guideline the kernel follows.
>
> Not a big deal... yours call! but /me shrugs
>

I agree with you but it's not my call to make. Please see[1].

Bartosz

[1] https://lore.kernel.org/lkml/20230919193516.GA20937@noisy.programming.kicks-ass.net/T/#m7f97e10dbfde777f58493398a77933e6a2f3c15d

> >
> > Bart
> >
> > > Otherwise,
> > >
> > > Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
> > >
> > > >       int ret, i, b;
> > > >       u64 srcvm_bits = *srcvm;
> > > >
> > > > @@ -1015,10 +1015,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > >       ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
> > > >                       ALIGN(dest_sz, SZ_64);
> > > >
> > > > -     ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
> > > > +     void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
> > > > +                                                     ptr_sz, GFP_KERNEL);
> > > >       if (!ptr)
> > > >               return -ENOMEM;
> > > >
> > > > +     ptr_phys = qcom_tzmem_to_phys(ptr);
> > > > +
> > > >       /* Fill source vmid detail */
> > > >       src = ptr;
> > > >       i = 0;
> > > > @@ -1047,7 +1050,6 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > >
> > > >       ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
> > > >                                   ptr_phys, src_sz, dest_phys, dest_sz);
> > > > -     dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
> > > >       if (ret) {
> > > >               dev_err(__scm->dev,
> > > >                       "Assign memory protection call failed %d\n", ret);
> > > > --
> > > > 2.39.2
> > > >
> > >
> >
>
Andrew Halaney Oct. 11, 2023, 8:13 p.m. UTC | #5
On Wed, Oct 11, 2023 at 04:33:53PM +0200, Bartosz Golaszewski wrote:
> On Wed, Oct 11, 2023 at 3:54 PM Andrew Halaney <ahalaney@redhat.com> wrote:
> >
> > On Wed, Oct 11, 2023 at 09:41:49AM +0200, Bartosz Golaszewski wrote:
> > > On Wed, Oct 11, 2023 at 12:19 AM Andrew Halaney <ahalaney@redhat.com> wrote:
> > > >
> > > > On Mon, Oct 09, 2023 at 05:34:19PM +0200, Bartosz Golaszewski wrote:
> > > > > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > > >
> > > > > Let's use the new TZ memory allocator to obtain a buffer for this call
> > > > > instead of using dma_alloc_coherent().
> > > > >
> > > > > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > > > > ---
> > > > >  drivers/firmware/qcom/qcom_scm.c | 10 ++++++----
> > > > >  1 file changed, 6 insertions(+), 4 deletions(-)
> > > > >
> > > > > diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
> > > > > index 71e98b666391..754f6056b99f 100644
> > > > > --- a/drivers/firmware/qcom/qcom_scm.c
> > > > > +++ b/drivers/firmware/qcom/qcom_scm.c
> > > > > @@ -4,6 +4,7 @@
> > > > >   */
> > > > >
> > > > >  #include <linux/arm-smccc.h>
> > > > > +#include <linux/cleanup.h>
> > > > >  #include <linux/clk.h>
> > > > >  #include <linux/completion.h>
> > > > >  #include <linux/cpumask.h>
> > > > > @@ -998,14 +999,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > > >       struct qcom_scm_mem_map_info *mem_to_map;
> > > > >       phys_addr_t mem_to_map_phys;
> > > > >       phys_addr_t dest_phys;
> > > > > -     dma_addr_t ptr_phys;
> > > > > +     phys_addr_t ptr_phys;
> > > > >       size_t mem_to_map_sz;
> > > > >       size_t dest_sz;
> > > > >       size_t src_sz;
> > > > >       size_t ptr_sz;
> > > > >       int next_vm;
> > > > >       __le32 *src;
> > > > > -     void *ptr;
> > > >
> > > > nit: couldn't you keep this up here?
> > > >
> > >
> > > This still needs to make its way into the coding style guide but I got
> > > yelled at by Linus Torvalds personally for not declaring the managed
> > > variables where they are initialized. So this is the correct approach.
> >
> > I'm being a stick in the mud, but couldn't you initialize to NULL and
> > keep them all up top? That seems more in line with the current "declare
> > all variables at the start of function" guideline the kernel follows.
> >
> > Not a big deal... yours call! but /me shrugs
> >
> 
> I agree with you but it's not my call to make. Please see[1].
> 

Yeah, I see you're following the guidance there (declare + initialize
together unless there's a conditional, etc, preventing that) in this
series. Thanks for the pointer.

> Bartosz
> 
> [1] https://lore.kernel.org/lkml/20230919193516.GA20937@noisy.programming.kicks-ass.net/T/#m7f97e10dbfde777f58493398a77933e6a2f3c15d
> 
> > >
> > > Bart
> > >
> > > > Otherwise,
> > > >
> > > > Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
> > > >
> > > > >       int ret, i, b;
> > > > >       u64 srcvm_bits = *srcvm;
> > > > >
> > > > > @@ -1015,10 +1015,13 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > > >       ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
> > > > >                       ALIGN(dest_sz, SZ_64);
> > > > >
> > > > > -     ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
> > > > > +     void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
> > > > > +                                                     ptr_sz, GFP_KERNEL);
> > > > >       if (!ptr)
> > > > >               return -ENOMEM;
> > > > >
> > > > > +     ptr_phys = qcom_tzmem_to_phys(ptr);
> > > > > +
> > > > >       /* Fill source vmid detail */
> > > > >       src = ptr;
> > > > >       i = 0;
> > > > > @@ -1047,7 +1050,6 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
> > > > >
> > > > >       ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
> > > > >                                   ptr_phys, src_sz, dest_phys, dest_sz);
> > > > > -     dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
> > > > >       if (ret) {
> > > > >               dev_err(__scm->dev,
> > > > >                       "Assign memory protection call failed %d\n", ret);
> > > > > --
> > > > > 2.39.2
> > > > >
> > > >
> > >
> >
>
diff mbox series

Patch

diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
index 71e98b666391..754f6056b99f 100644
--- a/drivers/firmware/qcom/qcom_scm.c
+++ b/drivers/firmware/qcom/qcom_scm.c
@@ -4,6 +4,7 @@ 
  */
 
 #include <linux/arm-smccc.h>
+#include <linux/cleanup.h>
 #include <linux/clk.h>
 #include <linux/completion.h>
 #include <linux/cpumask.h>
@@ -998,14 +999,13 @@  int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
 	struct qcom_scm_mem_map_info *mem_to_map;
 	phys_addr_t mem_to_map_phys;
 	phys_addr_t dest_phys;
-	dma_addr_t ptr_phys;
+	phys_addr_t ptr_phys;
 	size_t mem_to_map_sz;
 	size_t dest_sz;
 	size_t src_sz;
 	size_t ptr_sz;
 	int next_vm;
 	__le32 *src;
-	void *ptr;
 	int ret, i, b;
 	u64 srcvm_bits = *srcvm;
 
@@ -1015,10 +1015,13 @@  int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
 	ptr_sz = ALIGN(src_sz, SZ_64) + ALIGN(mem_to_map_sz, SZ_64) +
 			ALIGN(dest_sz, SZ_64);
 
-	ptr = dma_alloc_coherent(__scm->dev, ptr_sz, &ptr_phys, GFP_KERNEL);
+	void *ptr __free(qcom_tzmem) = qcom_tzmem_alloc(__scm->mempool,
+							ptr_sz, GFP_KERNEL);
 	if (!ptr)
 		return -ENOMEM;
 
+	ptr_phys = qcom_tzmem_to_phys(ptr);
+
 	/* Fill source vmid detail */
 	src = ptr;
 	i = 0;
@@ -1047,7 +1050,6 @@  int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t mem_sz,
 
 	ret = __qcom_scm_assign_mem(__scm->dev, mem_to_map_phys, mem_to_map_sz,
 				    ptr_phys, src_sz, dest_phys, dest_sz);
-	dma_free_coherent(__scm->dev, ptr_sz, ptr, ptr_phys);
 	if (ret) {
 		dev_err(__scm->dev,
 			"Assign memory protection call failed %d\n", ret);