In case (last_start <= step_size), start is for sure to be 0. So, it is
save to do the round_down for all cases and set start to map_start when
start is smaller than map_start.

>From the performance point of view, this also reduces the check on each
iteration.

This patch unifies the code on round_down memory range in
memory_map_top_doown() and also removes a redundant assignment of start
which will be assigned the correct value in each iteration.

Signed-off-by: Wei Yang <richard.weiy...@gmail.com>
---
 arch/x86/mm/init.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 22af912d66d2..d8ad5e825b10 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -514,7 +514,7 @@ static void __init memory_map_top_down(unsigned long 
map_start,
        step_size = PMD_SIZE;
        max_pfn_mapped = 0; /* will get exact value next */
        min_pfn_mapped = real_end >> PAGE_SHIFT;
-       last_start = start = real_end;
+       last_start = real_end;
 
        /*
         * We start from the top (end of memory) and go to the bottom.
@@ -523,12 +523,10 @@ static void __init memory_map_top_down(unsigned long 
map_start,
         * for page table.
         */
        while (last_start > map_start) {
-               if (last_start > step_size) {
-                       start = round_down(last_start - 1, step_size);
-                       if (start < map_start)
-                               start = map_start;
-               } else
+               start = round_down(last_start - 1, step_size);
+               if (start < map_start)
                        start = map_start;
+
                mapped_ram_size += init_range_memory_mapping(start,
                                                        last_start);
                last_start = start;
-- 
2.11.0

Reply via email to