On Mon, Sep 30, 2024 at 09:10:27AM -0700, Paul E. McKenney wrote: > On Wed, Sep 25, 2024 at 01:40:45PM +0800, kernel test robot wrote: > > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git > > master > > head: 684a64bf32b6e488004e0ad7f0d7e922798f65b6 > > commit: f2519d4d4fc4d36f2b58c5614357de9f5b4032fc ARC: Emulate one-byte > > cmpxchg > > date: 12 days ago > > config: arc-randconfig-r123-20240925 > > (https://download.01.org/0day-ci/archive/20240925/202409251336.toc0tvwb-...@intel.com/config) > > compiler: arc-elf-gcc (GCC) 13.2.0 > > reproduce: > > (https://download.01.org/0day-ci/archive/20240925/202409251336.toc0tvwb-...@intel.com/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 <l...@intel.com> > > | Closes: > > https://lore.kernel.org/oe-kbuild-all/202409251336.toc0tvwb-...@intel.com/ > > > > sparse warnings: (new ones prefixed by >>) > > arch/arc/kernel/smp.c:252:48: sparse: sparse: incorrect type in > > initializer (different address spaces) @@ expected unsigned long > > [noderef] __percpu *ipi_data_ptr @@ got unsigned long * @@ > > arch/arc/kernel/smp.c:252:48: sparse: expected unsigned long > > [noderef] __percpu *ipi_data_ptr > > arch/arc/kernel/smp.c:252:48: sparse: got unsigned long * > > arch/arc/kernel/smp.c:267:18: sparse: sparse: incorrect type in argument > > 1 (different address spaces) @@ expected void const volatile *v @@ > > got unsigned long [noderef] __percpu *__ai_ptr @@ > > arch/arc/kernel/smp.c:267:18: sparse: expected void const volatile *v > > arch/arc/kernel/smp.c:267:18: sparse: got unsigned long [noderef] > > __percpu *__ai_ptr > > >> arch/arc/kernel/smp.c:267:18: sparse: sparse: cast removes address space > > >> '__percpu' of expression > > >> arch/arc/kernel/smp.c:267:18: sparse: sparse: cast removes address space > > >> '__percpu' of expression > > I could "fix" this using __force. Is that a reasonable approach? > > If I don't hear otherwise, I will take that approach.
Having not heard otherwise, does the following fix this issue for you? Thanx, Paul ------------------------------------------------------------------------ diff --git a/arch/arc/include/asm/cmpxchg.h b/arch/arc/include/asm/cmpxchg.h index 58045c8983404..76f43db0890fc 100644 --- a/arch/arc/include/asm/cmpxchg.h +++ b/arch/arc/include/asm/cmpxchg.h @@ -48,7 +48,7 @@ \ switch(sizeof((_p_))) { \ case 1: \ - _prev_ = (__typeof__(*(ptr)))cmpxchg_emu_u8((volatile u8 *)_p_, (uintptr_t)_o_, (uintptr_t)_n_); \ + _prev_ = (__typeof__(*(ptr)))cmpxchg_emu_u8((volatile u8 *__force)_p_, (uintptr_t)_o_, (uintptr_t)_n_); \ break; \ case 4: \ _prev_ = __cmpxchg(_p_, _o_, _n_); \ _______________________________________________ linux-snps-arc mailing list linux-snps-arc@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-snps-arc