i5000: Fix the memory size calculation with 2R memories
When 2R memories are found, the memory size should be multiplied by two, otherwise, it will report half of the memory size: +-----------------------------------------------+ | mc0 | | branch0 | branch1 | | channel0 | channel1 | channel0 | channel1 | -------+-----------------------------------------------+ slot3: | 0 MB | 0 MB | 0 MB | 0 MB | slot2: | 0 MB | 0 MB | 0 MB | 0 MB | -------+-----------------------------------------------+ slot1: | 0 MB | 0 MB | 0 MB | 0 MB | slot0: | 1024 MB | 1024 MB | 1024 MB | 1024 MB | -------+-----------------------------------------------+ (the above machine have 4 x 2GB 2R memories) Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
@@ -1012,6 +1012,10 @@ static void handle_channel(struct i5000_pvt *pvt, int slot, int channel,
|
|||||||
/* add the number of COLUMN bits */
|
/* add the number of COLUMN bits */
|
||||||
addrBits += MTR_DIMM_COLS_ADDR_BITS(mtr);
|
addrBits += MTR_DIMM_COLS_ADDR_BITS(mtr);
|
||||||
|
|
||||||
|
/* Dual-rank memories have twice the size */
|
||||||
|
if (dinfo->dual_rank)
|
||||||
|
addrBits++;
|
||||||
|
|
||||||
addrBits += 6; /* add 64 bits per DIMM */
|
addrBits += 6; /* add 64 bits per DIMM */
|
||||||
addrBits -= 20; /* divide by 2^^20 */
|
addrBits -= 20; /* divide by 2^^20 */
|
||||||
addrBits -= 3; /* 8 bits per bytes */
|
addrBits -= 3; /* 8 bits per bytes */
|
||||||
|
Reference in New Issue
Block a user