netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
@ 2023-01-07  4:41 Geetha sowjanya
  2023-01-08 13:08 ` Leon Romanovsky
  0 siblings, 1 reply; 5+ messages in thread
From: Geetha sowjanya @ 2023-01-07  4:41 UTC (permalink / raw)
  To: netdev, linux-kernel
  Cc: kuba, pabeni, davem, edumazet, sbhatta, hkelam, gakula, sgoutham

Use GFP_ATOMIC flag instead of GFP_KERNEL while allocating memory
in atomic context.

Fixes: 4af1b64f80fb ("octeontx2-pf: Fix lmtst ID used in aura free")
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Geetha sowjanya <gakula@marvell.com>
---
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index 88f8772a61cd..12e4365d53df 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -886,7 +886,7 @@ static int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura)
 	}
 
 	sq->sqe_base = sq->sqe->base;
-	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), GFP_KERNEL);
+	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), GFP_ATOMIC);
 	if (!sq->sg)
 		return -ENOMEM;
 
@@ -1378,7 +1378,7 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
 
 		sq = &qset->sq[qidx];
 		sq->sqb_count = 0;
-		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_KERNEL);
+		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_ATOMIC);
 		if (!sq->sqb_ptrs) {
 			err = -ENOMEM;
 			goto err_mem;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
  2023-01-07  4:41 [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context Geetha sowjanya
@ 2023-01-08 13:08 ` Leon Romanovsky
       [not found]   ` <DM6PR18MB2602C7D1546455B12340D140CDFF9@DM6PR18MB2602.namprd18.prod.outlook.com>
  0 siblings, 1 reply; 5+ messages in thread
From: Leon Romanovsky @ 2023-01-08 13:08 UTC (permalink / raw)
  To: Geetha sowjanya
  Cc: netdev, linux-kernel, kuba, pabeni, davem, edumazet, sbhatta,
	hkelam, sgoutham

On Sat, Jan 07, 2023 at 10:11:39AM +0530, Geetha sowjanya wrote:
> Use GFP_ATOMIC flag instead of GFP_KERNEL while allocating memory
> in atomic context.

Awesome, but the changed functions don't run in atomic context.

> 
> Fixes: 4af1b64f80fb ("octeontx2-pf: Fix lmtst ID used in aura free")
> Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
> Signed-off-by: Geetha sowjanya <gakula@marvell.com>
> ---
>  drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
> index 88f8772a61cd..12e4365d53df 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
> +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
> @@ -886,7 +886,7 @@ static int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura)
>  	}
>  
>  	sq->sqe_base = sq->sqe->base;
> -	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), GFP_KERNEL);
> +	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), GFP_ATOMIC);
>  	if (!sq->sg)
>  		return -ENOMEM;
>  
> @@ -1378,7 +1378,7 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
>  
>  		sq = &qset->sq[qidx];
>  		sq->sqb_count = 0;
> -		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_KERNEL);
> +		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_ATOMIC);
>  		if (!sq->sqb_ptrs) {
>  			err = -ENOMEM;
>  			goto err_mem;
> -- 
> 2.25.1
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
       [not found]   ` <DM6PR18MB2602C7D1546455B12340D140CDFF9@DM6PR18MB2602.namprd18.prod.outlook.com>
@ 2023-01-10  7:54     ` Geethasowjanya Akula
  2023-01-10  8:35       ` Eric Dumazet
  0 siblings, 1 reply; 5+ messages in thread
From: Geethasowjanya Akula @ 2023-01-10  7:54 UTC (permalink / raw)
  To: Leon Romanovsky
  Cc: netdev, linux-kernel, kuba, pabeni, davem, edumazet,
	Subbaraya Sundeep Bhatta, Hariprasad Kelam,
	Sunil Kovvuri Goutham



-----Original Message-----
From: Leon Romanovsky <leon@kernel.org>
Sent: Sunday, January 8, 2023 6:39 PM
To: Geethasowjanya Akula <gakula@marvell.com>
Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; kuba@kernel.org; pabeni@redhat.com; davem@davemloft.net; edumazet@google.com; Subbaraya Sundeep Bhatta <sbhatta@marvell.com>; Hariprasad Kelam <hkelam@marvell.com>; Sunil Kovvuri Goutham <sgoutham@marvell.com>
Subject: [EXT] Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context

External Email

----------------------------------------------------------------------
On Sat, Jan 07, 2023 at 10:11:39AM +0530, Geetha sowjanya wrote:
>> Use GFP_ATOMIC flag instead of GFP_KERNEL while allocating memory in 
>> atomic context.

>Awesome, but the changed functions don't run in atomic context.

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
    1368         /* Flush accumulated messages */
    1369         err = otx2_sync_mbox_msg(&pfvf->mbox);
    1370         if (err)
    1371                 goto fail;
    1372
    1373         get_cpu();
                 ^^^^^^^^^
The get_cpu() disables preemption. 

    1374         /* Allocate pointers and free them to aura/pool */
    1375         for (qidx = 0; qidx < hw->tot_tx_queues; qidx++) {
    1376                 pool_id = otx2_get_pool_idx(pfvf, AURA_NIX_SQ, qidx);
    1377                 pool = &pfvf->qset.pool[pool_id];
    1378
    1379                 sq = &qset->sq[qidx];
    1380                 sq->sqb_count = 0;
    1381                 sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_ATOMIC);

>> Fixes: 4af1b64f80fb ("octeontx2-pf: Fix lmtst ID used in aura free")
>> Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
>> Signed-off-by: Geetha sowjanya <gakula@marvell.com>
>> ---
>>  drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>> b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>> index 88f8772a61cd..12e4365d53df 100644
>> --- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>> +++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>> @@ -886,7 +886,7 @@ static int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura)
>>  	}
>>  
>>  	sq->sqe_base = sq->sqe->base;
>> -	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), GFP_KERNEL);
>> +	sq->sg = kcalloc(qset->sqe_cnt, sizeof(struct sg_list), 
>> +GFP_ATOMIC);
>>  	if (!sq->sg)
>>  		return -ENOMEM;
>>  
>> @@ -1378,7 +1378,7 @@ int otx2_sq_aura_pool_init(struct otx2_nic
>> *pfvf)
>>  
>>  		sq = &qset->sq[qidx];
>>  		sq->sqb_count = 0;
>> -		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), GFP_KERNEL);
>> +		sq->sqb_ptrs = kcalloc(num_sqbs, sizeof(*sq->sqb_ptrs), 
>> +GFP_ATOMIC);
>>  		if (!sq->sqb_ptrs) {
>>  			err = -ENOMEM;
>>  			goto err_mem;
>> --
>> 2.25.1
>> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
  2023-01-10  7:54     ` Geethasowjanya Akula
@ 2023-01-10  8:35       ` Eric Dumazet
  2023-01-10  8:55         ` [EXT] " Geethasowjanya Akula
  0 siblings, 1 reply; 5+ messages in thread
From: Eric Dumazet @ 2023-01-10  8:35 UTC (permalink / raw)
  To: Geethasowjanya Akula
  Cc: Leon Romanovsky, netdev, linux-kernel, kuba, pabeni, davem,
	Subbaraya Sundeep Bhatta, Hariprasad Kelam,
	Sunil Kovvuri Goutham

On Tue, Jan 10, 2023 at 8:54 AM Geethasowjanya Akula <gakula@marvell.com> wrote:
>
>
>
> -----Original Message-----
> From: Leon Romanovsky <leon@kernel.org>
> Sent: Sunday, January 8, 2023 6:39 PM
> To: Geethasowjanya Akula <gakula@marvell.com>
> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; kuba@kernel.org; pabeni@redhat.com; davem@davemloft.net; edumazet@google.com; Subbaraya Sundeep Bhatta <sbhatta@marvell.com>; Hariprasad Kelam <hkelam@marvell.com>; Sunil Kovvuri Goutham <sgoutham@marvell.com>
> Subject: [EXT] Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
>
> External Email
>
> ----------------------------------------------------------------------
> On Sat, Jan 07, 2023 at 10:11:39AM +0530, Geetha sowjanya wrote:
> >> Use GFP_ATOMIC flag instead of GFP_KERNEL while allocating memory in
> >> atomic context.
>
> >Awesome, but the changed functions don't run in atomic context.
>
> drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>     1368         /* Flush accumulated messages */
>     1369         err = otx2_sync_mbox_msg(&pfvf->mbox);
>     1370         if (err)
>     1371                 goto fail;
>     1372
>     1373         get_cpu();
>                  ^^^^^^^^^
> The get_cpu() disables preemption.

Forcing GFP_ATOMIC in init functions is not desirable.

Please move around the get_cpu() so that we keep GFP_KERNEL whenever possible.

diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index 88f8772a61cd527c2ab138fb5a996470a7dfd456..2e628e12cd1ff92756f054639abd777ea185680f
100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -1370,7 +1370,6 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
        if (err)
                goto fail;

-       get_cpu();
        /* Allocate pointers and free them to aura/pool */
        for (qidx = 0; qidx < hw->tot_tx_queues; qidx++) {
                pool_id = otx2_get_pool_idx(pfvf, AURA_NIX_SQ, qidx);
@@ -1388,13 +1387,17 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
                        err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
                        if (err)
                                goto err_mem;
+                       /* __cn10k_aura_freeptr() needs to be called
+                        * with preemption disabled.
+                        */
+                       get_cpu();
                        pfvf->hw_ops->aura_freeptr(pfvf, pool_id, bufptr);
+                       put_cpu();
                        sq->sqb_ptrs[sq->sqb_count++] = (u64)bufptr;
                }
        }

 err_mem:
-       put_cpu();
        return err ? -ENOMEM : 0;

 fail:

^ permalink raw reply	[flat|nested] 5+ messages in thread

* RE: [EXT] Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context
  2023-01-10  8:35       ` Eric Dumazet
@ 2023-01-10  8:55         ` Geethasowjanya Akula
  0 siblings, 0 replies; 5+ messages in thread
From: Geethasowjanya Akula @ 2023-01-10  8:55 UTC (permalink / raw)
  To: Eric Dumazet
  Cc: Leon Romanovsky, netdev, linux-kernel, kuba, pabeni, davem,
	Subbaraya Sundeep Bhatta, Hariprasad Kelam,
	Sunil Kovvuri Goutham



-----Original Message-----
From: Eric Dumazet <edumazet@google.com> 
Sent: Tuesday, January 10, 2023 2:05 PM
To: Geethasowjanya Akula <gakula@marvell.com>
Cc: Leon Romanovsky <leon@kernel.org>; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; kuba@kernel.org; pabeni@redhat.com; davem@davemloft.net; Subbaraya Sundeep Bhatta <sbhatta@marvell.com>; Hariprasad Kelam <hkelam@marvell.com>; Sunil Kovvuri Goutham <sgoutham@marvell.com>
Subject: [EXT] Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context

External Email

----------------------------------------------------------------------
On Tue, Jan 10, 2023 at 8:54 AM Geethasowjanya Akula <gakula@marvell.com> wrote:
>>
>>
>>
>> -----Original Message-----
>> From: Leon Romanovsky <leon@kernel.org>
>> Sent: Sunday, January 8, 2023 6:39 PM
>> To: Geethasowjanya Akula <gakula@marvell.com>
>> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; 
>> kuba@kernel.org; pabeni@redhat.com; davem@davemloft.net; 
>> edumazet@google.com; Subbaraya Sundeep Bhatta <sbhatta@marvell.com>; 
>> Hariprasad Kelam <hkelam@marvell.com>; Sunil Kovvuri Goutham 
>> <sgoutham@marvell.com>
>> Subject: [EXT] Re: [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic 
>> context
>>
>> External Email
>>
>> ----------------------------------------------------------------------
>> On Sat, Jan 07, 2023 at 10:11:39AM +0530, Geetha sowjanya wrote:
>> >> Use GFP_ATOMIC flag instead of GFP_KERNEL while allocating memory 
>> >> in atomic context.
>>
>> >Awesome, but the changed functions don't run in atomic context.
>>
>> drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>>     1368         /* Flush accumulated messages */
>>     1369         err = otx2_sync_mbox_msg(&pfvf->mbox);
>>     1370         if (err)
>>     1371                 goto fail;
>>     1372
>>     1373         get_cpu();
>>                  ^^^^^^^^^
>> The get_cpu() disables preemption.

>Forcing GFP_ATOMIC in init functions is not desirable.
>
>Please move around the get_cpu() so that we keep GFP_KERNEL whenever possible.
Ok will submit v2 with suggested changes.
>
>diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>index 88f8772a61cd527c2ab138fb5a996470a7dfd456..2e628e12cd1ff92756f054639abd777ea185680f
>100644
>--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
>@@ -1370,7 +1370,6 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
>       if (err)
>                goto fail;
>
>-       get_cpu();
>        /* Allocate pointers and free them to aura/pool */
>       for (qidx = 0; qidx < hw->tot_tx_queues; qidx++) {
>                pool_id = otx2_get_pool_idx(pfvf, AURA_NIX_SQ, qidx); @@ -1388,13 +1387,17 @@ int otx2_sq_aura_pool_init(struct otx2_nic *pfvf)
>                        err = otx2_alloc_rbuf(pfvf, pool, &bufptr);
>                        if (err)
>                                goto err_mem;
>+                       /* __cn10k_aura_freeptr() needs to be called
>+                        * with preemption disabled.
>+                        */
>+                       get_cpu();
>                        pfvf->hw_ops->aura_freeptr(pfvf, pool_id, bufptr);
>+                       put_cpu();
>                        sq->sqb_ptrs[sq->sqb_count++] = (u64)bufptr;
>               }
>        }
>
> err_mem:
>-       put_cpu();
>        return err ? -ENOMEM : 0;
>
> fail:

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-01-10  9:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-07  4:41 [net PATCH] octeontx2-pf: Use GFP_ATOMIC in atomic context Geetha sowjanya
2023-01-08 13:08 ` Leon Romanovsky
     [not found]   ` <DM6PR18MB2602C7D1546455B12340D140CDFF9@DM6PR18MB2602.namprd18.prod.outlook.com>
2023-01-10  7:54     ` Geethasowjanya Akula
2023-01-10  8:35       ` Eric Dumazet
2023-01-10  8:55         ` [EXT] " Geethasowjanya Akula

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).