On Wed, 2002-01-30 at 18:45, Matthew Dharm wrote:
> (I aplogize for the duplicate... this message has more information
> than the other one... Outlook decided that I meant "send" not
> "paste"... grr...)
> Well, I've figured out my crashing problem, but I'm not certain how to
> fix it... I've got a couple of choices, and my first choice doesn't
> seem to work too well, tho I'm not sure if that's my fault or another
> Basically, what happens is this: The SDRAM is in two banks (0,2) in
> equal parts. So, on our 128MByte boards, it's two banks of 64MBytes.
> On our 512MByte boards, it's 2 banks of 256MBytes each.
> The bridge is programmed to place the first bank at 0x0, and the other
> bank at 256MBytes. add_memory_region() is called earlier in the boot
> sequence to set up the first 64MBytes at address 0. Now we call
> add_memory_region() with incorrect parameters.
> So, I thought to myself, let's just change the 'start' address of the
> add_memory_region() call. For good luck, I even threw in some calls
> with BOOT_MEM_RESERVED, so we now have (printed on bootup):
Can you actually do that and have discontiguous memory work?? Why don't
you program the bridge based on your memory size, so that it would place
the first mem module at 0 and the second at 64MB?
> Determined physical RAM map:
> memory: 04000000 @ 00000000 (usable)
> memory: 0c000000 @ 04000000 (reserved)
> memory: 04000000 @ 10000000 (usable)
> memory: 0c000000 @ 14000000 (reserved)
> Which looks okay to me. The problem is, my ethernet driver has gone
> to the dogs. It works, but it's _really_ slow and the console is
> printing out messages like:
> eth0: Transmit timed out: status 0050 0c00 at 9710/9738 command
> eth0: Transmit timed out: status 0050 0c00 at 9745/9773 command
> eth0: Transmit timed out: status 0050 0c00 at 9801/9829 command
> I'm guessing that something bad has happened in terms of what part of
> memory the ethernet controller allocates for it's descriptors... or
> something like that. The fact that it works at all is puzzling.. I
> would have expected a more fatal mode of failure.
> So, am I doing something wrong in setting up my memory map? Is there
> something else I need to do when calling add_memory_region()?
> Also, how are DMAable addresses handed out? I'm wondering if the
> conversion between CPU address and PCI address is working correctly...
> I'm going to try to get a PCI analyizer, but I don't know how long
> that will take.
> Thanks everyone for all your help... hopefully, I'll have this problem
> put to bed soon.
> Matthew Dharm
> Matthew D. Dharm Senior Software Designer
> Momentum Computer Inc. 1815 Aston Ave. Suite 107
> (760) 431-8663 X-115 Carlsbad, CA 92008-7310
> Momentum Works For You www.momenco.com
> > -----Original Message-----
> > From: Pete Popov [mailto:email@example.com]
> > Sent: Wednesday, January 30, 2002 5:35 PM
> > To: Matthew Dharm
> > Cc: linux-mips
> > Subject: RE: More data: I've made a CVS build that doesn't crash!
> > On Wed, 2002-01-30 at 17:23, Matthew Dharm wrote:
> > > Well, I'm closer... and more confused.
> > >
> > > I've managed to make a 2.4.3 build which does not exhibit
> > any of the
> > > instability or crashing... but I did it by disabling half of the
> > > memory!
> > >
> > > In linux/arch/mips/gt64120/momenco_ocelot/setup.c is some
> > code to read
> > > a PLD and add a memory region. 64MByte is already added
> > much earlier,
> > > and now we're adding the rest. The board I'm testing on
> > is 128MByte,
> > > so it tries to add another 64MByte region which is physically
> > > contiguous to the first region.
> > >
> > > As far as I can tell, all of my memory works perfectly.
> > I'm going to
> > > do some more tests, but both vxWorks and OpenBSD run on this board
> > > without any problems.
> > >
> > > So, can anyone think of some likely culprits for what is
> > wrong here?
> > > Some piece of code which only works with addresses under 64MByte,
> > > perhaps?
> > And 2.4.2 works with all of the memory?
> > Pete