diff --git a/xen/arch/arm/efi/efi-boot.h b/xen/arch/arm/efi/efi-boot.h index a80a5a7ab3..dcad46ca72 100644 --- a/xen/arch/arm/efi/efi-boot.h +++ b/xen/arch/arm/efi/efi-boot.h @@ -163,6 +163,7 @@ static bool __init meminfo_add_bank(struct membanks *mem, struct membank *bank; paddr_t start = desc->PhysicalStart; paddr_t size = desc->NumberOfPages * EFI_PAGE_SIZE; + unsigned int j; if ( mem->nr_banks >= mem->max_banks ) return false; @@ -171,6 +172,15 @@ static bool __init meminfo_add_bank(struct membanks *mem, return false; #endif + for ( j = 0; j < mem->nr_banks; j++ ) + { + if ( (mem->bank[j].start + mem->bank[j].size) == start ) + { + mem->bank[j].size += size; + return true; + } + } + bank = &mem->bank[mem->nr_banks]; bank->start = start; bank->size = size;