mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-02-18 06:58:54 +00:00
x86: Support machines with >4GB of RAM
Some systems have more than 4GB of RAM. U-Boot can only place things below 4GB so any memory above that should not be used. Ignore any such memory so that the memory size will not exceed the maximum. This prevents gd->ram_size exceeding 4GB which causes problems for PCI devices which use DMA. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Lukasz Majewski <l.majewski@samsung.com>
This commit is contained in:
parent
4564faeafb
commit
892ff8e972
1 changed files with 4 additions and 2 deletions
|
@ -90,7 +90,8 @@ int dram_init(void)
|
|||
struct memrange *memrange = &lib_sysinfo.memrange[i];
|
||||
unsigned long long end = memrange->base + memrange->size;
|
||||
|
||||
if (memrange->type == CB_MEM_RAM && end > ram_size)
|
||||
if (memrange->type == CB_MEM_RAM && end > ram_size &&
|
||||
memrange->base < (1ULL << 32))
|
||||
ram_size = end;
|
||||
}
|
||||
gd->ram_size = ram_size;
|
||||
|
@ -108,7 +109,8 @@ void dram_init_banksize(void)
|
|||
for (i = 0, j = 0; i < lib_sysinfo.n_memranges; i++) {
|
||||
struct memrange *memrange = &lib_sysinfo.memrange[i];
|
||||
|
||||
if (memrange->type == CB_MEM_RAM) {
|
||||
if (memrange->type == CB_MEM_RAM &&
|
||||
memrange->base < (1ULL << 32)) {
|
||||
gd->bd->bi_dram[j].start = memrange->base;
|
||||
gd->bd->bi_dram[j].size = memrange->size;
|
||||
j++;
|
||||
|
|
Loading…
Add table
Reference in a new issue