From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2137FC36005 for ; Tue, 25 Mar 2025 11:49:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 77E17280003; Tue, 25 Mar 2025 07:49:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 72F27280001; Tue, 25 Mar 2025 07:49:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5D016280003; Tue, 25 Mar 2025 07:49:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3EF1F280001 for ; Tue, 25 Mar 2025 07:49:45 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 8AA1D141D02 for ; Tue, 25 Mar 2025 11:49:45 +0000 (UTC) X-FDA: 83259903930.08.BAFB078 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf24.hostedemail.com (Postfix) with ESMTP id BF72C180007 for ; Tue, 25 Mar 2025 11:49:43 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oOf08xfD; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf24.hostedemail.com: domain of rppt@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1742903383; a=rsa-sha256; cv=none; b=MEKzpMiIWrjuBLPuKfXCTMndHUs18aWQN3FMw3j7BzCWBpKQ/iicXE8VGMXWAIBf2vaLkC u8ErJ9BockiSCKEPv5pE1qhuH5XakjtMdwmohvTnNs+BsEdOrho8WA6n2s9CKcdUa1N7xB TA9AoolLpuM0rjbtmMsWH+Z88+MwNKs= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=oOf08xfD; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf24.hostedemail.com: domain of rppt@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1742903383; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=aCEqOg1iUINjGqAiz790BBR9EkX1C05SQIJaX+iCabU=; b=MYYyjN9+J5h17X4iawFEH35BRQaZ6WoHL8V3qVrA3xfK0rJRoJwNR/BLO57N5Q1L022xZW gjQG82feBootkwMXngGhXg10rHdvRRdsY+A0mLVfaYDwj2+KiYv0O/EQZu5GK9T06+ECPy h4YCWvKJB+k5yzxV4lUpV+8JQAzpNzw= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 052AC43A0D; Tue, 25 Mar 2025 11:49:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BC8A3C4CEED; Tue, 25 Mar 2025 11:49:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1742903382; bh=qfpWtkjNYrQGK3RsZjqYJLcEX3OyIabqO13P6PMbc7E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oOf08xfDf7JzudFmXaZx8QWeA/W+a8SOYgOsPFECAhIF+Kz9dt9TuQGFBcqSCdotd IoKuOSro0BZO0ID5go5sb8p8Nqjq5q6RSs4zpHIZJGG749PgL/qovWE0z5vhmBN+3W xhnUdNxCS7lSedIoO74EMJr9uNwWYu2iWpY9Ig3jRJ+YsMpgr/sEyhQSzo1VfS6ifV 54eD0LCdZYzKjgwkc3SwEvUifbEI8XH30cPaEupxQWQcdbFC5ESOCtORKNBk7rxm/T ogXNTDcmu2zBx51ubw91Gf0jjFjiwRXAN/KkeCajqMAzJfm/kVY3bQWO0HXMljOGoS ylQE4zurVIhIA== From: Mike Rapoport To: Andrew Morton Cc: Andy Lutomirski , Borislav Petkov , Dave Hansen , Ingo Molnar , Mike Rapoport , Nathan Chancellor , "H. Peter Anvin" , Peter Zijlstra , Thomas Bogendoerfer , Thomas Gleixner , Jiaxun Yang , kernel test robot , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org Subject: [PATCH 1/2] mm/mm_init: init holes in the end of the memory map for FLATMEM Date: Tue, 25 Mar 2025 13:49:27 +0200 Message-ID: <20250325114928.1791109-2-rppt@kernel.org> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250325114928.1791109-1-rppt@kernel.org> References: <20250325114928.1791109-1-rppt@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: BF72C180007 X-Stat-Signature: 7491q4sk78jabd4j9qii4jabzpcwjkrf X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1742903383-325853 X-HE-Meta: U2FsdGVkX1+eHkk7yNRJi2m4YarOzk6V8EydODwpiAH+J9QQLLMNOCzTRc3lXOCOyrpk3JR6rpT83MUIBIbjqRJcXByzBqVDGCALSEvpE82O7iuIUxYqgiXQvajDtdGBu6RZR31QhF48v9JR3joTafZvyVbCOOqyU9RlmWvWUDjzIiS6EW1LxmueiTjvoaejH3pa9bwzhU24qCQEaKqVl4DxAeIPs2esQ2QTjEsWEajILPaZwDZFMmippikbsw6AELBwurMQzi7W42ksNZOJZxtIt4jMJPUfUqscoootHWPywUo/PLR9B+77fRGu4Ly+dxgZlxZf9IXABH1SqZz2zqXwGsGgO6V2Q4YAWXZe9hEAUNqXTBsa5zvB7ikyVEZXBqy3KKKlUiJwIc533gBT+0Ch65R/nNGaMfqh/Ww77pb3mt84HKpcKilzcvttuhv4BxscGce8CEWNqZcCXs0BTMg3RD3Z5xIjCp0OnFzPpWEUoDHJwFAIBCUeTBhCkgkEPkv54NrJcEnziUMVkSMEvBlN0U43QF87HQpUqevWWBlHCL9AINIv6qtyoW5srU+p5r9/ohVm5aQBRwhGG6xavXKtDSqZ0VqbYyFfuKvmdpUnKddnOnM0uZAJhmXGzJSOHrOSs8qyeWK5it66vVoyo61vs4BnvEbNvfdTNwALohHQATOpdqKE+M8cSWu8IKCAmdLypeZlRDeWsMN9RcdiYcntoqNTsoGP/eIUkaobCie7U8O0+yJrvBJ/p+2+JgkoRYtfoYW7kSi64mbUde2dRyAl2kYP6cqesWNtZF8XUETJR0lL5nEdVcjbSKJ/1Lk2lzGFNjjiA4hzaYPBH3m8BOCjZ6UpPpwX2RgWowBS0Zj6ddTruF73Npz/mpXi55AwvYSMpDI3nXBq2X/cafIiPBiPm1pv8ROXfRydwTMW0gMyo7PM9SrKeI0A33eOBT5DmLTUYBIxzTim4QwPJ6j eGE7Qcfc 8vr+OaiR7nLfDyCsQ0aqXme2SMMpnJ9YyjwlgDkv3T4AdksvavBSLRcxvPzJ3kBWt1qGK+JFp561+NWQ2Vtd+I/MN7BHLnF+dpdkCnkCajrxfmtDjPoXnMkuxY8nTRhzBUU8569pj/H9i5ns6PoDvismWPvwAyqm75sicvXwxjfrbhouiqUTg6sDh5CH87yHRgaWqxjf3f9k2erLyCUIumkO5c4qRZULN/LHnhtIIHcsqeDbpA/CFrpfN/bivWzVuDByaRiaVrH1LwuyK21BrqGpEmoaPjPkhwcBGZH54ltp0HhURlmOz0BFTkP61TbgiUjB8LCenj4cOoLE= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: From: "Mike Rapoport (Microsoft)" Kernel test robot reports the following crash on 32-bit system with FLATMEM and DEBUG_VM_PGFLAGS enabled: [ 0.478822][ T0] kernel BUG at include/linux/page-flags.h:536! [ 0.479312][ T0] Oops: invalid opcode: 0000 [#1] PREEMPT SMP [ 0.479768][ T0] CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 6.14.0-rc6-00357-g8268af309d07 #1 [ 0.480470][ T0] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 0.481260][ T0] EIP: reserve_bootmem_region (include/linux/page-flags.h:536) [ 0.481683][ T0] Code: 5d c3 01 f1 89 c8 ba e1 38 f4 c3 e8 1e 37 8e fc 0f 0b b8 90 e2 62 c4 e8 e2 05 5e fc 01 f1 89 c8 ba be 85 f7 c3 e8 04 37 8e fc <0f> 0b b8 80 e2 62 c4 e8 c8 05 5e fc 55 89 e5 53 57 56 83 ec 10 89 [ 0.483177][ T0] EAX: 00000000 EBX: c425df50 ECX: 00000000 EDX: 00000000 [ 0.483712][ T0] ESI: 017ffc00 EDI: ffffffff EBP: c425df34 ESP: c425df2c [ 0.484248][ T0] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00210046 [ 0.484846][ T0] CR0: 80050033 CR2: 00000000 CR3: 04b48000 CR4: 00000090 [ 0.485376][ T0] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 [ 0.485907][ T0] DR6: fffe0ff0 DR7: 00000400 [ 0.486253][ T0] Call Trace: [ 0.486494][ T0] ? __die_body (arch/x86/kernel/dumpstack.c:478) [ 0.486822][ T0] ? die (arch/x86/kernel/dumpstack.c:?) [ 0.487099][ T0] ? do_trap (arch/x86/kernel/traps.c:? arch/x86/kernel/traps.c:197) [ 0.487409][ T0] ? do_error_trap (arch/x86/kernel/traps.c:217) [ 0.487752][ T0] ? reserve_bootmem_region (include/linux/page-flags.h:536) [ 0.488153][ T0] ? exc_overflow (arch/x86/kernel/traps.c:301) [ 0.488490][ T0] ? handle_invalid_op (arch/x86/kernel/traps.c:254) [ 0.488869][ T0] ? reserve_bootmem_region (include/linux/page-flags.h:536) [ 0.489271][ T0] ? exc_invalid_op (arch/x86/kernel/traps.c:316) [ 0.489619][ T0] ? handle_exception (arch/x86/entry/entry_32.S:1055) [ 0.489996][ T0] ? exc_overflow (arch/x86/kernel/traps.c:301) [ 0.490332][ T0] ? reserve_bootmem_region (include/linux/page-flags.h:536) [ 0.490733][ T0] ? exc_overflow (arch/x86/kernel/traps.c:301) [ 0.491068][ T0] ? reserve_bootmem_region (include/linux/page-flags.h:536) [ 0.491470][ T0] memmap_init_reserved_pages (mm/memblock.c:2203) [ 0.491887][ T0] free_low_memory_core_early (mm/memblock.c:?) [ 0.492302][ T0] memblock_free_all (mm/memblock.c:2272 include/linux/atomic/atomic-arch-fallback.h:546 include/linux/atomic/atomic-long.h:123 include/linux/atomic/atomic-instrumented.h:3261 include/linux/mm.h:67 mm/memblock.c:2273) [ 0.492659][ T0] mem_init (arch/x86/mm/init_32.c:735) [ 0.492952][ T0] mm_core_init (mm/mm_init.c:2730) [ 0.493271][ T0] start_kernel (init/main.c:958) [ 0.493604][ T0] i386_start_kernel (arch/x86/kernel/head32.c:79) [ 0.493969][ T0] startup_32_smp (arch/x86/kernel/head_32.S:292) The crash happens because after commit 8268af309d07 ("arch, mm: set max_mapnr when allocating memory map for FLATMEM") max_mapnr is rounded up to MAX_ORDER_NR_PAGES and the pages in the end of the memory map are passing pfn_valid() check in reserve_bootmem_region(). Make sure that that pages in the end of the memory map are initialized, just like the pages in the end of the last section for SPARSEMEM. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-lkp/202503241424.d16223ec-lkp@intel.com Fixes: 8268af309d07 ("arch, mm: set max_mapnr when allocating memory map for FLATMEM") Signed-off-by: Mike Rapoport (Microsoft) --- mm/mm_init.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mm/mm_init.c b/mm/mm_init.c index a38a1909b407..84f14fa12d0d 100644 --- a/mm/mm_init.c +++ b/mm/mm_init.c @@ -984,19 +984,19 @@ static void __init memmap_init(void) } } -#ifdef CONFIG_SPARSEMEM /* * Initialize the memory map for hole in the range [memory_end, - * section_end]. + * section_end] for SPARSEMEM and in the range [memory_end, memmap_end] + * for FLATMEM. * Append the pages in this hole to the highest zone in the last * node. - * The call to init_unavailable_range() is outside the ifdef to - * silence the compiler warining about zone_id set but not used; - * for FLATMEM it is a nop anyway */ +#ifdef CONFIG_SPARSEMEM end_pfn = round_up(end_pfn, PAGES_PER_SECTION); - if (hole_pfn < end_pfn) +#else + end_pfn = round_up(end_pfn, MAX_ORDER_NR_PAGES); #endif + if (hole_pfn < end_pfn) init_unavailable_range(hole_pfn, end_pfn, zone_id, nid); } -- 2.47.2