Re: [Gems-users] ruby for x86: to install ruby for multiple memory objects or just one


Date: Thu, 27 Sep 2007 18:20:07 -0400
From: "soohong p kim" <spkim@xxxxxxxxxx>
Subject: Re: [Gems-users] ruby for x86: to install ruby for multiple memory objects or just one
I changed ruby.c to install ruby in just one memory object in my 
4-processor tango checkpoint file.  I had the following error after
Ruby module has been loaded, configured, and initialized.  

simics> continue
Exception in hap handler: Non-existent x86 Register
Exception in hap handler

How do I debug this issue from here?   The message seemed to imply

My environment is as follows:
Simics 3.0.29 + GEMS 1.4
And I applied the following x86-ruby patch with other additional patch work
for gems1.4:
	gems_v9_to_x86_0.4_BETA.tar.gz
TARGET: 4-processor conf. based on tango-common.simics (pentium4-Linux)

There was a similar thread earlier this year, but the conclusion was not
helpful.
https://lists.cs.wisc.edu/archive/gems-users/2007-April/msg00126.shtml 

simics> read-configuration ../../tango-4p-after-boot-gomp-progs.conf
simics> instruction-fetch-mode instruction-fetch-trace
simics> istc-disable
Turning I-STC off and flushing old data
simics> dstc-disable
Turning D-STC off and flushing old data
simics> cpu-switch-time 1
The switch time will change to 1 cycles (for CPU-0) once all processors have
synchronized.
simics> load-module ruby
simics> ruby0.setparam g_NUM_PROCESSORS 4
simics> ruby0.init
Ruby Timing Mode
Warning: optimizations not enabled.
Creating event queue...
Creating event queue done
Creating system...
  Processors: 4
Creating system done
Ruby initialization complete
simics> continue
Exception in hap handler: Non-existent x86 Register
Exception in hap handler


-----Original Message-----
From: gems-users-bounces@xxxxxxxxxxx [mailto:gems-users-bounces@xxxxxxxxxxx]
On Behalf Of Derek Hower
Sent: Thursday, September 27, 2007 11:18 AM
To: Gems Users
Subject: Re: [Gems-users] ruby for x86: to install ruby for multiple memory
objects or just one

(Response from Dan Gibson (on vacation) via proxy Derek Hower)

Since the x86-Ruby patch was intended for GEMS 1.1, I have personally 
never tried to use Ruby on an x86 target with Simics 3.x. However, you 
are correct in that Ruby tries to install itself on /all physical memory 
objects/. For the x86 targets I tried (Dredd and Enterprise of Simics 
2.x, if memory serves), these memories were phys_mem[0..NCPUS-1].

Your patch should aim to install Ruby on physical memory objects in 
general. I would not be very worried about missing objects -- the 
various targets are often quite different.

If you would be interested in sharing your patch with other gems users, 
please let me know! There is a lot of interest in x86-based targets with 
GEMS. (please send email directly to gibson@xxxxxxxxxxx).

Regards,
Dan


soohong p kim wrote:
> I've been trying to work on ruby-x86-patch for gems1.4 (based on x86-patch
> for gems1.1).  My end goal is to use simics 3.x and gems 1.4 to run
> x86-target with ruby.
> 
> x86-patch seemed to install ruby on all phys_mem objects ("phys_mem%i")
> instead of just one, i.e. phys_mem0 or phys_mem, resulting in the
following
> in ruby.c for ruby-x86-patch for gems1.1:
> 
>   for(i=0;i<nProcs;i++) {
>     sprintf(memname,"phys_mem%i",i);
>     memory = SIM_get_object(memname);
> ...
> 
> Is memory-per-processor assumption true for any x86-based targets?  My
> 4-processor version of Tango seemed to have just one memory object
> (phys_mem0).  And all cpu[0123]_mem objects seem to point to phys_mem0.
And
> the above nProc loop seem to cause "load-module ruby" to fail.  
> 
> Any help will be greatly appreciated.
> 
> Soohong
> 
> 
> P.S.  memory-related objects in my checkpoint file...
> 
> ...
> ...
> OBJECT cpu0_mem TYPE memory-space {
> 	queue: cpu0
> 	map: ((0xfee00000, cpu0_apic, 0, 0, 0x4000, NIL, 0, 0, 0))
> 	default_target: (phys_mem0, 0, 0, phys_mem0)
> }
> OBJECT cpu1_mem TYPE memory-space {
> 	queue: cpu0
> 	map: ((0xfee00000, cpu1_apic, 0, 0, 0x4000, NIL, 0, 0, 0))
> 	default_target: (phys_mem0, 0, 0, phys_mem0)
> }
> OBJECT cpu2_mem TYPE memory-space {
> 	queue: cpu0
> 	map: ((0xfee00000, cpu2_apic, 0, 0, 0x4000, NIL, 0, 0, 0))
> 	default_target: (phys_mem0, 0, 0, phys_mem0)
> }
> OBJECT cpu3_mem TYPE memory-space {
> 	queue: cpu0
> 	map: ((0xfee00000, cpu3_apic, 0, 0, 0x4000, NIL, 0, 0, 0))
> 	default_target: (phys_mem0, 0, 0, phys_mem0)
> }
> ...
> ...
> OBJECT phys_mem0 TYPE memory-space {
> 	queue: cpu0
> 	map: ((0, dram0, 0, 0, 0xa0000, dram0, 0, 0, 0),
>               (0x100000, ram0, 0, 0x100000, 0xff00000, NIL, 0, 0, 0))
> 	default_target: (pci_mem0, 0, 0, pci_mem0)
> 
> _______________________________________________
> Gems-users mailing list
> Gems-users@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/gems-users
> Use Google to search the GEMS Users mailing list by adding
"site:https://lists.cs.wisc.edu/archive/gems-users/"; to your search.

_______________________________________________
Gems-users mailing list
Gems-users@xxxxxxxxxxx
https://lists.cs.wisc.edu/mailman/listinfo/gems-users
Use Google to search the GEMS Users mailing list by adding
"site:https://lists.cs.wisc.edu/archive/gems-users/"; to your search.


[← Prev in Thread] Current Thread [Next in Thread→]