Hi gem5 team, I'm currently using QPoints<https://github.com/bgodala/QPoints/> which helps create checkpoints for QEMU and these checkpoints can be later used for simulation in gem5. QPoints uses the starter_fs.py script from configs/example/arm/starter_fs.py which doesn't use stdlib and very old way of setting up the system for gem5. QPoints also uses a gem5 version that was 2 years ago. There has been a great amount of modifications to gem5 to make it compatible with QEMU checkpoints.
My task is to implement switching CPUs for this starter_fs.py script which I'm facing a lot of issues. I tried using the SimpleSwitchableProcessor() but I don't know how to connect that processor to the system. I also tried to use m5.switchCpus() and faced an error shown here: build/ARM/sim/simulate.cc:107: info: Entering event queue @ 9943912964000. Starting simulation... switching cpus Traceback (most recent call last): File "<string>", line 1, in <module> File "build/ARM/python/m5/main.py", line 455, in main File "/qpoints/gem5/configs/example/arm/my_fs.py", line 309, in <module> main() File "/qpoints/gem5/configs/example/arm/my_fs.py", line 297, in main m5.switchCpus(root.system, switch_cpu_list) File "build/ARM/python/m5/simulate.py", line 280, in switchCpus File "build/ARM/python/m5/SimObject.py", line 1416, in __getattr__ AttributeError: object 'TimingSimpleCPU' has no attribute 'switchedOut' (C++ object is not yet constructed, so wrapped C++ methods are unavailable.) Here is my code for implementing m5.switchCpus: switch_cpus = O3CPU(switched_out=True) switch_cpus_1 = TimingSimpleCPU(switched_out=False) switch_cpus.system = root.system switch_cpus_1.system = root.system switch_cpus.clk_domain = root.system.clk_domain switch_cpus_1.clk_domain = root.system.clk_domain switch_cpus.voltage_domain = root.system.voltage_domain switch_cpus_1.voltage_domain = root.system.voltage_domain while True: exit_event = m5.simulate(100000000) exit_cause = exit_event.getCause() switch_cpu_list = [(switch_cpus, switch_cpus_1) ] m5.switchCpus(root.system, switch_cpu_list) exit_event = m5.simulate(100000000) exit_cause = exit_event.getCause() break print(exit_event.getCause()) This old version of gem5 doesn't have stdlib for ArmBoard so implementing it in the simple modern way is not possible. Plus, the author of QPoints made a great effort to modify gem5 and the script to work with QEMU checkpoints so I feel like I have to use the modified starter_fs.py script that was provided. Any guidance would be greatly appreciated! Thanks, Huy
_______________________________________________ gem5-users mailing list -- gem5-users@gem5.org To unsubscribe send an email to gem5-users-le...@gem5.org