Re: [m5-dev] Multiprocessor SPARC_FS
Here are some changes that get the system booting into solaris. It gets quite far into the boot process, but eventually the simulation terminates because MaxTick has been reached (all CPUs went to sleep and never woke up again). The 2nd CPU is alive and executes the hypervisor, but I don't know where it goes from there or what the problem is. It will probably take a good bit of digging through the solaris source code to figure out what is supposed to happen next. Additionally, I had to put two hacks in to swizzle the CPU id numbers. For whatever reason the hypervisor insists that the second CPU should be id 4 while m5 would like it to be id 1. I tried changing the hypervisor description file and changing cpu4 to cpu1, however that didn't seem to change the id. The CPUs can be out of range, because the reset code idles every single potential CPU in the system. Ones that don't exist are just ignored. Ali 1g2p-hv.bin Description: application/macbinary 1g2p-md.bin Description: application/macbinary start_sparc_2cpu.diff Description: Binary data On Feb 24, 2009, at 6:33 PM, nathan binkert wrote: [Polina- We should really have these conversations on the list so everyone can benefit from them and to give others the chance to respond] Hi Nate, I am trying to get SPARC_FS to run. I am trying to run two processors and what I have so far is the following: Processor 0 gets activated and runs. I found in utility.hh the following comment: Other CPUs will get activated by IPIs. So, then several generateIpi calls are made but they are not doing anything because the cpu number is out of range. Finally, the cpu number is inside the range and it turns out that it is a halt instruction for processor 1 which was never activated. So assertion (status == Running) fails. I am worried about how the cpu number for Iob write is generated; specifically, I think it's troublesome that cpu can be out of range. I think then a couple things could be happening: 1. This is a halt, but it should be for processor 0 2. This Iob is wrong altogether Would you mind looking at the output? Thanks. output: command line: build/SPARC_FS/m5.debug --trace-flags=SimpleCPU configs/example/fs.py -n 2 Global frequency set at 1 ticks per second warn: No kernel set for full system simulation. Assuming you know what you're doing... Listening for t1000 connection on port 3456 0: system.t1000.htod: Real-time clock set to Thu Jan 1 00:00:00 2009 0: system.t1000.htod: Real-time clock set to 1230768000 Listening for t1000 connection on port 3457 0: global: Started instantiating 0: global: Done instantiating 0: global: Started instantiating 0: global: Done instantiating 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7001 0: system.remote_gdb.listener: listening for remote gdb #1 on port 7000 REAL SIMULATION **SimStartup*** starting up 0 0: global: Activation record 0: system.cpu0: ActivateContext 0 (0 cycles) starting up 1 warn: Entering event queue @ 0. Starting simulation... 0: system.cpu0: Tick 500: system.cpu0: Tick 1000: system.cpu0: Tick 1500: system.cpu0: Tick 2000: system.cpu0: Tick 2500: system.cpu0: Tick 3000: system.cpu0: Tick 3500: system.cpu0: Tick 4000: system.cpu0: Tick 4500: system.cpu0: Tick 5000: system.cpu0: Tick 5500: system.cpu0: Tick 6000: system.cpu0: Tick 6500: system.cpu0: Tick 7000: system.cpu0: Tick 7500: system.cpu0: Tick 8000: system.cpu0: Tick 8500: system.cpu0: Tick 9000: system.cpu0: Tick 9500: system.cpu0: Tick 1: system.cpu0: Tick 10500: system.cpu0: Tick 11000: system.cpu0: Tick 11500: system.cpu0: Tick 12000: system.cpu0: Tick 12500: system.cpu0: Tick 13000: system.cpu0: Tick 13500: system.cpu0: Tick 14000: system.cpu0: Tick 14500: system.cpu0: Tick 15000: system.cpu0: Tick 15500: system.cpu0: Tick 16000: system.cpu0: Tick 16500: system.cpu0: Tick 17000: system.cpu0: Tick 17500: system.cpu0: Tick 18000: system.cpu0: Tick 18500: system.cpu0: Tick 19000: system.cpu0: Tick 19500: system.cpu0: Tick 2: system.cpu0: Tick 20500: system.cpu0: Tick 21000: system.cpu0: Tick 21500: system.cpu0: Tick 22000: system.cpu0: Tick 22500: system.cpu0: Tick 23000: system.cpu0: Tick 23500: system.cpu0: Tick generateIpi? CPU number is out of range 24000: system.cpu0: Tick 24500: system.cpu0: Tick 25000: system.cpu0: Tick 25500: system.cpu0: Tick 26000: system.cpu0: Tick 26500: system.cpu0: Tick 27000: system.cpu0: Tick 27500: system.cpu0: Tick 28000: system.cpu0: Tick 28500: system.cpu0: Tick 29000: system.cpu0: Tick generateIpi? CPU number is out of range 29500: system.cpu0: Tick 3: system.cpu0: Tick 30500: system.cpu0: Tick 31000: system.cpu0: Tick 31500: system.cpu0: Tick 32000: system.cpu0: Tick 32500: system.cpu0: Tick
[m5-dev] Multiprocessor SPARC_FS
[Polina- We should really have these conversations on the list so everyone can benefit from them and to give others the chance to respond] Hi Nate, I am trying to get SPARC_FS to run. I am trying to run two processors and what I have so far is the following: Processor 0 gets activated and runs. I found in utility.hh the following comment: Other CPUs will get activated by IPIs. So, then several generateIpi calls are made but they are not doing anything because the cpu number is out of range. Finally, the cpu number is inside the range and it turns out that it is a halt instruction for processor 1 which was never activated. So assertion (status == Running) fails. I am worried about how the cpu number for Iob write is generated; specifically, I think it's troublesome that cpu can be out of range. I think then a couple things could be happening: 1. This is a halt, but it should be for processor 0 2. This Iob is wrong altogether Would you mind looking at the output? Thanks. output: command line: build/SPARC_FS/m5.debug --trace-flags=SimpleCPU configs/example/fs.py -n 2 Global frequency set at 1 ticks per second warn: No kernel set for full system simulation. Assuming you know what you're doing... Listening for t1000 connection on port 3456 0: system.t1000.htod: Real-time clock set to Thu Jan 1 00:00:00 2009 0: system.t1000.htod: Real-time clock set to 1230768000 Listening for t1000 connection on port 3457 0: global: Started instantiating 0: global: Done instantiating 0: global: Started instantiating 0: global: Done instantiating 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7001 0: system.remote_gdb.listener: listening for remote gdb #1 on port 7000 REAL SIMULATION **SimStartup*** starting up 0 0: global: Activation record 0: system.cpu0: ActivateContext 0 (0 cycles) starting up 1 warn: Entering event queue @ 0. Starting simulation... 0: system.cpu0: Tick 500: system.cpu0: Tick 1000: system.cpu0: Tick 1500: system.cpu0: Tick 2000: system.cpu0: Tick 2500: system.cpu0: Tick 3000: system.cpu0: Tick 3500: system.cpu0: Tick 4000: system.cpu0: Tick 4500: system.cpu0: Tick 5000: system.cpu0: Tick 5500: system.cpu0: Tick 6000: system.cpu0: Tick 6500: system.cpu0: Tick 7000: system.cpu0: Tick 7500: system.cpu0: Tick 8000: system.cpu0: Tick 8500: system.cpu0: Tick 9000: system.cpu0: Tick 9500: system.cpu0: Tick 1: system.cpu0: Tick 10500: system.cpu0: Tick 11000: system.cpu0: Tick 11500: system.cpu0: Tick 12000: system.cpu0: Tick 12500: system.cpu0: Tick 13000: system.cpu0: Tick 13500: system.cpu0: Tick 14000: system.cpu0: Tick 14500: system.cpu0: Tick 15000: system.cpu0: Tick 15500: system.cpu0: Tick 16000: system.cpu0: Tick 16500: system.cpu0: Tick 17000: system.cpu0: Tick 17500: system.cpu0: Tick 18000: system.cpu0: Tick 18500: system.cpu0: Tick 19000: system.cpu0: Tick 19500: system.cpu0: Tick 2: system.cpu0: Tick 20500: system.cpu0: Tick 21000: system.cpu0: Tick 21500: system.cpu0: Tick 22000: system.cpu0: Tick 22500: system.cpu0: Tick 23000: system.cpu0: Tick 23500: system.cpu0: Tick generateIpi? CPU number is out of range 24000: system.cpu0: Tick 24500: system.cpu0: Tick 25000: system.cpu0: Tick 25500: system.cpu0: Tick 26000: system.cpu0: Tick 26500: system.cpu0: Tick 27000: system.cpu0: Tick 27500: system.cpu0: Tick 28000: system.cpu0: Tick 28500: system.cpu0: Tick 29000: system.cpu0: Tick generateIpi? CPU number is out of range 29500: system.cpu0: Tick 3: system.cpu0: Tick 30500: system.cpu0: Tick 31000: system.cpu0: Tick 31500: system.cpu0: Tick 32000: system.cpu0: Tick 32500: system.cpu0: Tick 33000: system.cpu0: Tick 33500: system.cpu0: Tick 34000: system.cpu0: Tick 34500: system.cpu0: Tick generateIpi? CPU number is out of range 35000: system.cpu0: Tick 35500: system.cpu0: Tick 36000: system.cpu0: Tick 36500: system.cpu0: Tick 37000: system.cpu0: Tick 37500: system.cpu0: Tick 38000: system.cpu0: Tick 38500: system.cpu0: Tick 39000: system.cpu0: Tick 39500: system.cpu0: Tick 4: system.cpu0: Tick generateIpi? CPU number is out of range 40500: system.cpu0: Tick 41000: system.cpu0: Tick 41500: system.cpu0: Tick 42000: system.cpu0: Tick 42500: system.cpu0: Tick 43000: system.cpu0: Tick 43500: system.cpu0: Tick 44000: system.cpu0: Tick 44500: system.cpu0: Tick 45000: system.cpu0: Tick 45500: system.cpu0: Tick generateIpi? CPU number is out of range 46000: system.cpu0: Tick 46500: system.cpu0: Tick 47000: system.cpu0: Tick 47500: system.cpu0: Tick 48000: system.cpu0: Tick 48500: system.cpu0: Tick 49000: system.cpu0: Tick 49500: system.cpu0: Tick 5: system.cpu0: Tick 50500: system.cpu0: Tick 51000: system.cpu0: Tick generateIpi? CPU number is out of range