Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'asm-generic-fixes-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic

Pull asm-generic fixes from Arnd Bergmann:
"These are minor fixes to address false-positive build warnings:

Some of the less common I/O accessors are missing __force casts and
cause sparse warnings for their implied byteswap, and a recent change
to __generic_cmpxchg_local() causes a warning about constant integer
truncation"

* tag 'asm-generic-fixes-6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic:
asm-generic: avoid __generic_cmpxchg_local warnings
asm-generic/io.h: suppress endianness warnings for relaxed accessors
asm-generic/io.h: suppress endianness warnings for readq() and writeq()

+19 -19
+2 -2
include/asm-generic/atomic.h
··· 130 130 #define arch_atomic_read(v) READ_ONCE((v)->counter) 131 131 #define arch_atomic_set(v, i) WRITE_ONCE(((v)->counter), (i)) 132 132 133 - #define arch_atomic_xchg(ptr, v) (arch_xchg(&(ptr)->counter, (v))) 134 - #define arch_atomic_cmpxchg(v, old, new) (arch_cmpxchg(&((v)->counter), (old), (new))) 133 + #define arch_atomic_xchg(ptr, v) (arch_xchg(&(ptr)->counter, (u32)(v))) 134 + #define arch_atomic_cmpxchg(v, old, new) (arch_cmpxchg(&((v)->counter), (u32)(old), (u32)(new))) 135 135 136 136 #endif /* __ASM_GENERIC_ATOMIC_H */
+6 -6
include/asm-generic/cmpxchg-local.h
··· 26 26 raw_local_irq_save(flags); 27 27 switch (size) { 28 28 case 1: prev = *(u8 *)ptr; 29 - if (prev == (u8)old) 30 - *(u8 *)ptr = (u8)new; 29 + if (prev == (old & 0xffu)) 30 + *(u8 *)ptr = (new & 0xffu); 31 31 break; 32 32 case 2: prev = *(u16 *)ptr; 33 - if (prev == (u16)old) 34 - *(u16 *)ptr = (u16)new; 33 + if (prev == (old & 0xffffu)) 34 + *(u16 *)ptr = (new & 0xffffu); 35 35 break; 36 36 case 4: prev = *(u32 *)ptr; 37 - if (prev == (u32)old) 38 - *(u32 *)ptr = (u32)new; 37 + if (prev == (old & 0xffffffffffu)) 38 + *(u32 *)ptr = (new & 0xffffffffu); 39 39 break; 40 40 case 8: prev = *(u64 *)ptr; 41 41 if (prev == old)
+3 -3
include/asm-generic/cmpxchg.h
··· 32 32 #else 33 33 local_irq_save(flags); 34 34 ret = *(volatile u8 *)ptr; 35 - *(volatile u8 *)ptr = x; 35 + *(volatile u8 *)ptr = (x & 0xffu); 36 36 local_irq_restore(flags); 37 37 return ret; 38 38 #endif /* __xchg_u8 */ ··· 43 43 #else 44 44 local_irq_save(flags); 45 45 ret = *(volatile u16 *)ptr; 46 - *(volatile u16 *)ptr = x; 46 + *(volatile u16 *)ptr = (x & 0xffffu); 47 47 local_irq_restore(flags); 48 48 return ret; 49 49 #endif /* __xchg_u16 */ ··· 54 54 #else 55 55 local_irq_save(flags); 56 56 ret = *(volatile u32 *)ptr; 57 - *(volatile u32 *)ptr = x; 57 + *(volatile u32 *)ptr = (x & 0xffffffffu); 58 58 local_irq_restore(flags); 59 59 return ret; 60 60 #endif /* __xchg_u32 */
+8 -8
include/asm-generic/io.h
··· 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 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 } ··· 319 319 u16 val; 320 320 321 321 log_read_mmio(16, addr, _THIS_IP_, _RET_IP_); 322 - val = __le16_to_cpu(__raw_readw(addr)); 322 + val = __le16_to_cpu((__le16 __force)__raw_readw(addr)); 323 323 log_post_read_mmio(val, 16, addr, _THIS_IP_, _RET_IP_); 324 324 return val; 325 325 } ··· 332 332 u32 val; 333 333 334 334 log_read_mmio(32, addr, _THIS_IP_, _RET_IP_); 335 - val = __le32_to_cpu(__raw_readl(addr)); 335 + val = __le32_to_cpu((__le32 __force)__raw_readl(addr)); 336 336 log_post_read_mmio(val, 32, addr, _THIS_IP_, _RET_IP_); 337 337 return val; 338 338 } ··· 345 345 u64 val; 346 346 347 347 log_read_mmio(64, addr, _THIS_IP_, _RET_IP_); 348 - val = __le64_to_cpu(__raw_readq(addr)); 348 + val = __le64_to_cpu((__le64 __force)__raw_readq(addr)); 349 349 log_post_read_mmio(val, 64, addr, _THIS_IP_, _RET_IP_); 350 350 return val; 351 351 } ··· 366 366 static inline void writew_relaxed(u16 value, volatile void __iomem *addr) 367 367 { 368 368 log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_); 369 - __raw_writew(cpu_to_le16(value), addr); 369 + __raw_writew((u16 __force)cpu_to_le16(value), addr); 370 370 log_post_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_); 371 371 } 372 372 #endif ··· 376 376 static inline void writel_relaxed(u32 value, volatile void __iomem *addr) 377 377 { 378 378 log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_); 379 - __raw_writel(__cpu_to_le32(value), addr); 379 + __raw_writel((u32 __force)__cpu_to_le32(value), addr); 380 380 log_post_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_); 381 381 } 382 382 #endif ··· 386 386 static inline void writeq_relaxed(u64 value, volatile void __iomem *addr) 387 387 { 388 388 log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); 389 - __raw_writeq(__cpu_to_le64(value), addr); 389 + __raw_writeq((u64 __force)__cpu_to_le64(value), addr); 390 390 log_post_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); 391 391 } 392 392 #endif