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

Reply via email to