From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 611A43B27E3 for ; Wed, 20 May 2026 09:35:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.11 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779269717; cv=none; b=UH+DUGG0aNOm0Wn+d3zN1J+UJFie+JRLWi28IfXTqjgEMjfnwYafMpJJ2jCRbN39ef8HmgPYURPDhOzCeqSavQmz3OGThixjLTjMmuB13N58uLdKiX7EXPE9iHoqSyLzUetlfg5+gfKbcdXXOkGUzWwPD1ObW9j6b8BgTwMKUWY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779269717; c=relaxed/simple; bh=H6pG8TzQarYorWbLMhJac6ahvD81snEqzPj7eqL2S7s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p6RJNu3Bo8+o3mAAg9CrgZJLZZyjjGu5/CJdYHJhtHtkAyav7h8ouaMF6UcCLvKJyjdujHNEUYaCE1dHtKuAmW4kaTlTKHYPxlz6NxFQtx4ae0jHX7q1Kaq9QjTO0vpdORwpa3tq30i/7ARXUbO0dXEnx7myz0znk3tc0LHSifo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Qztdi6D5; arc=none smtp.client-ip=198.175.65.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Qztdi6D5" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779269716; x=1810805716; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=H6pG8TzQarYorWbLMhJac6ahvD81snEqzPj7eqL2S7s=; b=Qztdi6D5tef/IEJ+dwBY+zn1++smYy12cLubJGwNm+FiJhoor/McMSVw yB89oBbVT70owOg4YbJOeCCW2eZLrVoGcmRblzGDY/e2Z4i6lzdc6udOk ZwtugSc/yp/vqAKno4P/dyUOmATSQjP0NEonTT+Yh5+wLaPUkS7dlBw5z 1YafHYOh6DC1jFk9cXNqQPgeCN+AZndbABbK+oiyR/JP/yEvTCEuiPepp 84IGm79+/q6xVNwuT4qzZ50CeQ8d2IyMBy3gv07DCqldfIpzL1dXkZp1J 0Gc6TCyjdlrq7lCAkdPM72U4vcxp7XabbdMhrP4F+mMdS9feGl2HPGp/O w==; X-CSE-ConnectionGUID: rHDBKwGnSdaqysrGMsQFrg== X-CSE-MsgGUID: SgW3aLi8QNyuifGGgq/oIA== X-IronPort-AV: E=McAfee;i="6800,10657,11791"; a="90461007" X-IronPort-AV: E=Sophos;i="6.23,244,1770624000"; d="scan'208";a="90461007" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 May 2026 02:35:16 -0700 X-CSE-ConnectionGUID: XgoZLKfWQZmCeiLlpJwhWg== X-CSE-MsgGUID: e9a92kdZRBiXWkJqqNKp7Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,244,1770624000"; d="scan'208";a="241925189" Received: from spr10.sh.intel.com (HELO localhost) ([10.239.23.75]) by fmviesa004.fm.intel.com with ESMTP; 20 May 2026 02:35:13 -0700 From: Yuan Liu To: David Hildenbrand , Oscar Salvador , Mike Rapoport , Wei Yang Cc: linux-mm@kvack.org, Yong Hu , Nanhai Zou , Yuan Liu , Tim Chen , Qiuxu Zhuo , Yu C Chen , Pan Deng , Tianyou Li , Chen Zhang , Jason Zeng , linux-kernel@vger.kernel.org Subject: [PATCH v5 1/5] mm: move mirrored memory overlap checking to the outer loop Date: Wed, 20 May 2026 05:34:53 -0400 Message-ID: <20260520093457.3719960-2-yuan1.liu@intel.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260520093457.3719960-1-yuan1.liu@intel.com> References: <20260520093457.3719960-1-yuan1.liu@intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Move the overlap memmap initialization check from memmap_init_range() to memmap_init(), and replace the per-PFN check with a memblock-based check. Reviewed-by: Wei Yang Reviewed-by: Jason Zeng Signed-off-by: Yuan Liu --- mm/mm_init.c | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/mm/mm_init.c b/mm/mm_init.c index f9f8e1af921c..24e103a402b0 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -783,28 +783,6 @@ void __meminit init_deferred_page(unsigned long pfn, int nid) __init_deferred_page(pfn, nid); } -/* If zone is ZONE_MOVABLE but memory is mirrored, it is an overlapped init */ -static bool __meminit -overlap_memmap_init(unsigned long zone, unsigned long *pfn) -{ - static struct memblock_region *r __meminitdata; - - if (mirrored_kernelcore && zone == ZONE_MOVABLE) { - if (!r || *pfn >= memblock_region_memory_end_pfn(r)) { - for_each_mem_region(r) { - if (*pfn < memblock_region_memory_end_pfn(r)) - break; - } - } - if (*pfn >= memblock_region_memory_base_pfn(r) && - memblock_is_mirror(r)) { - *pfn = memblock_region_memory_end_pfn(r); - return true; - } - } - return false; -} - /* * Only struct pages that correspond to ranges defined by memblock.memory * are zeroed and initialized by going through __init_single_page() during @@ -891,8 +869,6 @@ void __meminit memmap_init_range(unsigned long size, int nid, unsigned long zone * function. They do not exist on hotplugged memory. */ if (context == MEMINIT_EARLY) { - if (overlap_memmap_init(zone, &pfn)) - continue; if (defer_init(nid, pfn, zone_end_pfn)) { deferred_struct_pages = true; break; @@ -956,6 +932,7 @@ static void __init memmap_init(void) int i, j, zone_id = 0, nid; for_each_mem_pfn_range(i, MAX_NUMNODES, &start_pfn, &end_pfn, &nid) { + struct memblock_region *r = &memblock.memory.regions[i]; struct pglist_data *node = NODE_DATA(nid); for (j = 0; j < MAX_NR_ZONES; j++) { @@ -964,6 +941,10 @@ static void __init memmap_init(void) if (!populated_zone(zone)) continue; + if (mirrored_kernelcore && j == ZONE_MOVABLE && + memblock_is_mirror(r)) + continue; + memmap_init_zone_range(zone, start_pfn, end_pfn, &hole_pfn); zone_id = j; -- 2.47.3