diff options
Diffstat (limited to 'arch/i386/kernel/setup.c')
| -rw-r--r-- | arch/i386/kernel/setup.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c index af4de58cab54..9adbf710ec8d 100644 --- a/arch/i386/kernel/setup.c +++ b/arch/i386/kernel/setup.c | |||
| @@ -370,12 +370,16 @@ static void __init limit_regions(unsigned long long size) | |||
| 370 | int i; | 370 | int i; |
| 371 | 371 | ||
| 372 | if (efi_enabled) { | 372 | if (efi_enabled) { |
| 373 | for (i = 0; i < memmap.nr_map; i++) { | 373 | efi_memory_desc_t *md; |
| 374 | current_addr = memmap.map[i].phys_addr + | 374 | void *p; |
| 375 | (memmap.map[i].num_pages << 12); | 375 | |
| 376 | if (memmap.map[i].type == EFI_CONVENTIONAL_MEMORY) { | 376 | for (p = memmap.map, i = 0; p < memmap.map_end; |
| 377 | p += memmap.desc_size, i++) { | ||
| 378 | md = p; | ||
| 379 | current_addr = md->phys_addr + (md->num_pages << 12); | ||
| 380 | if (md->type == EFI_CONVENTIONAL_MEMORY) { | ||
| 377 | if (current_addr >= size) { | 381 | if (current_addr >= size) { |
| 378 | memmap.map[i].num_pages -= | 382 | md->num_pages -= |
| 379 | (((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT); | 383 | (((current_addr-size) + PAGE_SIZE-1) >> PAGE_SHIFT); |
| 380 | memmap.nr_map = i + 1; | 384 | memmap.nr_map = i + 1; |
| 381 | return; | 385 | return; |
