>From Lee, Damon ([email protected])

Hi Benjamin,

Sorry to be emailing you directly, I have not subscribed to the mailing list 
yet so I am emailing you directly to avoid breaking the threading of the list.

As for your question 
(http://sel4.systems/pipermail/devel/2019-April/002346.html), the reason you 
are receiving those linker issues is because the IOMMU related functions are 
not being compiled and linked in.

This is because of the fact that the simulation option is turned on. We do not 
have support for the IOMMU in simulation mode.

So to resolve this problem, turn off the SIMULATION flag using ccmake or 
similar and make sure the KernelIOMMU flag is turned on as well.

This solution is assuming that the resulting image will be run on hardware. As 
for simulating on QEMU, I cannot help you there as most of the development has 
been on actual hardware and not on QEMU.

PS: If possible, could you help me reply to the thread so others will be able 
to see this?

Sincerely,
Damon
________________________________
Von: Devel [[email protected]]" im Auftrag von "KAP Benjamin 
[[email protected]]
Gesendet: Donnerstag, 25. April 2019 21:00
An: [email protected]
Betreff: [seL4] Undefined Reference iommu dma

Hello

I have a linking problem in the picoserver CAmkES-application which was added 2 
days ago.

Steps I did:

1) repo init -u https://github.com/seL4/camkes-manifest.git
2) repo sync
3) start docker container
4) (in new subfolder) ../init-build.sh -DPLATFORM=x86_64 -DSIMULATION=1 
-DCAMKES_APP=picoserver
(side note: aborts because picotcp folder is missing in projects folder, but 
that's easy fixed)
5) ninja

Error:
[5/16] Linking C executable projects/camkes/ethdriver.instance.bin
FAILED: projects/camkes/ethdriver.instance.bin
: && ccache /usr/bin/gcc --sysroot=/host/test  -m64  -march=nehalem 
-D__KERNEL_64__ -g  -march=nehalem -D__KERNEL_64__  -Wl,-m -Wl,elf_x86_64  
-static -nostdlib -z max-page-size=0x1000    -static -nostdlib -u _camkes_start 
-e _camkes_start  -Wl,--script=/host/test/projects/camkes/ethdriver/linker.lds 
/host/test/lib/crt1.o /host/test/lib/crti.o 
/usr/lib/gcc/x86_64-linux-gnu/6/crtbegin.o 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/__/global-components/components/Ethdriver/src/ethdriver.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/__/global-components/components/Ethdriver/src/plat/pc99/common.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/__/global-components/components/Ethdriver/src/plat/pc99/82574.c.obj
 projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/camkes.c.obj 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/camkes.simple.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/camkes.environment.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/EthDriver_seL4HardwareMMIO_0.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/irq_seL4HardwareInterrupt_0.c.obj
 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/ethdriver/client_seL4Ethdriver_0.c.obj
 -lgcc -lgcc_eh  libsel4/libsel4.a 
projects/camkes-tool/libsel4camkes/libsel4camkes.a 
projects/seL4_libs/libsel4sync/libsel4sync.a 
projects/util_libs/libutils/libutils.a 
projects/seL4_libs/libsel4vka/libsel4vka.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/util_libs/libplatsupport/libplatsupport.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4muslcsys/libsel4muslcsys.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4vka/libsel4vka.a 
projects/seL4_libs/libsel4allocman/libsel4allocman.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4simple/libsel4simple.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/util_libs/libethdrivers/libethdrivers.a 
projects/projects_libs/libvirtqueue/libvirtqueue.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/seL4_libs/libsel4simple-default/libsel4simple-default.a 
projects/seL4_libs/libsel4debug/libsel4debug.a 
projects/seL4_libs/libsel4simple/libsel4simple.a 
projects/util_libs/libelf/libelf.a projects/util_libs/libcpio/libcpio.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4vka/libsel4vka.a libsel4/libsel4.a 
projects/util_libs/libplatsupport/libplatsupport.a 
projects/util_libs/libutils/libutils.a projects/musllibc/build-temp/lib/libc.a 
projects/util_libs/libpicotcp/picotcp_external/picotcp/build//lib/libpicotcp.a  
   -lgcc -lgcc_eh  libsel4/libsel4.a 
projects/camkes-tool/libsel4camkes/libsel4camkes.a 
projects/seL4_libs/libsel4sync/libsel4sync.a 
projects/util_libs/libutils/libutils.a 
projects/seL4_libs/libsel4vka/libsel4vka.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/util_libs/libplatsupport/libplatsupport.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4muslcsys/libsel4muslcsys.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4vka/libsel4vka.a 
projects/seL4_libs/libsel4allocman/libsel4allocman.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4simple/libsel4simple.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/util_libs/libethdrivers/libethdrivers.a 
projects/projects_libs/libvirtqueue/libvirtqueue.a 
projects/seL4_libs/libsel4utils/libsel4utils.a 
projects/seL4_libs/libsel4platsupport/libsel4platsupport.a 
projects/seL4_libs/libsel4simple-default/libsel4simple-default.a 
projects/seL4_libs/libsel4debug/libsel4debug.a 
projects/seL4_libs/libsel4simple/libsel4simple.a 
projects/util_libs/libelf/libelf.a projects/util_libs/libcpio/libcpio.a 
projects/seL4_libs/libsel4vspace/libsel4vspace.a 
projects/seL4_libs/libsel4vka/libsel4vka.a libsel4/libsel4.a 
projects/util_libs/libplatsupport/libplatsupport.a 
projects/util_libs/libutils/libutils.a projects/musllibc/build-temp/lib/libc.a 
projects/util_libs/libpicotcp/picotcp_external/picotcp/build//lib/libpicotcp.a 
/usr/lib/gcc/x86_64-linux-gnu/6/crtend.o /host/test/lib/crtn.o -o 
projects/camkes/ethdriver.instance.bin && :

/usr/bin/ld: 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/__/global-components/components/Ethdriver/src/plat/pc99/common.c.obj:
 in function `camkes_iommu_dma_alloc':
/host/test/../projects/global-components/components/Ethdriver/src/plat/pc99/common.c:48:
 undefined reference to `sel4utils_iommu_dma_alloc_iospace'
/usr/bin/ld: 
projects/camkes/CMakeFiles/ethdriver.instance.bin.dir/__/global-components/components/Ethdriver/src/plat/pc99/common.c.obj:
 in function `pc99_eth_setup':
/host/test/../projects/global-components/components/Ethdriver/src/plat/pc99/common.c:71:
 undefined reference to `simple_get_iospace'
/usr/bin/ld: 
/host/test/../projects/global-components/components/Ethdriver/src/plat/pc99/common.c:88:
 undefined reference to `sel4utils_make_iommu_dma_alloc'


I checked all the files in the Ethdriver component and for me it seems that all 
should be fine, thus I cannot find/see the error (or the missing configuration).
(The only file I edited was picoserver.camkes but that is irrelevant.)

Any help/hint would be very appreciated.

Best regards,

Benjamin



_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to