Thread (5 messages) 5 messages, 3 authors, 2024-08-04

Re: [PATCH] net/chelsio/libcxgb: Add __percpu annotations to libcxgb_ppm.c

From: Uros Bizjak <hidden>
Date: 2024-07-31 10:06:32
Also in: lkml

On Wed, Jul 31, 2024 at 11:35 AM Simon Horman [off-list ref] wrote:
On Tue, Jul 30, 2024 at 02:58:19PM +0200, Uros Bizjak wrote:
quoted
Compiling libcxgb_ppm.c results in several sparse warnings:

libcxgb_ppm.c:368:15: warning: incorrect type in assignment (different address spaces)
libcxgb_ppm.c:368:15:    expected struct cxgbi_ppm_pool *pools
libcxgb_ppm.c:368:15:    got void [noderef] __percpu *_res
libcxgb_ppm.c:374:48: warning: incorrect type in initializer (different address spaces)
libcxgb_ppm.c:374:48:    expected void const [noderef] __percpu *__vpp_verify
libcxgb_ppm.c:374:48:    got struct cxgbi_ppm_pool *
libcxgb_ppm.c:484:19: warning: incorrect type in assignment (different address spaces)
libcxgb_ppm.c:484:19:    expected struct cxgbi_ppm_pool [noderef] __percpu *pool
libcxgb_ppm.c:484:19:    got struct cxgbi_ppm_pool *[assigned] pool
libcxgb_ppm.c:511:21: warning: incorrect type in argument 1 (different address spaces)
libcxgb_ppm.c:511:21:    expected void [noderef] __percpu *__pdata
libcxgb_ppm.c:511:21:    got struct cxgbi_ppm_pool *[assigned] pool

Add __percpu annotation to *pools and *pool percpu pointers and to
ppm_alloc_cpu_pool() function that returns percpu pointer to fix
these warnings.

Compile tested only, but there is no difference in the resulting object file.

Signed-off-by: Uros Bizjak <redacted>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>
---
 drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
index 854d87e1125c..01d776113500 100644
--- a/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
+++ b/drivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c
@@ -342,10 +342,10 @@ int cxgbi_ppm_release(struct cxgbi_ppm *ppm)
 }
 EXPORT_SYMBOL(cxgbi_ppm_release);

-static struct cxgbi_ppm_pool *ppm_alloc_cpu_pool(unsigned int *total,
-                                              unsigned int *pcpu_ppmax)
+static struct cxgbi_ppm_pool __percpu *ppm_alloc_cpu_pool(unsigned int *total,
+                                                       unsigned int *pcpu_ppmax)
Let's keep to less than 80 columns wide, as is still preferred for
Networking code. Perhaps in this case:

static struct cxgbi_ppm_pool __percpu *
ppm_alloc_cpu_pool(unsigned int *total, unsigned int *pcpu_ppmax)
Hm, the original is exactly what sparse dumped, IMO code dumps should
be left as they were dumped.
Also, I do observe that this is an old driver, so the value
of cleaning it is perhaps limited.
It broke my strict percpu checker with allyesconfig. Fixing it was
trivial and resulted in no object code changes.
But the above aside, this looks good to me.
Thanks,
Uros.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help