Hi Greg, stable all,
On Fri, Jul 09, 2021 at 01:50:16PM +0800, Gao Xiang wrote:
On Wed, Jul 07, 2021 at 01:15:28AM +0800, kernel test robot wrote:
tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.4.y head: 3909e2374335335c9504467caabc906d3f7487e4 commit: defcc2b5e54a4724fb5733f802edf5dd596018b6 [7045/7049] lib/lz4: explicitly support in-place decompression config: mips-randconfig-r036-20210706 (attached as .config) compiler: mipsel-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/c... git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git git fetch --no-tags linux-stable-rc linux-5.4.y git checkout defcc2b5e54a4724fb5733f802edf5dd596018b6 # save the attached .config to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross O=build_dir ARCH=mips SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot lkp@intel.com
Which is weird, does the preboot environment miss memmove() on mipsel? Just a guess, I may look into that myself later...
After manually checking, I found memmove() for the mips preboot environment was incidentally introduced by commit a510b616131f ("MIPS: Add support for ZSTD-compressed kernels") which wasn't included in v5.4, but included in v5.10 as below (so v5.10.y is fine): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/ar...
And when I applied the following patch partially from the original commit, the compile error with the command lines mentioned above was gone:
diff --git a/arch/mips/boot/compressed/string.c b/arch/mips/boot/compressed/string.c index 43beecc3587c..e9ab7ea592ba 100644 --- a/arch/mips/boot/compressed/string.c +++ b/arch/mips/boot/compressed/string.c @@ -27,3 +27,19 @@ void *memset(void *s, int c, size_t n) ss[i] = c; return s; } + +void * __weak memmove(void *dest, const void *src, size_t n) +{ + unsigned int i; + const char *s = src; + char *d = dest; + + if ((uintptr_t)dest < (uintptr_t)src) { + for (i = 0; i < n; i++) + d[i] = s[i]; + } else { + for (i = n; i > 0; i--) + d[i - 1] = s[i - 1]; + } + return dest; +}
How to backport such commit partially to the v5.4.y stable kernel? ... Also, it would be better to check other mips compile combinations automatically since it's hard for me to check all such combinations one-by-one...
Thanks, Gao Xiang
Thanks, Gao Xiang
All errors (new ones prefixed by >>):
mipsel-linux-ld: arch/mips/boot/compressed/decompress.o: in function `LZ4_decompress_safe_withSmallPrefix': decompress.c:(.text+0x220): undefined reference to `memmove' mipsel-linux-ld: arch/mips/boot/compressed/decompress.o: in function `LZ4_decompress_fast_extDict': decompress.c:(.text+0x694): undefined reference to `memmove'
mipsel-linux-ld: decompress.c:(.text+0x774): undefined reference to `memmove'
mipsel-linux-ld: arch/mips/boot/compressed/decompress.o: in function `LZ4_decompress_safe': decompress.c:(.text+0xb88): undefined reference to `memmove' mipsel-linux-ld: arch/mips/boot/compressed/decompress.o: in function `LZ4_decompress_safe_partial': decompress.c:(.text+0x1078): undefined reference to `memmove' mipsel-linux-ld: arch/mips/boot/compressed/decompress.o:decompress.c:(.text+0x12f8): more undefined references to `memmove' follow
0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org