* [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
[parent not found: <DM6PR18MB2602C7D1546455B12340D140CDFF9@DM6PR18MB2602.namprd18.prod.outlook.com>]
* 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@vger.kernel.org, linux-kernel@vger.kernel.org, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net, edumazet@google.com, 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@vger.kernel.org, linux-kernel@vger.kernel.org, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net, 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@vger.kernel.org, linux-kernel@vger.kernel.org, kuba@kernel.org, pabeni@redhat.com, davem@davemloft.net, 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).