On Wed, 04 Jun 2008 14:14:49 +0200, Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
On 04.06.2008 04:59, Joseph Smith wrote:
Good News!!! I think I got it working :-)
Great!
I am running memtest86 right now and if all goes well I build it again
with
filo and test it.
First I tried with initializing each dimm socket. I booted to memtest
and
it kept erroring out at 256mb. Because this is a double sidded 512MB so-dimm, I figured out that each side of each dimm needs to be
initialized.
So I came up with this:
for (i = 0; i < MAX_DIMM_SIDES; i++) { dimm_end = pci_read_config8(ctrl->d0, DRB + i); if (dimm_end > dimm_start) { PRINT_DEBUG(" Sending RAM command 0x"); PRINT_DEBUG_HEX32(reg32); PRINT_DEBUG(" to 0x"); PRINT_DEBUG_HEX32((dimm_start * 32 * 1024 * 1024) + addr_offset); PRINT_DEBUG("\r\n"); read32((dimm_start * 32 * 1024 * 1024) + addr_offset); } /* Set the start of the next DIMM. */ dimm_start = dimm_end; }
It seems to work good so far, hopefully I will be submitting a patch
soon.
Please submit a patch now, regardless of how ugly/polluted/unclean it is. We had too many losses of great patches in the past because computers died and an early not-ready patch is better than nothing.
Oh, don't worry all be submitting a patch. I just want to make sure I have my bases covered first. I hope You don't think the code above is in any way "ugly/polluted/unclean". I think it is a very clean, fast, and great way to acomplish memory initialization.