Re: [PATCH v5 3/3] xtensa: Emulate two-byte cmpxchg

From: Paul E. McKenney

Date: Tue Oct 06 2026 - 12:10:53 EST


On Tue, Oct 06, 2026 at 04:46:22PM +0100, Bradley Morgan wrote:
> On 6 October 2026 16:44:13 BST, "Paul E. McKenney" <paulmck@xxxxxxxxxx>
> wrote:
> >On Tue, Oct 06, 2026 at 05:54:53PM +0800, kernel test robot wrote:
> >> Hi Bradley,
> >>
> >> kernel test robot noticed the following build errors:
> >>
> >> [auto build test ERROR on akpm-mm/mm-everything]
> >> [also build test ERROR on vgupta-arc/for-curr
> >jcmvbkbc-xtensa/xtensa-for-next linus/master v7.3-rc6 next-20261005]
> >> [cannot apply to vgupta-arc/for-next]
> >> [If your patch is applied to the wrong git tree, kindly drop us a note.
> >> And when submitting patch, we suggest to use '--base' as documented in
> >> https://git-scm.com/docs/git-format-patch#_base_tree_information]
> >>
> >> url:
> >https://github.com/intel-lab-lkp/linux/commits/Bradley-Morgan/ARC-Emulate-two-byte-cmpxchg/20261005-120658
> >> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
> >mm-everything
> >> patch link:
> >https://lore.kernel.org/r/20261005120700.383058-4-brads%40mainlining.org
> >> patch subject: [PATCH v5 3/3] xtensa: Emulate two-byte cmpxchg
> >> config: xtensa-allyesconfig
> >(https://download.01.org/0day-ci/archive/20261006/202610061704.rvbolgPy-lkp@xxxxxxxxx/config)
> >> compiler: xtensa-linux-gcc (GCC) 16.1.0
> >> reproduce (this is a W=1 build):
> >(https://download.01.org/0day-ci/archive/20261006/202610061704.rvbolgPy-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/202610061704.rvbolgPy-lkp@xxxxxxxxx/
> >>
> >> All errors (new ones prefixed by >>):
> >
> >These patches need to be applied on top of my -rcu tree's "dev" branch,
> >which supplies cmpxchg_emu_u16().
> >
> >Nevertheless, thank you for your testing efforts!
>
> Do you reckon they are fine to you? The patches?
>
> Arch maintainers may be busy unfortunately :(, I've done testing on all
> the arches,

I have queued the one that is already acked by the SH maintainer, so we
get at least something into the upcoming merge window. I plan to try your
patches out later today, Pacific Time, and queue them if they are ready.

If the architecture maintainers ack them in time, I send a pull request
for them in the upcoming merge window. If some of the do not yet have
acks, I keep those unacked ones for the next merge window. If they
are still being ignored at that point, I send the pull request anyway.
Maybe Linus takes it, maybe not. If not, I figure things out from that
point.

Hey, it is a lot faster than some other communities that I am involved
with, where the timeframes are years and even decades rather than
mere weeks and months. ;-)

Thanx, Paul

> >> In file included from arch/xtensa/include/asm/atomic.h:19,
> >> from include/linux/atomic.h:7,
> >> from include/asm-generic/bitops/atomic.h:5,
> >> from arch/xtensa/include/asm/bitops.h:192,
> >> from include/linux/bitops.h:67,
> >> from include/linux/log2.h:12,
> >> from kernel/bounds.c:14:
> >> arch/xtensa/include/asm/cmpxchg.h: In function '__cmpxchg':
> >> >> arch/xtensa/include/asm/cmpxchg.h:79:25: error: implicit declaration
> >of function 'cmpxchg_emu_u16'; did you mean 'cmpxchg_emu_u8'?
> >[-Wimplicit-function-declaration]
> >> 79 | case 2: return cmpxchg_emu_u16(ptr, old, new);
> >> | ^~~~~~~~~~~~~~~
> >> | cmpxchg_emu_u8
> >> make[3]: *** [scripts/Makefile.build:185: kernel/bounds.s] Error 1
> >> make[3]: Target 'prepare' not remade because of errors.
> >> make[2]: *** [Makefile:1405: prepare0] Error 2
> >> make[2]: Target 'prepare' not remade because of errors.
> >> make[1]: *** [Makefile:248: __sub-make] Error 2
> >> make[1]: Target 'prepare' not remade because of errors.
> >> make: *** [Makefile:248: __sub-make] Error 2
> >> make: Target 'prepare' not remade because of errors.
> >>
> >>
> >> vim +79 arch/xtensa/include/asm/cmpxchg.h
> >>
> >> 73
> >> 74 static __inline__ unsigned long
> >> 75 __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
> >> 76 {
> >> 77 switch (size) {
> >> 78 case 1: return cmpxchg_emu_u8(ptr, old, new);
> >> > 79 case 2: return cmpxchg_emu_u16(ptr, old, new);
> >> 80 case 4: return __cmpxchg_u32(ptr, old, new);
> >> 81 default: __cmpxchg_called_with_bad_pointer();
> >> 82 return old;
> >> 83 }
> >> 84 }
> >> 85
> >>
> >> --
> >> 0-DAY CI Kernel Test Service
> >> https://github.com/intel/lkp-tests/wiki
>
> --- Thanks!
> "I'm not a very positive person" - Linus torvalds