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 | log_read_mmio(64, addr, _THIS_IP_, _RET_IP_); | 237 | log_read_mmio(64, addr, _THIS_IP_, _RET_IP_); |
| 238 | __io_br(); | 238 | __io_br(); |
| 239 | val = __le64_to_cpu(__raw_readq(addr)); | 239 | val = __le64_to_cpu((__le64 __force)__raw_readq(addr)); |
| 240 | __io_ar(val); | 240 | __io_ar(val); |
| 241 | log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_); | 241 | log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_); |
| 242 | return val; | 242 | return val; |
| @@ -287,7 +287,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) · 44 unmodified lines | |||
| 287 | { | 287 | { |
| 288 | log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); | 288 | log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); |
| 289 | __io_bw(); | 289 | __io_bw(); |
| 290 | __raw_writeq(__cpu_to_le64(value), addr); | 290 | __raw_writeq((u64 __force)__cpu_to_le64(value), addr); |
| 291 | __io_aw(); | 291 | __io_aw(); |
| 292 | log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); | 292 | log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); |
| 293 | } | 293 | } |