On 9/4/19 8:34 PM, Bruce Ashfield wrote:
On Wed, Sep 4, 2019 at 6:07 AM Hongzhi, Song <hongzhi.s...@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.s...@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.s...@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 ?


Even without this patch, 'make scripts prepare' works.

So 2.7doc maybe need to be update, because 2.6doc uses 'make scripts'.

https://www.yoctoproject.org/docs/2.6/mega-manual/mega-manual.html#building-out-of-tree-modules-on-the-target


--Hongzhi



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



--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to