[OE-core] [PATCH] kernel-devsrc: copy mmiowb.h and modpost from ${B} of kernel

Bruce Ashfield bruce.ashfield at gmail.com
Wed Sep 4 12:34:35 UTC 2019


On Wed, Sep 4, 2019 at 6:07 AM Hongzhi, Song <hongzhi.song at windriver.com> wrote:
>
>
> On 9/4/19 11:55 AM, Bruce Ashfield wrote:
> > On Tue, Sep 3, 2019 at 9:43 PM Hongzhi.Song <hongzhi.song at windriver.com> wrote:
> >> There are two errors when compile an out of tree kernel module
> >> using sdk:
> >>
> > This is not universally true. Can you expand on what kernel version
> > and architectures you are building ? I'm able to build kernel modules
> > across all the arches I'm currently testing, so I'd like to capture
> > your exact config in the long log. Neither is the autobuilder showing
> > any errors.
>
> Hi Bruce,
>
>
> kernel version: 5.0.19
>
> git clone poky
>
> echo  TOOLCHAIN_HOST_TASK_append = " nativesdk-openssl-dev
> nativesdk-bison nativesdk-flex"
>           TOOLCHAIN_TARGET_TASK_append = " python-dev kernel-dev
> kernel-devsrc")
>
>           >> conf/local.conf
>
> Other config is default.
>
>
> bitbake core-image-minimal &&  bitbake core-image-minimal -c populate_sdk
>
> ./tmp/deploy/sdk/xxx.sh
>
> cd ${Your SDK path}/sysroots/xxx/usr/src/kernel
>
> make scripts
>
> Then you can build yourself module. And you will meet missing some head
> files and scripts/mod/modpost.
>
>
> I test qemux86-64 and qemuarm.
>
> Both of above arch miss different head files, which all of them
> generated in ${B}/arch/${ARCH}/include/generated/asm
>
> (qemux86-64 needs asm/early_ioremap.h and asm/mmiowb.h
>
> qemuarm needs asm/bitsperlong.h)
>
>
> >
> >> 1. "In file included from ./include/linux/seqlock.h:36:0,
> >>                   from ./include/linux/time.h:6,
> >>                   from ./include/linux/stat.h:19,
> >>                   from ./include/linux/module.h:10,
> >>                   from kernel-module/char.c:1:
> >> ./include/linux/spinlock.h:60:10: fatal error: asm/mmiowb.h: No such
> >> file or directory"
> >>
> >> mmiowb.h is generated to ${B}/arch/${ARCH}/include/generated/asm/.
> >>
> >> And there is only generated/ under ${B}/arch/${ARCH}/include/,
> >> so I copy whole ${B}/arch/${ARCH}/include/ to $kerneldir/build/
> >> in case of other files under generated/ is needed in the future.
> >>
> >> 2. "/bin/sh: scripts/mod/modpost: No such file or directory"
> >>
> >> Copy above files or directory to $kerneldir/build/ fix the errors.
> >>
> >> Signed-off-by: Hongzhi.Song <hongzhi.song at windriver.com>
> >> ---
> >>   meta/recipes-kernel/linux/kernel-devsrc.bb | 6 ++++++
> >>   1 file changed, 6 insertions(+)
> >>
> >> diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
> >> index 3900489..feff9f1 100644
> >> --- a/meta/recipes-kernel/linux/kernel-devsrc.bb
> >> +++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
> >> @@ -80,6 +80,12 @@ do_install() {
> >>
> >>          cp .config $kerneldir/build
> >>
> >> +       if [ -d arch/${ARCH}/include ]; then
> >> +           cp -a --parents arch/${ARCH}/include $kerneldir/build/
> >> +       fi
> > Just copy the files you need, not the entire directory.
>
>
> Just as explained above, exactly speaking I think include/generated is
> necessary.

It shouldn't be. The point of what we include in devsrc is that it can
regenerate all these files either on target, or the SDK.

>
> ps: only generated/ under include/.
>
>
>
> >
> >> +
> >> +       cp --parents scripts/mod/modpost $kerneldir/build/
> > We shouldn't be copying binaries or scripts. They are regenerated on target.
> >
> > Bruce
>
>
> But scripts/mod/modpost is needed when compile a module by sdk.

yes, that is expected. But 'make scripts prepare' should be recreating
them. Is that not working for you ?

We can't copy the binaries, since you'll get QA errors depending on
your host/target arch combination.

Bruce

>
> Otherwise it will show error info:
>
> "
>
> /bin/sh: scripts/mod/modpost: No such file or directory
> scripts/Makefile.modpost:92: recipe for target '__modpost' failed
>
> "
>
>
> --Hongzhi
>
> >
> >> +
> >>          # This scripts copy blow up QA, so for now, we require a more
> >>          # complex 'make scripts' to restore these, versus copying them
> >>          # here. Left as a reference to indicate that we know the scripts must
> >> --
> >> 2.8.1
> >>
> >



-- 
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


More information about the Openembedded-core mailing list