[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