Trouble with TVM -> gem5 for Arm cross compilation

Hi all,
I’m trying to use tvm/apps/bundle_deploy to compile and run the given Mobilenet model on gem5 with an Arm cross compilation target. However, although the ‘make demo_static’ runs without error, simulating with gem5 produces page fault errors relating to TVMLoadParams:

user@computer$ ~/gem5/build/ARM/gem5.opt --debug-flags=Exec --debug-start=7380000000 ~/gem5/configs/example/se.py -c ~/tvm/apps/bundle_deploy/build/demo_static -o ~/tvm/apps/bundle_deploy/build/cat.bin

7389272500: system.cpu: T0 : @TVMGraphRuntime_LoadParams+167 : b <TVMGraphRuntime_LoadParams+205> : IntAlu : Predicated False\

7389273500: system.cpu: T0 : @TVMGraphRuntime_LoadParams+169 : ldrd.w r6, r7, [r1, #0] : MemRead : A=0xa71cf

panic: Page table fault when accessing virtual address 0x600
Memory Usage: 712300 KBytes
Program aborted at tick 7389274000

For my llvm targets in build_model.py:
llvm --system-lib -device=arm_cpu -target=arm-linux-gnueabihf -mfloat-abi=hard

For my arm-linux-gnueabihf-gcc and arm-linux-gnueabihf-g++ flags in the Makefile:
-Wall -std=c++14 -O2 -fPIC -g -static -mfloat-abi=hard
-Wall -std=c99 -O2 -fPIC -g -static mfloat-abi=hard

running the executable demo_static with qemu-arm-static yields:

user@computer$ ~/tvm/apps/bundle_deploy$ build/demo_static build/cat.bin

The maximum position in output vector is: 1, with max-value 0.614223.
timing: 8.46 ms (create), 1.25 ms (set_input), 3818.98 ms (run), 0.10 ms (get_output), 0.30 ms (destroy)

This runs, but does have a different output than when I run natively on x86_64 architecture:

The maximum position in output vector is: 278, with max-value 0.590908.
timing: 0.66 ms (create), 0.23 ms (set_input), 4.32 ms (run), 0.00 ms (get_output), 0.02 ms (destroy)

Any help would be appreciated :slight_smile:

Did you happen to fix this problem?