arch/powerpc/include/asm/cmpxchg.h:241:47: sparse: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)

From: kernel test robot
Date: Fri Feb 16 2024 - 13:25:23 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f1dd5e91e2ba3990143645faff2bcce2d99778e
commit: 453924de6212ac159f946b75c6b59918e2e30944 afs: Overhaul invalidation handling to better support RO volumes
date: 7 weeks ago
config: powerpc64-randconfig-r111-20240216 (https://download.01.org/0day-ci/archive/20240217/202402170208.0xYZculA-lkp@xxxxxxxxx/config)
compiler: powerpc64-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20240217/202402170208.0xYZculA-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202402170208.0xYZculA-lkp@xxxxxxxxx/

sparse warnings: (new ones prefixed by >>)
fs/afs/callback.c: note: in included file (through arch/powerpc/include/asm/pgtable-be-types.h, arch/powerpc/include/asm/page.h, arch/powerpc/include/asm/mmu.h, ...):
>> arch/powerpc/include/asm/cmpxchg.h:241:47: sparse: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)
arch/powerpc/include/asm/cmpxchg.h:243:48: sparse: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)
fs/afs/callback.c:146:22: sparse: sparse: context imbalance in 'afs_lookup_volume_rcu' - different lock contexts for basic block
--
fs/afs/rotate.c: note: in included file (through arch/powerpc/include/asm/pgtable-be-types.h, arch/powerpc/include/asm/page.h, arch/powerpc/include/asm/mmu.h, ...):
>> arch/powerpc/include/asm/cmpxchg.h:241:47: sparse: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)
arch/powerpc/include/asm/cmpxchg.h:243:48: sparse: sparse: cast truncates bits from constant value (8000000000000000 becomes 0)
fs/afs/rotate.c:655:42: sparse: sparse: self-comparison always evaluates to true

vim +241 arch/powerpc/include/asm/cmpxchg.h

ae3a197e3d0bfe David Howells 2012-03-28 235
ae3a197e3d0bfe David Howells 2012-03-28 236 static __always_inline unsigned long
26760fc19a7e66 Boqun Feng 2015-12-15 237 __xchg_relaxed(void *ptr, unsigned long x, unsigned int size)
ae3a197e3d0bfe David Howells 2012-03-28 238 {
ae3a197e3d0bfe David Howells 2012-03-28 239 switch (size) {
d0563a1297e234 Pan Xinhui 2016-04-27 240 case 1:
d0563a1297e234 Pan Xinhui 2016-04-27 @241 return __xchg_u8_relaxed(ptr, x);
d0563a1297e234 Pan Xinhui 2016-04-27 242 case 2:
d0563a1297e234 Pan Xinhui 2016-04-27 243 return __xchg_u16_relaxed(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 244 case 4:
26760fc19a7e66 Boqun Feng 2015-12-15 245 return __xchg_u32_relaxed(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 246 #ifdef CONFIG_PPC64
ae3a197e3d0bfe David Howells 2012-03-28 247 case 8:
26760fc19a7e66 Boqun Feng 2015-12-15 248 return __xchg_u64_relaxed(ptr, x);
ae3a197e3d0bfe David Howells 2012-03-28 249 #endif
ae3a197e3d0bfe David Howells 2012-03-28 250 }
068550631fbe0b Andrzej Hajda 2023-01-18 251 BUILD_BUG_ON_MSG(1, "Unsupported size for __xchg_relaxed");
ae3a197e3d0bfe David Howells 2012-03-28 252 return x;
ae3a197e3d0bfe David Howells 2012-03-28 253 }
9eaa82935dccb7 Mark Rutland 2021-05-25 254 #define arch_xchg_local(ptr,x) \
ae3a197e3d0bfe David Howells 2012-03-28 255 ({ \
ae3a197e3d0bfe David Howells 2012-03-28 256 __typeof__(*(ptr)) _x_ = (x); \
26760fc19a7e66 Boqun Feng 2015-12-15 257 (__typeof__(*(ptr))) __xchg_local((ptr), \
26760fc19a7e66 Boqun Feng 2015-12-15 258 (unsigned long)_x_, sizeof(*(ptr))); \
ae3a197e3d0bfe David Howells 2012-03-28 259 })
ae3a197e3d0bfe David Howells 2012-03-28 260

:::::: The code at line 241 was first introduced by commit
:::::: d0563a1297e234ed37f6b51c2e9321accebd1839 powerpc: Implement {cmp}xchg for u8 and u16

:::::: TO: Pan Xinhui <xinhui.pan@xxxxxxxxxxxxxxxxxx>
:::::: CC: Michael Ellerman <mpe@xxxxxxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki