riscy-OOO icon indicating copy to clipboard operation
riscy-OOO copied to clipboard

error during the boot (risc-pk/bbl) on F1 (AWS)

Open yswntht opened this issue 5 years ago • 3 comments

Hi @sizhuo-zhang,

I see the following error when I boot F1 with (riscv-pk/bbl and rom_core_1). Have you experienced this before?

ubuntu@ip-192-168-0-207:~/riscy-OOO/procs/build/RV64G_OOO.core_1.core_SMALL.cach
e_LARGE.weak.l1_cache_lru.check_deadlock/awsf1/bin$ ./ubuntu.exe --core-num $N --mem-size 2048 --ignore-user-stucks 1000000 --rom rom_core_$N --elf bbl
subprocess pid 8767 completed status=0 0
[initPortalHardwareOnce:284] fd 6 len 0
[checkSignature:176] read status from '/dev/connectal' was only 0 bytes long
checkSignature: driver 'pcieportal.c' signature mismatch 9a4e6520472c69f1577083d9f60b826c 47e961a4b445762e6b6024086a3ff16b
[checkSignature:170] failed to open /dev/portalmem No such file or directory
./ubuntu.exe: symbol lookup error: ./ubuntu.exe: undefined symbol: _Z8load_elfPKcP7memif_tPm

Any pointers would be greatly helpful. Thanks!

yswntht avatar Jul 03 '19 08:07 yswntht

It seems that ubuntu.exe is not linked properly with libfesvr.so. load_elf and memif_t are both defined in riscv-fesvr. Try "ldd ubuntu.exe" to see if any .so is missing.

Besides, have you run build-fesvr.sh successfully on F1 before you do "make exe" on F1? Or is it because libfesvr.so is not in your $LD_LIBRARY_PATH? Sourcing setup.sh should have added it to $LD_LIBRARY_PATH.

sizhuo-zhang avatar Jul 03 '19 17:07 sizhuo-zhang

I followed the steps. Here is the output on 'ldd ubuntu.exe',

ubuntu@ip-192-168-0-13:~/riscy-OOO/procs/build/RV64G_OOO.core_1.core_SMALL.cache_LARGE.weak.l1_cache_lru.check_deadlock/awsf1/bin$ ldd ubuntu.exe 
	linux-vdso.so.1 =>  (0x00007ffe95dd5000)
	libfesvr.so => /home/ubuntu/riscy-OOO/tools/RV64G/lib/libfesvr.so (0x00007fe1b4eac000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe1b4c8f000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe1b490d000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe1b46f7000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe1b432d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fe1b50d6000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe1b4024000)

on flashing F1, and running 'ubuntu.exe', I see a different error now.

ubuntu@ip-192-168-0-13:~/riscy-OOO/procs/build/RV64G_OOO.core_1.core_SMALL.cache_LARGE.weak.l1_cache_lru.check_deadlock/awsf1/bin$  ./ubuntu.exe --core-num 1 --mem-size 2048 --ignore-user-stucks 1000000 --rom rom_core_1 --elf bbl
subprocess pid 28930 completed status=0 0
[initPortalHardwareOnce:284] fd 6 len 0
[checkSignature:176] read status from '/dev/connectal' was only 0 bytes long
checkSignature: driver 'pcieportal.c' signature mismatch 9a4e6520472c69f1577083d9f60b826c 47e961a4b445762e6b6024086a3ff16b
[checkSignature:170] failed to open /dev/portalmem No such file or directory
ubuntu.exe: ../../riscv-fesvr/fesvr/elfloader.cc:27: std::map<std::__cxx11::basic_string<char>, long unsigned int> load_elf(const char*, memif_t*, reg_t*): Assertion `buf != MAP_FAILED' failed.
Aborted (core dumped)

yswntht avatar Jul 04 '19 10:07 yswntht

According to the outputs, things fail when we try to call the load_elf function in riscv-fesvr to parse the boot-rom elf file rom_core_1. The specific failure point is when load_elf function tries to mmap file rom_core_1 (riscv-fesvr/fesvr/elfloader.cc line 26). You can add a line to print out errno to see the cause of the mmap failure, and then decide how to fix the issue.

Also make sure you are following the steps in readme to use all the submodules in this repo (e.g., riscv gcc, pk, etc.) to compile things. The official riscv-tools codebase evolves too fast, and some more up-to-date commits may not work with our setup.

sizhuo-zhang avatar Jul 04 '19 18:07 sizhuo-zhang