Running a 2.1.131 on a EBSA-285 I recently ran into trouble when I
upgraded the DRAM to a 128 MB DIMM from the default 16 MB one.  I was
crashing on boot constantly when the Tulip driver reported a fatal bus
error (I was using NFS for the root).  Several printk's later, it ends
up that in:
   arch/arm/kernel/hw-ebsa285.c
there is a line:
   *(unsigned long *)0xfe000100 = 0x01fc0000;
which causes the 21285 core logic chip (acts as a memory controller for
the SA-110 and as a PCI-SA110_bus bridge) to only allow access to the
lower 32 MB of DRAM from the PCI bus.  The kernel was assigning buffers
from the top of DRAM for the tulip to use and it would get a master
abort attempting to access them.  For those with EBSA-285's, memory
address 0xfe000100 is the DRAM Base Address Mask Register in the 21285.

  I see two possible fixes for this problem:  

1)  Change the line to set it as high as possible.  The 21285 data sheet
has 256 MB (value = 0x0ffc0000) as the highest value listed.  This would
create a huge window but shold allow most anything.

2)  A more general solution would be to set this value dependant on the
actual memory installed.  This could be done either through a table
lookup or (I believe) bit-twiddling.

If neither fix is done, then I think a warning or documentation should
be included which mentions this problem.  It shouldn't be hard to add
into the boot sequence a 
  if ( (params->u1.s.nr_pages * params->u1.s.page_size) > (32*1024*1024) ) {
        printk("WARNING: The PCI bus will be unable to access the full " \
               "DRAM memory space.  Look in arch/arm/lib/hw-ebsa285.c  " \
               "for details!\n");
  }

Also, I have checked pre-patch 6 with the patch from Russel's site and
this line is unchanged.  

Finally, the bug-report form on the web page,
http://www.arm.uk.linux.org/~rmk/forms/solution.html
does not let you send the report you've filled out.

-Jon 
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]

Reply via email to