mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
ARM: 9069/1: NOMMU: Fix conversion for_each_membock() to for_each_mem_range()
[ Upstream commit45c2f70cba] for_each_mem_range() uses a loop variable, yet looking into code it is not just iteration counter but more complex entity which encodes information about memblock. Thus condition i == 0 looks fragile. Indeed, it broke boot of R-class platforms since it never took i == 0 path (due to i was set to 1). Fix that with restoring original flag check. Fixes:b10d6bca87("arch, drivers: replace for_each_membock() with for_each_mem_range()") Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> Acked-by: Mike Rapoport <rppt@linux.ibm.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
a13d4a1228
commit
11a718ef95
|
|
@ -235,6 +235,7 @@ void __init pmsav7_adjust_lowmem_bounds(void)
|
||||||
phys_addr_t mem_end;
|
phys_addr_t mem_end;
|
||||||
phys_addr_t reg_start, reg_end;
|
phys_addr_t reg_start, reg_end;
|
||||||
unsigned int mem_max_regions;
|
unsigned int mem_max_regions;
|
||||||
|
bool first = true;
|
||||||
int num;
|
int num;
|
||||||
u64 i;
|
u64 i;
|
||||||
|
|
||||||
|
|
@ -263,7 +264,7 @@ void __init pmsav7_adjust_lowmem_bounds(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for_each_mem_range(i, ®_start, ®_end) {
|
for_each_mem_range(i, ®_start, ®_end) {
|
||||||
if (i == 0) {
|
if (first) {
|
||||||
phys_addr_t phys_offset = PHYS_OFFSET;
|
phys_addr_t phys_offset = PHYS_OFFSET;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -275,6 +276,7 @@ void __init pmsav7_adjust_lowmem_bounds(void)
|
||||||
mem_start = reg_start;
|
mem_start = reg_start;
|
||||||
mem_end = reg_end;
|
mem_end = reg_end;
|
||||||
specified_mem_size = mem_end - mem_start;
|
specified_mem_size = mem_end - mem_start;
|
||||||
|
first = false;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* memblock auto merges contiguous blocks, remove
|
* memblock auto merges contiguous blocks, remove
|
||||||
|
|
|
||||||
|
|
@ -95,10 +95,11 @@ void __init pmsav8_adjust_lowmem_bounds(void)
|
||||||
{
|
{
|
||||||
phys_addr_t mem_end;
|
phys_addr_t mem_end;
|
||||||
phys_addr_t reg_start, reg_end;
|
phys_addr_t reg_start, reg_end;
|
||||||
|
bool first = true;
|
||||||
u64 i;
|
u64 i;
|
||||||
|
|
||||||
for_each_mem_range(i, ®_start, ®_end) {
|
for_each_mem_range(i, ®_start, ®_end) {
|
||||||
if (i == 0) {
|
if (first) {
|
||||||
phys_addr_t phys_offset = PHYS_OFFSET;
|
phys_addr_t phys_offset = PHYS_OFFSET;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -107,6 +108,7 @@ void __init pmsav8_adjust_lowmem_bounds(void)
|
||||||
if (reg_start != phys_offset)
|
if (reg_start != phys_offset)
|
||||||
panic("First memory bank must be contiguous from PHYS_OFFSET");
|
panic("First memory bank must be contiguous from PHYS_OFFSET");
|
||||||
mem_end = reg_end;
|
mem_end = reg_end;
|
||||||
|
first = false;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* memblock auto merges contiguous blocks, remove
|
* memblock auto merges contiguous blocks, remove
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user