I've set up full system simulation with a switchable processor with
number_of_cpu=12 as follow:
processor = SimpleSwitchableProcessor(
starting_core_type=CPUTypes.KVM,
switch_core_type=CPUTypes.O3,
num_cores=number_of_cpu,
isa=isa,
)
I'm using ubuntu 18.04 custom image file
with x86-linux-kernel-5.4.0-105-generic. However during boot, gem5 fail to
wake up the CPU with following error:
[ 0.300000] x86: Booting SMP configuration:
[ 0.300000] .... node #0, CPUs: #1
[ 10.308000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#1
[ 10.308000] #2
[ 20.316000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#2
[ 20.316000] #3
[ 30.324000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#3
[ 30.324000] #4
[ 40.332000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#4
[ 40.332000] #5
[ 50.340000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#5
[ 50.340000] #6
[ 60.348000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#6
[ 60.348000] #7
[ 70.356000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#7
[ 70.356000] #8
[ 80.364000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#8
[ 80.364000] #9
[ 90.372000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#9
[ 90.372000] #10
[ 100.380000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#10
[ 100.380000] #11
[ 110.388000] smpboot: do_boot_cpu failed(-1) to wakeup CPU#11
[ 110.388000] smp: Brought up 1 node, 1 CPU
[ 110.388000] smpboot: Max logical packages: 12
However how many cpu failed to wakeup could vary ( sometimes 4, sometimes 6
and sometimes no cpu failed and no way to know beforehand ). I tried
multiple workstations (one with 6 cpu, one with 80 cpu and one with 144
cpu) yet the problem remains the same. For my simulation I need all 12 cpu
so that I could pin my workload to a specific cpu using taskset
command
before switching to o3. Any suggestions on how could I solve this issue or
approach the problem ? Any insight would be helpful.
Thanks.