On Mon, 9 Jan 2023 15:11:52 +0200 Vladimir Oltean <vladimir.oltean@xxxxxxx> wrote: > Commit c1d55d50139b ("asm-generic/io.h: Fix sparse warnings on > big-endian architectures") missed fixing the 64-bit accessors. > > Arnd explains in the attached link why the casts are necessary, even if > __raw_readq() and __raw_writeq() do not take endian-specific types. > > Link: https://lore.kernel.org/lkml/9105d6fc-880b-4734-857d-e3d30b87ccf6@xxxxxxxxxxxxxxxx/ > Suggested-by: Arnd Bergmann <arnd@xxxxxxxx> > Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx> Found this when about to send an equivalent patch. Not seeing this in linux-next yet and would be good to clean the resulting warnings up. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> > --- > include/asm-generic/io.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h > index 4c44a29b5e8e..d78c3056c98f 100644 > --- a/include/asm-generic/io.h > +++ b/include/asm-generic/io.h > @@ -236,7 +236,7 @@ static inline u64 readq(const volatile void __iomem *addr) > > log_read_mmio(64, addr, _THIS_IP_, _RET_IP_); > __io_br(); > - val = __le64_to_cpu(__raw_readq(addr)); > + val = __le64_to_cpu((__le64 __force)__raw_readq(addr)); > __io_ar(val); > log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_); > return val; > @@ -287,7 +287,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) > { > log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); > __io_bw(); > - __raw_writeq(__cpu_to_le64(value), addr); > + __raw_writeq((u64 __force)__cpu_to_le64(value), addr); > __io_aw(); > log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); > }