From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B71335E1CE for ; Tue, 23 Jun 2026 09:24:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782206662; cv=none; b=ofzfH0/cS34Y+qocks7HNq4odYMEa6mnYweKTLvtU34IzP51Xcvnlw3jfYZSjdyFVWNT5BMChm3S2Z5m4mOTFbrB9qP3nkzDwVueertLOtkxC/xMm3f00J5JdXij1jd5egMVZtFnCElr8tRClK93Fir2vs6Vf+CGxIJYXl0e3K4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782206662; c=relaxed/simple; bh=cbd5IXeDAG+joY7EZpBgsznmsO34JHx4MROMb1tz9/A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References; b=JzCC5PZXhkxio9xTLbkMRJEYd0fQcnOX5OGvg093iSnDqcIjU5v4ZWBM0Z9I4rEw+7zFEZnp94IA+EezxW0Vb+sRbo82Hd9+bEUprnmKrT4zbafmCl60/5WLCkHabBjJpKhF5INdshHK/xOnvFZKWzQApwvg+7jG1HDlG3qpSUc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WiqIkhTi; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WiqIkhTi" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-c07c67ad9f2so95948066b.0 for ; Tue, 23 Jun 2026 02:24:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782206659; x=1782811459; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=SZ7maC10bAKA2Vue+KAWspxqEt2HCnYBjNNvBiW/T3Y=; b=WiqIkhTi51y49abgXaH+Apgf7qDnIijufhxq4Ycx4QJxEogUR3rmnJbe7P5N7dcv96 20f6IXjRV79BTz+Cu3I3iHYEtMPeYtc072wYnd3mzSkaV7IuMEtILo0/6DFdTYDQ/P4n QlMu3yUf07L8D1NDPWwPwMc1U33XbkUg322uhEO7WNnXKuLMvLUXYIqiMRwLObLb8t0A wavjlta+l/pLcSF55bMpV4Fmpxfmv3yeuaG9TVsjKLakoDA/ulLJGSLLhWYm+WGTcUnC xl70RiP7tm2hoPylvn+oZy59xwEehC8XvgHf4soR7HW/UP6PFB5M2FcZFAgsVWZydFUT JCXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782206659; x=1782811459; h=references:in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=SZ7maC10bAKA2Vue+KAWspxqEt2HCnYBjNNvBiW/T3Y=; b=goXqgMpzMfcP72kIFGY0+ybAIz1bybbUfnBRRhsfb99FehftsZH7CCeLN2Ck50XAnC XuKWzOlAPgd8I3QOhBtDc2XIbFuOTKMbJUmKlXMt96jg4Y7ShS6TLfNXAR+rihDt9/dN z/I+8WrZPypebZJL63CXLtB6kXyBwGbBkCnQvhMETZE8zU6dzG2H1LsC+Dz9rw7RHVx2 Vj5/SeUjvn+fWeK81VyoAOYFuDWCpZJtlrNoXyTi41D30yE+PRm9FDcmNciZ1JIgyXqH Oiu7NSf4zq3Px5h6I1egCJSVwN3IaCfbYh8LZG1YrD6Ft+bYIza/nyPjxEfvvFM5/eEJ 8XkQ== X-Forwarded-Encrypted: i=1; AFNElJ9J98kBvcaQ6A+TNkAcmRKb+9t4cNxxqWI/bONxskK/wfpMjpa/64Lj0U0v5nOC5SoxlnX7gavfZj3CIHo=@vger.kernel.org X-Gm-Message-State: AOJu0YyIwdb7WaHMFpnLQhNCkW2EG/iJEXV1gn8aecxmf7aJsZjsR2ZW 1dnWGVVqMncpHf8HcLMPtB8kDvnoAtgFAvs1HI8qT2lKmYlHgtIPVA6qDZnrog== X-Gm-Gg: AfdE7cn8HMAjCaqnp3p3oxwqueUV421ijzDIgdJgXVFmoL01IJjvhN6O+I+ZKA0mI+8 XYxOT7sxocygI8CnaWFXcLP1jROkp3gStrS/mDAI0SapzPISr0MS7L2PUMtkhZOoRzygMcozacF aRtQJ6tJDpfT+J+EQEkZd7Uv8JeCID7YBnV6SIzmxnh/GoDVpi0QuizSqnSPHHAfj4he/Ciyaq2 /tSe1sxrr8lrnfKpn5JDX8rHFdtzQ45J/eaFeZ/I40KYO1N4mvu8BiWFZSaKOx8WuGfUvfYW0z/ 8L0npEgKJAB8i4gIYsEUbon1GHUGuPe5YAi4LvNWjk1o81ssU+k0wmBpYxkya53fH0rgW/ZG1DA bpDuQUcCtm65qj3b1+EliiKEthmdDV9ZDy415YC1oktkRcw01c3WoL89Y+Or+ekzsB0aOAh2rUN uAgc8n6jKDRhhGlPfysG42pA== X-Received: by 2002:a17:907:c719:b0:c10:bfaf:6f73 with SMTP id a640c23a62f3a-c10bfaf941dmr64850966b.22.1782206658963; Tue, 23 Jun 2026 02:24:18 -0700 (PDT) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c0c610e12f6sm499937066b.47.2026.06.23.02.24.18 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 23 Jun 2026 02:24:18 -0700 (PDT) From: Wei Yang To: rppt@kernel.org, akpm@linux-foundation.org, izumi.taku@jp.fujitsu.com Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, david@kernel.org, yuan1.liu@intel.com, Wei Yang Subject: [RFC Patch 1/3] mm/mm_init: adjust overlapped zone for mirror memory too Date: Tue, 23 Jun 2026 09:23:49 +0000 Message-Id: <20260623092351.13031-2-richard.weiyang@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20260623092351.13031-1-richard.weiyang@gmail.com> References: <20260623092351.13031-1-richard.weiyang@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: When mirrored_kernelcore is set, adjust_zone_range_for_zone_movable() would skip the adjustment if ZONE_MOVABLE starts within one zone. This makes the zone, usually ZONE_NORMAL, ends the same as ZONE_MOVABLE. For example, we have a system with following memory layout: memory[0x0] [0x0000000000001000-0x000000000009efff], 0x000000000009e000 bytes on node 0 flags: 0x2 memory[0x1] [0x0000000000100000-0x00000000bffdefff], 0x00000000bfedf000 bytes on node 0 flags: 0x2 memory[0x2] [0x0000000100000000-0x000000013fffffff], 0x0000000040000000 bytes on node 0 flags: 0x2 memory[0x3] [0x0000000140000000-0x00000001bfffffff], 0x0000000080000000 bytes on node 0 flags: 0x0 With kernelcore=mirror set, current kernel set zone with below range: Normal [100000, 1c0000] Movable [140000, 1c0000] This changes the expected behavior of defer_init(), because it only expect to defer_init() memory in last zone. As Zone Normal and Movable stops at the same end_pfn, defer_init() would set first_deferred_pfn in Zone Normal. And what is worse, pages belongs to Zone Normal would be counted as Zone Movable. Node 0, zone Normal spanned 786432 present 262144 managed 34390 Node 0, zone Movable spanned 524288 present 524288 managed 715855 <- manage more pages than present While when we look at the memory layout, we can see Zone Normal and Movable could be not overlapped if we adjust Zone Normal just other movable zone case. And we don't expect they would interleave. After doing so, we have non-overlap Zones: Normal [100000, 140000] Movable [140000, 1c0000] And the page locality looks correct: Node 0, zone Normal spanned 262144 present 262144 managed 233614 Node 0, zone Movable spanned 524288 present 524288 managed 524242 Fixes: 342332e6a925 ("mm/page_alloc.c: introduce kernelcore=mirror option") Signed-off-by: Wei Yang Cc: "David Hildenbrand (Arm)" Cc: Yuan Liu --- mm/mm_init.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mm/mm_init.c b/mm/mm_init.c index 7c4af27a6557..b8ff4aff19c0 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -1170,8 +1170,7 @@ static void __init adjust_zone_range_for_zone_movable(int nid, arch_zone_highest_possible_pfn[movable_zone]); /* Adjust for ZONE_MOVABLE starting within this range */ - } else if (!mirrored_kernelcore && - *zone_start_pfn < zone_movable_pfn[nid] && + } else if (*zone_start_pfn < zone_movable_pfn[nid] && *zone_end_pfn > zone_movable_pfn[nid]) { *zone_end_pfn = zone_movable_pfn[nid]; -- 2.34.1