[Gems-users] Ruby crashing at a LDDA instruction in Sunfire target


Date: Tue, 22 Jun 2010 17:34:37 +0200
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Subject: [Gems-users] Ruby crashing at a LDDA instruction in Sunfire target
Hello,

I am simulating a 8-processor Linux 2.6.30.10 system in the Sunfire
target using Simics 3.0.31 and Gems 2.1.1 (Ruby). Simics alone runs
the simulation fine. After loading Ruby successfully, the simulation
goes on fine too until it reaches a LDDA instruction or a LDSTUB
instruction (and maybe others).

As far as I know, those two instructions are divided in
sub-instructions, so maybe the problem is related to that.

Also, it happens on both the MOESI_CMP_directory and
MSI_MOSI_CMP_directory protocols that I am using.

In addition, I have noticed that there is special code for the LDDA
instruction in simics/{interface.C,SimicsProcessor.C,SimicsDriver.C}
around #ifdef SPARC blocks.

The reported error follows:

simics> read-configuration sunfire-linux.conf
simics> run-command-file load-ruby.simics
Turning I-STC off and flushing old data
Turning D-STC off and flushing old data
The switch time will change to 1 cycles (for CPU-0) once all
processors have synchronized.
successful installation of the ruby timing model.
Ruby Timing Mode
Creating event queue...
Creating event queue done
Creating system...
  Processors: 8
Creating system done
Establishing Contiguous Address Space Mappings...Done.
Ruby initialization complete
Clearing stats...Done.
simics> r
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:327:
SIMICS_read_physical_memory: raised exception.
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:327:
SIMICS_read_physical_memory: raised exception.
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:328: Physical memory
read raised exception
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:328: Physical memory
read raised exception
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:329: [0x1be00020d18,
line 0x1be00020d00]
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:329: [0x1be00020d18,
line 0x1be00020d00]
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:330: 0
Warning: in fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:330: 0
failed assertion '0' at fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:331
failed assertion '0' at fn integer_t SIMICS_read_physical_memory(int,
physical_address_t, int) in simics/interface.C:331
At this point you might want to attach a debug to the running and get to the
crash site; otherwise press enter to continue
PID: 4918
Abort (SIGABRT) in main thread
The simulation state has been corrupted. Simulation cannot continue.
Please restart Simics.
[cpu0] v:0x0000000000420d18 p:0x00000020d18  ldda [%g1 + %g0] 0x24,
%g4  # ASI_NUCLEUS_QUAD_LDD
simics>

Is it possible to use Ruby on top of the Sunfire target? (I was using
Serengeti but it seems pretty hard if not impossible to get a standard
Linux kernel running in it so I switched). If so, has anyone
experienced a similar problem?

Thanks in advance,
Miguel Ojeda
[← Prev in Thread] Current Thread [Next in Thread→]
  • [Gems-users] Ruby crashing at a LDDA instruction in Sunfire target, Miguel Ojeda <=