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

Hongzhi, Song hongzhi.song at windriver.com
Wed Sep 4 10:07:03 UTC 2019


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.

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.

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
>>
>


More information about the Openembedded-core mailing list