[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250528150333.GB1484967@horms.kernel.org>
Date: Wed, 28 May 2025 16:03:33 +0100
From: Simon Horman <horms@...nel.org>
To: Subbaraya Sundeep <sbhatta@...vell.com>
Cc: andrew+netdev@...n.ch, davem@...emloft.net, edumazet@...gle.com,
kuba@...nel.org, pabeni@...hat.com, saikrishnag@...vell.com,
gakula@...vell.com, hkelam@...vell.com, sgoutham@...vell.com,
lcherian@...vell.com, bbhushan2@...vell.com, jerinj@...vell.com,
netdev@...r.kernel.org
Subject: Re: [net v3 PATCH] octeontx2-pf: Avoid typecasts by simplifying
otx2_atomic64_add macro
On Wed, May 28, 2025 at 10:10:42AM +0530, Subbaraya Sundeep wrote:
> Just because otx2_atomic64_add is using u64 pointer as argument
> all callers has to typecast __iomem void pointers which inturn
> causing sparse warnings. Fix those by changing otx2_atomic64_add
> argument to void pointer.
>
> Fixes: caa2da34fd25 ("octeontx2-pf: Initialize and config queues")
> Signed-off-by: Subbaraya Sundeep <sbhatta@...vell.com>
> ---
> v3:
> Make otx2_atomic64_add as nop for architectures other than ARM64
> to fix sparse warnings
> v2:
> Fixed x86 build error of void pointer dereference reported by
> kernel test robot
Sorry, I seem to have made some some comments on v2 after v3 was posted.
1) I'm wondering if you considered changing the type of the 2nd parameter
of otx2_atomic64_add to u64 __iomem * and, correspondingly, the type of
the local variables updated by this patch. Perhaps that isn't so clean
for some reason. But if it can be done cleanly it does seem slightly
nicer to me.
2) I wonder if this is more of a clean-up for net-next (once it re-opens,
no Fixes tag) than a fix.
> diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
...
> @@ -747,7 +748,11 @@ static inline u64 otx2_atomic64_add(u64 incr, u64 *ptr)
>
> #else
> #define otx2_write128(lo, hi, addr) writeq((hi) | (lo), addr)
> -#define otx2_atomic64_add(incr, ptr) ({ *ptr += incr; })
> +
> +static inline u64 otx2_atomic64_add(u64 incr, void __iomem *addr)
> +{
> + return 0;
Is it intentional that no increment is occurring here,
whereas there was one in the macro version this replaces?
> +}
> #endif
...
Powered by blists - more mailing lists