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.
Showing the changes to include (1 of 1 file). Show all
Unified · Split
| @@ -236,7 +236,7 @@ static inline u64 readq(const volatile void __iomem *addr) · 235 unmodified lines | ||
| 236 | 236 | |
| 237 | 237 | log_read_mmio(64, addr, _THIS_IP_, _RET_IP_); |
| 238 | 238 | __io_br(); |
| 239 | − val = __le64_to_cpu(__raw_readq(addr)); | |
| 239 | + val = __le64_to_cpu((__le64 __force)__raw_readq(addr)); | |
| 240 | 240 | __io_ar(val); |
| 241 | 241 | log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_); |
| 242 | 242 | return val; |
| @@ -287,7 +287,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) · 44 unmodified lines | ||
| 287 | 287 | { |
| 288 | 288 | log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); |
| 289 | 289 | __io_bw(); |
| 290 | − __raw_writeq(__cpu_to_le64(value), addr); | |
| 290 | + __raw_writeq((u64 __force)__cpu_to_le64(value), addr); | |
| 291 | 291 | __io_aw(); |
| 292 | 292 | log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); |
| 293 | 293 | } |