gem5-users@gem5.org

The gem5 Users mailing list

View all threads

ARM Full simulation using O3CPU and Kernel panic in simulated kernel

T
tyhtyh@mail.ustc.edu.cn
Thu, Mar 21, 2024 4:51 AM

Hi,team.
Recently, I have been trying to conduct a full simulation experiment on ARM and running some benchmarks on it. Currently, I have encountered two issues.
1.First, I will use the following command line to full simulate
./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py --cache --bootloader=/home/abc/gem5/fs_images/binaries/boot.arm64 --kernel=/home/abc/gem5/fs_images/binaries/mylinux/vmlinux --disk=/home/abc/gem5/fs_images/disks/ubuntu-18.04-arm64-docker.img --cpu-type=exynos --big-cpus=4 --little-cpus=0 --bootscript=bootscript.rcS
And use ./util/term/m5term 3456 on Terminal 2
I can successfully start the full simulation, but I need to make modifications in gem5-stable\configs\example\arm\fs_bigLITTLE.py lines 93 and 104,such asdevices.CpuCluster->devices.ArmCpuCluster.I am using gem5 Version 23.0.1.0.
Then I ran my script file on Terminal 2
script:
#!/bin/bash
echo "" > tmpout.txt
for cpu in seq 0 3; do
if [ $cpu -ne 0 ]; then
bandwidth -m 4096 -c $cpu -t 1000000 -a read &
fi
latency -m 96 -c 0 -i 1:
output=grep average tmpout.txt | awk '{ print $2 }'
echo $output
done

But after the script finished running, I tried to execute kill bandwidth,terminal 1 told me:
src/kern/linux/events.cc:64: warn: Kernel panic in simulated kernel
src/kern/linux/events.cc:67: info: Dumping kernel dmesg buffer to system.workload.dmesg...
src/kern/linux/helpers.cc:113: warn: Malformed dmesg entry:
src/kern/linux/helpers.cc:114: warn: Max length: 14684
src/kern/linux/helpers.cc:115: warn: de.len: 0
src/kern/linux/helpers.cc:116: warn: de.text_len: 0
Exiting @ tick 107002930332000 because Kernel panic in simulated kernel

So my first question is why killing the backend program can cause kernel panic, and how can I avoid it.

2.I can successfully start full simulation using the following command line
./build/ARM/gem5.opt configs/deprecated/example/fs.py --bootloader=/home/abc/gem5/fs_images/binaries/boot.arm64 --kernel=/home/abc/gem5/fs_images/binaries/mylinux/vmlinux --disk=/home/abc/gem5/fs_images/disks/ubuntu-18.04-arm64-docker.img --num-cpus=4 --caches --l2cache --mem-size=4096MB --l1i_size=32kB --l1d_size=32kB --l2_size=2MB --l1d_assoc=2 --l2_assoc=16 --cpu-type=TimingSimpleCPU
But using--cpu-type=ArmO3CPU,I have encountered the following information:
1256535500: system.terminal: attach terminal 0 src/mem/cache/mshr.cc:431: panic: panic condition (pkt->needsWritable() != pkt->isInvalidate()) && !pkt->req->isCacheMaintenance() occurred: system.cpu1.dcache.mshr_queue.entry got snoop WriteReq [80a85804:80a85807] UC where needsWritable, does not match isInvalidate Memory Usage: 4858020 KBytes Program aborted at tick 88940389500

Thank you in advance.

Hi,team. Recently, I have been trying to conduct a full simulation experiment on ARM and running some benchmarks on it. Currently, I have encountered two issues. 1.First, I will use the following command line to full simulate ./build/ARM/gem5.opt configs/example/arm/fs_bigLITTLE.py --cache --bootloader=/home/abc/gem5/fs_images/binaries/boot.arm64 --kernel=/home/abc/gem5/fs_images/binaries/mylinux/vmlinux --disk=/home/abc/gem5/fs_images/disks/ubuntu-18.04-arm64-docker.img --cpu-type=exynos --big-cpus=4 --little-cpus=0 --bootscript=bootscript.rcS And use ./util/term/m5term 3456 on Terminal 2 I can successfully start the full simulation, but I need to make modifications in gem5-stable\configs\example\arm\fs_bigLITTLE.py lines 93 and 104,such asdevices.CpuCluster->devices.ArmCpuCluster.I am using gem5 Version 23.0.1.0. Then I ran my script file on Terminal 2 script: #!/bin/bash echo "" > tmpout.txt for cpu in `seq 0 3`; do if [ $cpu -ne 0 ]; then bandwidth -m 4096 -c $cpu -t 1000000 -a read & fi latency -m 96 -c 0 -i 1: output=`grep average tmpout.txt | awk '{ print $2 }'` echo $output done But after the script finished running, I tried to execute kill bandwidth,terminal 1 told me: src/kern/linux/events.cc:64: warn: Kernel panic in simulated kernel src/kern/linux/events.cc:67: info: Dumping kernel dmesg buffer to system.workload.dmesg... src/kern/linux/helpers.cc:113: warn: Malformed dmesg entry: src/kern/linux/helpers.cc:114: warn: Max length: 14684 src/kern/linux/helpers.cc:115: warn: de.len: 0 src/kern/linux/helpers.cc:116: warn: de.text_len: 0 Exiting @ tick 107002930332000 because Kernel panic in simulated kernel So my first question is why killing the backend program can cause kernel panic, and how can I avoid it. 2.I can successfully start full simulation using the following command line ./build/ARM/gem5.opt configs/deprecated/example/fs.py --bootloader=/home/abc/gem5/fs_images/binaries/boot.arm64 --kernel=/home/abc/gem5/fs_images/binaries/mylinux/vmlinux --disk=/home/abc/gem5/fs_images/disks/ubuntu-18.04-arm64-docker.img --num-cpus=4 --caches --l2cache --mem-size=4096MB --l1i_size=32kB --l1d_size=32kB --l2_size=2MB --l1d_assoc=2 --l2_assoc=16 --cpu-type=TimingSimpleCPU But using--cpu-type=ArmO3CPU,I have encountered the following information: 1256535500: system.terminal: attach terminal 0 src/mem/cache/mshr.cc:431: panic: panic condition (pkt->needsWritable() != pkt->isInvalidate()) && !pkt->req->isCacheMaintenance() occurred: system.cpu1.dcache.mshr_queue.entry got snoop WriteReq [80a85804:80a85807] UC where needsWritable, does not match isInvalidate Memory Usage: 4858020 KBytes Program aborted at tick 88940389500 Thank you in advance.