> Hi Pritha,
> I took a old kernel from when i published the original paper in 2009 (2.6.27) 
and it seems to work with the e1000 NIC if I just make the following change:
> diff -r ef8630054b5e configs/common/FSConfig.py--- 
a/configs/common/FSConfig.py    Tue Feb 14 14:15:30 2012 -0500+++ 
b/configs/common/FSConfig.py    Thu Feb 16 11:28:32 2012 -0600 <at>  <at>  
-58,7 
+58,7  <at>  <at>  def makeLinuxAlphaSystem(mem_mode, mdesc = None):     
IO_address_space_base = 0x80000000000     class BaseTsunami(Tsunami):-        
ethernet = NSGigE(pci_bus=0, pci_dev=1, pci_func=0)+        ethernet = 
IGbE_e1000(pci_bus=0, pci_dev=1, pci_func=0)         ide = IdeController(disks=
[Parent.disk0, Parent.disk2],                             pci_func=0, 
pci_dev=0, 
pci_bus=0)
> I don't know what kernel you're using but it's likely there is either an 
> issue 
with the configuration of it or perhaps something has broken in the alpha 
branch. 
> From an Alpha/Tsunami perspective, virtual addresses that start with ffffc 
> map 
to physical memory directly and addresses that start with ffffd map to the i/o. 
I'd have to look at the tsunami memory map documentation which isn't close at 
hand to what 80000000008 could be, but it doesn't seem right. You could use the 
PCIDev Ethernet trace flags to understand what addresses the PCI devices are 
getting assigned. 
> Thanks,
> Ali
>  

Hi Ali, 

I had tried using the same modification in FSConfig.py, and even the kernel I 
am 
using in 2.6.27. Should I try to build the kernel again and check? 

Regarding the addresses, I used the flag BusAddrRanges, I am not able to see 
any 
of the address ranges mapped to the IOBus which starts from 0x80000000000. The 
closest one I can see is: 
     0: drivesys.tsunami.fake_OROM: registering range: 0x800000a0000-0x60000
      0: drivesys.iobus: Adding range 0x800000a0000 - 0x800000fffff for id 12
All the rest seem to be starting with 0x801**** instead of 0x800****. 
For membus this is the range:
      0: drivesys.membus: Adding range 0x80000000000 - 0xffffffffffffffff for 
id 
2
So there is one range of addresses which are not mapped to anywhere on IO bus, 
even though the 
    IO_address_space_base = 0x80000000000
is set in FSConfig.py. 
But the mapping of addresses do not change from NSGigE adapter mappings, and 
there is no error in that case. 

I enabled Fetch flag to see the addresses being accessed before the error 
condition, and in the e100 NIC, this is the faulting address:
51061947500: drivesys.cpu: Fetch: PC:0xfffffc0000324800
51061947500: drivesys.cpu: Address is fffffd0000000008, Physical address 
80000000008

But in the case of NSGigE, the same address brings forward a different virtual 
address for the read:
51379655000: drivesys.cpu: Fetch: PC:0xfffffc0000324800
51379655000: drivesys.cpu: Address is fffffd0009000018, Physical address 
80009000018

For the other cases, the sequence addresses are identical in case of NSGigE and 
IGbE_e1000 adapters. eg: 
NSGigE:
51690478500: drivesys.cpu: Fetch: PC:0xfffffc0000319ce4
51690478500: drivesys.cpu: Address is fffffc000085e208, Physical address 85e208
e1000:
51061946500: drivesys.cpu: Fetch: PC:0xfffffc0000319ce4
51061946500: drivesys.cpu: Address is fffffc000085e208, Physical address 85e208


Could you give any pointer regarding where this faulty address is getting 
generated for this particular case? 

Pritha





_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to