> 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
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users