Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: 6673/1: LPAE: use phys_addr_t instead of unsigned long for start of membanks

The unsigned long datatype is not sufficient for mapping physical addresses
>= 4GB.

This patch ensures that the phys_addr_t datatype is used to represent
the start address of a membank, which may reside above the 4GB boundary.

Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Will Deacon and committed by
Russell King
f60892d3 e33b9d08

+4 -3
+1 -1
arch/arm/include/asm/setup.h
··· 199 199 #endif 200 200 201 201 struct membank { 202 - unsigned long start; 202 + phys_addr_t start; 203 203 unsigned long size; 204 204 unsigned int highmem; 205 205 };
+3 -2
arch/arm/kernel/setup.c
··· 442 442 return list; 443 443 } 444 444 445 - static int __init arm_add_memory(unsigned long start, unsigned long size) 445 + static int __init arm_add_memory(phys_addr_t start, unsigned long size) 446 446 { 447 447 struct membank *bank = &meminfo.bank[meminfo.nr_banks]; 448 448 ··· 478 478 static int __init early_mem(char *p) 479 479 { 480 480 static int usermem __initdata = 0; 481 - unsigned long size, start; 481 + unsigned long size; 482 + phys_addr_t start; 482 483 char *endp; 483 484 484 485 /*