Re: [m5-dev] Multiprocessor SPARC_FS

2009-02-26 Thread Ali Saidi
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

2009-02-24 Thread nathan binkert
[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