This reverts commit 379b03b7fa05f7db521b7732a52692448a3c34fe.

Commit 864b75f9d6b0 ("mm/page_alloc: fix memmap_init_zone pageblock
alignment") introduced boot hang issues in arm/arm64 machines, so
Ard Biesheuvel reverted in commit 3e04040df6d4. But there is a
preparation patch for commit 864b75f9d6b0. So just revert it for
the sake of caution.

Signed-off-by: Jia He <jia...@hxt-semitech.com>
---
 mm/memblock.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/mm/memblock.c b/mm/memblock.c
index b6ba6b7..5a9ca2a 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -1107,7 +1107,7 @@ unsigned long __init_memblock 
memblock_next_valid_pfn(unsigned long pfn,
        struct memblock_type *type = &memblock.memory;
        unsigned int right = type->cnt;
        unsigned int mid, left = 0;
-       phys_addr_t addr = PFN_PHYS(++pfn);
+       phys_addr_t addr = PFN_PHYS(pfn + 1);
 
        do {
                mid = (right + left) / 2;
@@ -1118,15 +1118,15 @@ unsigned long __init_memblock 
memblock_next_valid_pfn(unsigned long pfn,
                                  type->regions[mid].size))
                        left = mid + 1;
                else {
-                       /* addr is within the region, so pfn is valid */
-                       return pfn;
+                       /* addr is within the region, so pfn + 1 is valid */
+                       return min(pfn + 1, max_pfn);
                }
        } while (left < right);
 
        if (right == type->cnt)
-               return -1UL;
+               return max_pfn;
        else
-               return PHYS_PFN(type->regions[right].base);
+               return min(PHYS_PFN(type->regions[right].base), max_pfn);
 }
 
 /**
-- 
2.7.4

Reply via email to