L4Linux Kernel module

ba_f ba_f at rbg.informatik.tu-darmstadt.de
Mon Jan 11 22:44:54 CET 2016


All right,
thanks Adam.

Unfortunately, there's still a problem.

I managed to build and run(!) a simple 'hello.ko'.
But, i fail with more complex modules.
Building works, but when loading my module with 'insmod' i get faults:
   Page fault (non-resolved): pfa=9 pc=1011cec
   Non-resolvable page fault at 9, ip 1011cec.

I'm sure the fault is not caused by my code because there is the same 
issue with legacy drivers.
But, i guess something is wrong with the build process.
e.g. let's take CONFIG_TCG_TPM in 'src/l4linux/driver/char/tpm'.
This one does build and run successfully when setting CONFIG_TCG_TPM=m 
in 'obj/l4linux/.config' and than building complete l4linux.
But it does not build when going to 'src/l4linux/driver/char/tpm' and 
'make -C $L4re/obj/l4linux/arm-mp M=$PWD 
CROSS_COMPILE=arm-linux-gnueabihf- L4ARCH=arm CONFIG_TCG_TPM=m  modules 
V=1'.

It gets me this output:


make: Entering directory 
'/home/ba_f/l4re-snapshot-2015123115/obj/l4linux/arm-mp'
make -C /home/ba_f/l4re-snapshot-2015123115/src/l4linux 
O=/home/ba_f/l4re-snapshot-2015123115/obj/l4linux/arm-mp/. modules
make -C /home/ba_f/l4re-snapshot-2015123115/obj/l4linux/arm-mp 
KBUILD_SRC=skins/classic/home/ba_f/l4re-snapshot-2015123115/src/l4linux 
\
-f /home/ba_f/l4re-snapshot-2015123115/src/l4linux/Makefile modules
test -e include/generated/autoconf.h -a -e include/config/auto.conf || 
(		\
echo >&2;							\
echo >&2 "  ERROR: Kernel configuration is invalid.";		\
echo >&2 "         include/generated/autoconf.h or 
include/config/auto.conf are missing.";\
echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to 
fix it.";	\
echo >&2 ;							\
/bin/false)
mkdir -p 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/.tmp_versions 
; rm -f 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/.tmp_versions/*
make -f 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/scripts/Makefile.build 
obj=/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm
   arm-linux-gnueabihf-gcc 
-Wp,-MD,/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/.tpm-interface.o.d 
  -nostdinc -isystem 
/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/include 
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include 
-Iarch/l4/include/generated/uapi -Iarch/l4/include/generated  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include -Iinclude 
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/uapi 
-Iarch/l4/include/generated/uapi 
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/uapi 
-Iinclude/generated/uapi -include 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/linux/kconfig.h  
  -I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm 
-D__KERNEL__  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/asm/l4-arch 
-Iarch/l4/include/asm/l4-arch  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/arm/include/generated 
-Iarch/arm/include/generated  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/arm/include/generated/uapi 
-Iarch/arm/include/generated/uapi   
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/asm/mach-arm/generic 
   
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/asm/plat-arm/generic 
   -I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/arm/include  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/asm/arch-arm 
-Iarch/l4/include/asm/arch-arm  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include/asm/orig-arch 
-Iarch/l4/include/asm/orig-arch  
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/l4/include 
-Iarch/l4/include   
-I/home/ba_f/l4re-snapshot-2015123115/src/l4linux/arch/arm/include/uapi  
  -I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include/arm/l4f   
-I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include/arm   
-I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include/l4f   
-I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include   
-I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include/contrib/libstdc++-v3 
   
-I/home/ba_f/l4re-snapshot-2015123115/obj/l4/arm-ca/include/contrib/libio-io 
-DL4API_l4f -DL4SYS_USE_UTCB_WRAP=1 -DTEXT_OFFSET=0x02000000 -Wall 
-Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing 
-fno-common -Werror-implicit-function-declaration -Wno-format-security 
-std=gnu89 -pipe -msoft-float -DARCH_arm -fno-ipa-sra -mabi=aapcs-linux 
-mno-thumb-interwork -mfpu=vfp -funwind-tables -marm 
-D__LINUX_ARM_ARCH__=6 -march=armv6k -mtune=arm1136j-s -msoft-float 
-Uarm -fno-dwarf2-cfi-asm -fno-delete-null-pointer-checks -O2 
--param=allow-store-data-races=0 -Wframe-larger-than=1024 
-fno-stack-protector -Wno-unused-but-set-variable -fomit-frame-pointer 
-fno-var-tracking-assignments -g -Wdeclaration-after-statement 
-Wno-pointer-sign -fno-strict-overflow -fconserve-stack 
-Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO  
-DMODULE  -D"KBUILD_STR(s)=#s" 
-D"KBUILD_BASENAME=KBUILD_STR(tpm_interface)"  
-D"KBUILD_MODNAME=KBUILD_STR(tpm)" -c -o 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.o 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:679:5: 
error: redefinition of ‘tpm_pcr_read’
  int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf)
      ^
In file included from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm.h:28:0,
                  from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:33:
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/linux/tpm.h:54:19: 
note: previous definition of ‘tpm_pcr_read’ was here
  static inline int tpm_pcr_read(u32 chip_num, int pcr_idx, u8 *res_buf) 
{
                    ^
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:714:5: 
error: redefinition of ‘tpm_pcr_extend’
  int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 *hash)
      ^
In file included from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm.h:28:0,
                  from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:33:
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/linux/tpm.h:57:19: 
note: previous definition of ‘tpm_pcr_extend’ was here
  static inline int tpm_pcr_extend(u32 chip_num, int pcr_idx, const u8 
*hash) {
                    ^
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:804:5: 
error: redefinition of ‘tpm_send’
  int tpm_send(u32 chip_num, void *cmd, size_t buflen)
      ^
In file included from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm.h:28:0,
                  from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:33:
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/linux/tpm.h:60:19: 
note: previous definition of ‘tpm_send’ was here
  static inline int tpm_send(u32 chip_num, void *cmd, size_t buflen) {
                    ^
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:980:5: 
error: redefinition of ‘tpm_get_random’
  int tpm_get_random(u32 chip_num, u8 *out, size_t max)
      ^
In file included from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm.h:28:0,
                  from 
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.c:33:
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/include/linux/tpm.h:63:19: 
note: previous definition of ‘tpm_get_random’ was here
  static inline int tpm_get_random(u32 chip_num, u8 *data, size_t max) {
                    ^
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/scripts/Makefile.build:258: 
recipe for target 
'/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.o' 
failed
make[3]: *** 
[/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm/tpm-interface.o] 
Error 1
/home/ba_f/l4re-snapshot-2015123115/src/l4linux/Makefile:1380: recipe 
for target 
'_module_/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm' 
failed
make[2]: *** 
[_module_/home/ba_f/l4re-snapshot-2015123115/src/l4linux/drivers/char/tpm] 
Error 2
Makefile:146: recipe for target 'sub-make' failed
make[1]: *** [sub-make] Error 2
Makefile:24: recipe for target '__sub-make' failed
make: *** [__sub-make] Error 2
make: Leaving directory 
'/home/ba_f/l4re-snapshot-2015123115/obj/l4linux/arm-mp'



Sorry, for all the shit.
Hopefully, you see the problem quick.
Guess your more familiar with the build process.

Greets,
ba_f


Am 2016-01-06 23:10, schrieb Adam Lackorzynski:
> On Wed Jan 06, 2016 at 16:59:11 +0100, ba_f wrote:
>> Am 2016-01-04 23:37, schrieb Adam Lackorzynski:
>> >On Mon Jan 04, 2016 at 16:08:55 +0100, ba_f wrote:
>> >>are there any Makefiles for building a L4Linux Kernel Module?
>> >>Or can i just cross-compile for my ARCH, although the driver uses
>> >>L4-IPC?
>> >
>> >There's no difference, so the standard way of building a module should
>> >just work (make -C ... M=...).
>> >
>> >
>> >
>> >Adam
>> 
>> 
>> 
>> Hi there,
>> 
>> 
>> 
>> running in an Error.
>> 
>> 
>> $ make -C obj/l4linux/arm-mp M=$PWD ARCH=arm
>> CROSS_COMPILE=arm-linux-gnueabihf- modules
>> 
>> make: Entering directory 'obj/l4linux/arm-mp'
>>   CC [M]  hello.o
>> In file included from src/l4linux/include/asm-generic/int-ll64.h:10:0,
>>                  from src/l4linux/arch/arm/include/asm/types.h:4,
>>                  from src/l4linux/include/uapi/linux/types.h:4,
>>                  from src/l4linux/include/linux/types.h:5,
>>                  from src/l4linux/include/linux/list.h:4,
>>                  from src/l4linux/include/linux/module.h:9,
>>                  from hello.c:11:
>> src/l4linux/include/uapi/asm-generic/int-ll64.h:11:29: fatal error:
>> asm/bitsperlong.h: No such file or directory
>>  #include <asm/bitsperlong.h>
>> 
>> 
>> The missing header has been generated in
>> 'obj/l4linux/arm-mp/arch/l4/include/generated/asm/bitsperlong.h' but 
>> isn't
>> found.
>> 
>> 
>> Can i set an include path for Kbuild?
>> Or does this file has to be copied to a proper location?
> 
> The ARCH=arm is wrong. L4ARCH=arm is better but you can also just omit 
> it.
> 
> 
> 
> Adam





More information about the l4-hackers mailing list