[2/3] mm/mm_init.c: account absent_page only if spanned_page is non-zero

Message ID 20230525040150.1588-2-haifeng.xu@shopee.com
State New
Headers
Series [1/3] mm/mm_init.c: remove comments in zone_spanned_pages_in_node() and zone_absent_pages_in_node() |

Commit Message

Haifeng Xu May 25, 2023, 4:01 a.m. UTC
  If spanned_page is zero, it's pointless to calculate the number of
absent_page. Also, the real size can be assigned to zero directly.

Signed-off-by: Haifeng Xu <haifeng.xu@shopee.com>
---
 mm/mm_init.c | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)
  

Patch

diff --git a/mm/mm_init.c b/mm/mm_init.c
index cf55bba04b23..898af4eb9ce2 100644
--- a/mm/mm_init.c
+++ b/mm/mm_init.c
@@ -1260,31 +1260,30 @@  static void __init calculate_node_totalpages(struct pglist_data *pgdat,
 		struct zone *zone = pgdat->node_zones + i;
 		unsigned long zone_start_pfn, zone_end_pfn;
 		unsigned long spanned, absent;
-		unsigned long size, real_size;
+		unsigned long real_size;
 
 		spanned = zone_spanned_pages_in_node(pgdat->node_id, i,
 						     node_start_pfn,
 						     node_end_pfn,
 						     &zone_start_pfn,
 						     &zone_end_pfn);
-		absent = zone_absent_pages_in_node(pgdat->node_id, i,
-						   node_start_pfn,
-						   node_end_pfn);
-
-		size = spanned;
-		real_size = size - absent;
-
-		if (size)
+		if (spanned) {
+			absent = zone_absent_pages_in_node(pgdat->node_id, i,
+							   node_start_pfn,
+							   node_end_pfn);
+			real_size = spanned - absent;
 			zone->zone_start_pfn = zone_start_pfn;
-		else
+		} else {
+			real_size = 0;
 			zone->zone_start_pfn = 0;
-		zone->spanned_pages = size;
+		}
+		zone->spanned_pages = spanned;
 		zone->present_pages = real_size;
 #if defined(CONFIG_MEMORY_HOTPLUG)
 		zone->present_early_pages = real_size;
 #endif
 
-		totalpages += size;
+		totalpages += spanned;
 		realtotalpages += real_size;
 	}