On 06 May 2005 08:55:20 -0600, Eric W. Biederman ebiederman@lnxi.com wrote:
In principle I agree with this. However those are guidelines and it stated that the actual details may very per motherboard.
So for merging I would request we have a generic function that performs this logic, and have the generic call in raminit.c make a motherboard specific call. By default that motherboard specific call would simply call the default generic method, but a motherboard that has better memory stability could override this.
Eric
I think we can create a mem speed table for each mem controller, the table has 5 columns: dimms, how many dimms max for this configuration 1rank, how many 1rank dimms max for this configuration 2rank, .... 4rank, .... speed, the max speed for this configuration
so for a normal mainboard the table should be: dimms, 1rank, 2rank, 4rank, speed 8, 8, 8, 8, 333 4, 4, 4, 4, 333 4, 4, 2, 0, 400 4, 4, 0, 2, 400 0, 0, 0, 0, 0 (the end)
and for a mainboard can work with 4 4rank dimms the table maybe: dimms, 1rank, 2rank, 4rank, speed 8, 8, 8, 8, 333 4, 4, 4, 4, 400 0, 0, 0, 0, 0 (the end)
in raminit.c we analyse this table and get the max speed for each mem controller of this mainboard. for single channel case we divide the first four column values by 2 and get the correct configuration. I don't know whether there are 3rank dimms, if yes maybe we should have the 3rank column.
Tao