I'm not sure if this is your issue, but I had a similar issue ilog2 and the disassembler and fixed it by backporting this patch.
No guarantees, but perhaps it will help. --Aaron On Fri, Jan 29, 2021 at 9:51 PM Jonas Vautherin <jonas.vauthe...@gmail.com> wrote: > Thanks a lot for the advice! However, I can't seem to find a `const` that > I can simply remove. To give more context, here is the log output around > such an error (it seems like it is often surrounded by this log2.h warning, > by the way): > > | In file included from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/kernel.h:11, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/kallsyms.h:9, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/ftrace.h:10, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/kernel/extable.c:18: >> | >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/log2.h:22:1: >> warning: ignoring attribute 'noreturn' because it conflicts with attribute >> 'const' [-Wattributes] >> | 22 | int ____ilog2_NaN(void); >> | | ^~~ >> | CC fs/fat/dir.o >> | In file included from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/kernel.h:11, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/list.h:8, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/module.h:9, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/fs/fat/dir.c:16: >> | >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/log2.h:22:1: >> warning: ignoring attribute 'noreturn' because it conflicts with attribute >> 'const' [-Wattributes] >> | 22 | int ____ilog2_NaN(void); >> | | ^~~ >> | CC block/deadline-iosched.o >> | In file included from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/kernel.h:11, >> | from >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/block/deadline-iosched.c:6: >> | >> /home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/include/linux/log2.h:22:1: >> warning: ignoring attribute 'noreturn' because it conflicts with attribute >> 'const' [-Wattributes] >> | 22 | int ____ilog2_NaN(void); >> | | ^~~ >> | /tmp/cc52vFrQ.s: Assembler messages: >> | /tmp/cc52vFrQ.s:2683: Error: .err encountered >> | /tmp/cc52vFrQ.s:2927: Error: .err encountered >> | LD sound/sparc/built-in.o >> | LD sound/spi/built-in.o >> | make[3]: *** >> [/home/jones/Documents/yocto/poky/build/tmp/work-shared/skycontroller3/kernel-source/scripts/Makefile.build:257: >> block/scsi_ioctl.o] Error 1 >> > > I pasted the full output here, if that can help: > https://paste.ubuntu.com/p/KqN8nVWmvv/. The lines that seem to get the > log2 warning are: > > ``` > extern __attribute__((const, noreturn)) > int ____ilog2_NaN(void); > ``` > > So there is a const there, but well... not sure what to do with it :-). > > Best, > > On Mon, Jan 25, 2021 at 9:00 AM Diego Santa Cruz < > diego.santac...@spinetix.com> wrote: > >> *From:* yocto@lists.yoctoproject.org <yocto@lists.yoctoproject.org> *On >> Behalf Of *Jonas Vautherin via lists.yoctoproject.org >> *Sent:* 24 January 2021 14:30 >> *To:* Jonas Vautherin <jonas.vauthe...@gmail.com> >> *Cc:* Paul Barker <pbar...@konsulko.com>; Yocto-mailing-list < >> yocto@lists.yoctoproject.org> >> *Subject:* Re: [yocto] Writing a BSP from downstream kernel sources >> >> >> >> Just to close this: it seems like the gcc-cross-arm used by yocto >> gatesgarth is too new for that specific downstream kernel (3.18.31). >> >> >> >> The goal was to get a proper BSP package for this device for a modern >> yocto, so I don't think I will try with an older version of Yocto. If I >> compile an old gcc as part of a custom Yocto layer (on gatesgarth), I am >> guessing that I will have issues creating a distro that runs both on RPi >> and on that older device (because RPi will have a newer kernel and gcc, and >> the skycontroller will use older ones). I also guess that the downstream >> dts won't work with a modern kernel, and I would not know how to write one >> myself for that apq8009 chip. >> >> >> >> Hence, I'm giving up. Thanks a lot for the help :-). >> >> *[Diego Santa Cruz] Wait! **You may be able to get it working, see >> below.* >> >> >> >> On Sat, Jan 23, 2021 at 2:07 PM Jonas Vautherin via >> lists.yoctoproject.org <jonas.vautherin=gmail....@lists.yoctoproject.org> >> wrote: >> >> Thanks a lot for the answer! >> >> >> >> It seems like using `KCONFIG_MODE = "--alldefconfig"` with >> `KBUILD_DEFCONFIG = "msm8909_defconfig"` now ends up with the same kind of >> errors as when I use the defconfig from the downstream kernel [1], i.e.: >> >> >> >> *[Diego Santa Cruz] I happen to be doing a similar kind of work, getting >> an even older (2.6.37+) downstream kernel for an ARM machine to compile >> with recent GCC in Yocto, in my case GCC 9.3 from dunfell. There are a few >> fixes and backports necessary to make it happen and boot. I’m not done with >> the work yet, so I do not know how stable it is, but I have it booting.* >> >> ``` >> >> | /tmp/ccz8jKgm.s: Assembler messages: >> | /tmp/ccz8jKgm.s:985: Error: .err encountered >> >> ``` >> >> *[Diego Santa Cruz] The fix here is rather simple once you understand >> what’s going on, the problem is abusive use of const for register >> variables, see >> https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Local-Register-Variables.html >> <https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Local-Register-Variables.html> >> so when put_user() is used for a literal constant value it gets assigned >> the wrong register, so just remove the const qualifier from the put_user() >> register variable assignment for the value argument. For my older kernel >> the patch is like this.* >> >> --- arch/arm/include/asm/uaccess.h >> >> +++ arch/arm/include/asm/uaccess.h >> >> @@ -145,7 +145,7 @@ >> >> #define >> put_user(x,p) >> \ >> >> >> ({ >> \ >> >> - register const typeof(*(p)) __r2 >> asm("r2") = (x); \ >> >> + register typeof(*(p)) __r2 asm("r2") = >> (x); \ >> >> register const typeof(*(p)) __user *__p >> asm("r0") = (p);\ >> >> register int __e >> asm("r0"); \ >> >> switch (sizeof(*(__p))) >> { \ >> >> >> >> Could it be related to the tuning, e.g. I'm somehow defining a wrong >> toolchain in my machine configuration [2] and it fails to build? I was >> thinking about the tune-cortexa7.inc include, though it seems to me that >> the apq8009 is a cortexa7 [3]: >> >> >> >> *[Diego Santa Cruz] Other commits from post 3.18 that you may need to >> backport are the following (start from bottom of list) * >> >> 474c90156c8dcc2fa815e6716cc9394d7930cb9c give up on gcc ilog2() constant >> optimizations >> >> cb984d101b30eb7478d32df56a0023e4603cba7f compiler-gcc: integrate the >> various compiler-gcc[345].h files >> >> f6d133f877c8bb0a0934dc8c521c758ee771e901 compiler-gcc.h: neatening >> >> 7829fb09a2b4268b30dd9bc782fa5ebee278b137 lib: make memzero_explicit more >> robust against dead store elimination >> >> cb4188ac8e5779f66b9f55888ac2c75b391cde44 compiler: introduce >> __alias(symbol) shortcut >> >> 0b053c9518292705736329a8fe20ef4686ffc8e9 lib: memzero_explicit: use >> barrier instead of OPTIMIZER_HIDE_VAR >> >> ee91ef6173e81819f5ff610c2485802081635657 bufferhead: force inlining of >> buffer head flag operations >> >> cc7fce80229067890365c1ee196be5d304d36dea mtd: blkdevs: fix switch-bool >> compilation warning >> >> >> >> >> >> > The Qualcomm Snapdragon 212 APQ8009 is an entry level SoC for Android >> based tablets and smartphones. It contains four ARM Cortex-A7 CPU cores >> (quad core) >> >> >> >> [1]: >> https://github.com/parrot-opensource/skycontroller3-opensource/blob/master/sources/linux-3.18.31/linux.config >> >> [2]: >> https://github.com/JonasVautherin/meta-skycontroller3/blob/main/conf/machine/skycontroller3.conf#L32 >> >> [3]: >> https://www.notebookcheck.net/Qualcomm-Snapdragon-212-APQ8009-SoC-Benchmarks-and-Specs.169859.0.html >> >> >> >> Best, >> >> >> >> On Sat, Jan 23, 2021 at 11:06 AM Paul Barker <pbar...@konsulko.com> >> wrote: >> >> On Sat, 23 Jan 2021 at 02:29, Jonas Vautherin <jonas.vauthe...@gmail.com> >> wrote: >> > >> > As a learning experience, I am trying to create a BSP for a device I >> own and whose downstream kernel is published. The device in question is the >> Parrot Skycontroller3, and the sources are available here. >> > >> > Let me start by sharing my issue. When I build the kernel with `bitbake >> virtual/kernel`, it fails with errors like: >> > >> > ``` >> > | AS arch/arm/lib/backtrace.o >> > | AS arch/arm/lib/bswapsdi2.o >> > | AS arch/arm/lib/call_with_stack.o >> > | /tmp/ccz8jKgm.s: Assembler messages: >> > | /tmp/ccz8jKgm.s:985: Error: .err encountered >> > | /tmp/ccz8jKgm.s:1033: Error: .err encountered >> > | /tmp/ccz8jKgm.s:6812: Error: .err encountered >> > ``` >> > >> > My layer is available here. >> > >> > I created it getting inspiration from meta-raspberrypi and >> meta-qti-bsp, which seems to have the same CPU: apq8009. According to the >> Parrot sources, my device runs a Qualcomm apq8009/msm89090 cpu. In my repo, >> I use as a defconfig file the linux.config that is available in the Parrot >> sources (I copied it in my kernel recipe under `files/defconfig` and added >> it to SRC_URI). >> > >> > The Parrot sources also refer to `LINUX_DEFAULT_CONFIG_TARGET := >> msm8909_defconfig`, so I tried to set `KBUILD_DEFCONFIG = >> "msm8909_defconfig"`, but that is failing with different errors, such as: >> > >> > ``` >> > error: 'VM_ARM_DMA_CONSISTENT' undeclared (first use in this function); >> did you mean 'DMA_ATTR_NON_CONSISTENT'? >> > ``` >> > >> > or >> > >> > ``` >> > error: 'L_PTE_YOUNG' undeclared >> > ``` >> > >> > As a side note, their `drivers/Kconfig` seemed invalid, so I patched it. >> > >> > I am a bit lost now, not completely sure where my issues come from. I >> realize that changing the defconfig has quite some impact (I get different >> errors), and also that my machine configuration may be completely wrong (I >> am essentially guessing from the fact that it is an apq8009/msm8909, but >> for instance the tuning I just copied from meta-qti-bsp, which may be >> invalid). >> > >> > I would be glad if I could get hints about debugging this. Again, it is >> really a learning project: I would like to learn how to create a BSP from a >> downstream kernel. >> >> I think setting `KBUILD_DEFCONFIG = "msm8909_defconfig"` is likely the >> correct approach here. What you may be missing though is the correct >> value for KCONFIG_MODE. By default, the supplied defconfig file is >> copied to .config but dependencies between config options aren't >> resolved. You need to set `KCONFIG_MODE = "--alldefconfig"` to get the >> equivalent of `make msm8909_defconfig` to occur. See >> >> https://github.com/agherzan/meta-raspberrypi/blob/master/recipes-kernel/linux/linux-raspberrypi.inc#L19 >> for an idea of how this is done for Raspberry Pi. >> >> Thanks, >> >> -- >> Paul Barker >> Konsulko Group >> >> >> -- >> >> *Diego Santa Cruz, PhD *Technology Architect >> spinetix.com >> > > > >
From ea95e4bccc65546a28c8ac05f900d0482623043b Mon Sep 17 00:00:00 2001 From: Joel 'Aaron' Cohen <aaron.co...@assonance.org> Date: Wed, 29 Apr 2020 16:12:22 -0400 Subject: [PATCH] Backport ilog2 kernel compile fix --- include/linux/log2.h | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/include/linux/log2.h b/include/linux/log2.h index fd7ff3d91e6a..f38fae23bdac 100644 --- a/include/linux/log2.h +++ b/include/linux/log2.h @@ -15,12 +15,6 @@ #include <linux/types.h> #include <linux/bitops.h> -/* - * deal with unrepresentable constant logarithms - */ -extern __attribute__((const, noreturn)) -int ____ilog2_NaN(void); - /* * non-constant log of base 2 calculators * - the arch may override these in asm/bitops.h if they can be implemented @@ -85,7 +79,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n) #define ilog2(n) \ ( \ __builtin_constant_p(n) ? ( \ - (n) < 1 ? ____ilog2_NaN() : \ + (n) < 2 ? 0 : \ (n) & (1ULL << 63) ? 63 : \ (n) & (1ULL << 62) ? 62 : \ (n) & (1ULL << 61) ? 61 : \ @@ -148,10 +142,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n) (n) & (1ULL << 4) ? 4 : \ (n) & (1ULL << 3) ? 3 : \ (n) & (1ULL << 2) ? 2 : \ - (n) & (1ULL << 1) ? 1 : \ - (n) & (1ULL << 0) ? 0 : \ - ____ilog2_NaN() \ - ) : \ + 1 ) : \ (sizeof(n) <= 4) ? \ __ilog2_u32(n) : \ __ilog2_u64(n) \
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#52164): https://lists.yoctoproject.org/g/yocto/message/52164 Mute This Topic: https://lists.yoctoproject.org/mt/80047657/21656 Group Owner: yocto+ow...@lists.yoctoproject.org Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-