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 56E03C369C2 for ; Fri, 25 Apr 2025 20:36:57 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 31A1A6B0005; Fri, 25 Apr 2025 16:36:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 2C95D6B0007; Fri, 25 Apr 2025 16:36:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 191856B0008; Fri, 25 Apr 2025 16:36:56 -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 EB6026B0005 for ; Fri, 25 Apr 2025 16:36:55 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 2294B1409C5 for ; Fri, 25 Apr 2025 20:36:56 +0000 (UTC) X-FDA: 83373725232.09.3599E04 Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf12.hostedemail.com (Postfix) with ESMTP id 3649C40009 for ; Fri, 25 Apr 2025 20:36:52 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b="Ozmu3L3/"; dmarc=none; spf=none (imf12.hostedemail.com: domain of BATV+28c82e69438fb62280a6+7915+infradead.org+dwmw2@desiato.srs.infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=BATV+28c82e69438fb62280a6+7915+infradead.org+dwmw2@desiato.srs.infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745613414; a=rsa-sha256; cv=none; b=H0C81oGllI6OqHg8lz3Kvmq81aaqP6egnpPgapcVpLpB2Fo+Dx6Y//NBhLM1+f2//am/0v g67qIGQAFoOEPM/hQqhM+JycxR4yKDFGyA1nI+Rl5xCC1CLHD0eUQibRSnYayzE7xntqIb QZccdwqJD3Ws43Ug0H2431Iz3mRVKZA= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b="Ozmu3L3/"; dmarc=none; spf=none (imf12.hostedemail.com: domain of BATV+28c82e69438fb62280a6+7915+infradead.org+dwmw2@desiato.srs.infradead.org has no SPF policy when checking 90.155.92.199) smtp.mailfrom=BATV+28c82e69438fb62280a6+7915+infradead.org+dwmw2@desiato.srs.infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745613414; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=X9M4+Ej+Gp96bqz6Glzq05lkUeeT+EqqEuZ4uSjjb/8=; b=FdZj5zIBzITuyDPHbtNd5ArA5SaAikHKs4T9fwfjwp8NzPXzCQWkvpbRYftHdRWbHrJuuL UpPPim/392lrBkgpiltz6pL1tdAfxRLacFhGlyaZ8V1ymM/qh6S6nLHQ0zOIwy6wZycsV7 7W/7xpl4IwSQUFANDJD4EptFDFIeixk= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Transfer-Encoding:Content-Type :MIME-Version:Message-ID:References:In-Reply-To:Subject:CC:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=X9M4+Ej+Gp96bqz6Glzq05lkUeeT+EqqEuZ4uSjjb/8=; b=Ozmu3L3/XX/1Rz5n0br39c98sd +NM+y4+unDGM/MrvEKTK/35ZtI36W65bKg9otOaUTiH5nuTHHge9h2J3fIyexX87+eghKwQTqVLe1 DWAyvg7xQedASA+j9wiEu60qU2u+FLyZQzDSE8007fe9MJV/MTlbUlLAjqKx9LOQ08ZueOuXPhnsI CD1//9V6AICKD4exT4AU26/bumSbWGpKnka9TBocsVVWog9HZ4HvZT1aPLdcmEToIZWOrveJOBV8S XCOVqBBRc+hmycf3nRqByJtqnDF4TDeIC/x8/7h/05EKHTmN7Y5UcvkZUC1w4xrowGhC9m8qPxItJ ckWGF3sg==; Received: from [2a00:23ee:1cc0:5c4b:b264:5a63:8637:c285] (helo=[IPv6:::1]) by desiato.infradead.org with esmtpsa (Exim 4.98.1 #2 (Red Hat Linux)) id 1u8Pma-0000000C9YR-2BZs; Fri, 25 Apr 2025 20:36:27 +0000 Date: Fri, 25 Apr 2025 21:36:21 +0100 From: David Woodhouse To: David Hildenbrand , Mike Rapoport CC: Andrew Morton , "Sauerwein, David" , Anshuman Khandual , Ard Biesheuvel , Catalin Marinas , Marc Zyngier , Mark Rutland , Mike Rapoport , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ruihan Li Subject: =?US-ASCII?Q?Re=3A_=5BPATCH_v4_7/7=5D_mm/mm=5Finit=3A_Use_for=5Fea?= =?US-ASCII?Q?ch=5Fvalid=5Fpfn=28=29_in_init=5Funavailable=5Frange=28=29?= User-Agent: K-9 Mail for Android In-Reply-To: <8fd728cf-bc54-433d-8701-234a67933a97@redhat.com> References: <20250423133821.789413-1-dwmw2@infradead.org> <20250423133821.789413-8-dwmw2@infradead.org> <91CA8854-2E86-4AF3-BAD0-8C47833F59D4@infradead.org> <8fd728cf-bc54-433d-8701-234a67933a97@redhat.com> Message-ID: <0D5ABF4F-B1F2-4EB2-BD3B-A8312629D55E@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SRS-Rewrite: SMTP reverse-path rewritten from by desiato.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: 3649C40009 X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: xqfqsgrzupcywc5ghcwungxfute3g8n4 X-HE-Tag: 1745613412-940338 X-HE-Meta: U2FsdGVkX18L6kamtyZH5p0C6+6sMdngi1KaillI1U0UOPWKDkVL57QIZFvAe6/4wr8nBVvbrL2+XEJp/byf3Zhf+QwMDKsvtK1KMOSIHhdunp3X5BF+CnP9mkT8ukYrkosjeU9EnIbDm4MmFIR4SnQTGx3AiNFtOMLT7Uk35d01RqafSKLVa/Cxmq6o0byuNLSDMz1Zj1KGH8SoFI0a2AD73zCOpIIXblRxJobBHRwAAvqQeSzXfYxtq2Enqckv450nn6U8Lc1NN2Zj+8c11mUZyxljoc1gFGyUqXEtqri50KTUhSd3RK7nTn/f7xQ4S8dXTPpYDQgOYvhHRAOHItHN2r7nQ9X5JC8UsR/dtu66n8yzVpRDNNQvBKM8zPKbGo+yu45vXcsKQavGxCnX9OYRdboPtikaQclF4mDqjcLtnMRSTDDLxZXkvYnr3LyaaAEF+jiP9h0PLZe2McjccgH066wlvLjvNIHXCFYIBNXMrq7iZIOEw9GwJQoH+e//Km+mAlXt0terCO3wyc/TAZVzofBzCl6vk/xElogoJo8vLn7ESyLmmndh3bPYiboRN20BddHj/Iza2coKhI/uQiMJyVViqdbeVEjiKufZpzW0oNPaB3dMkMLRI/E3dRTuSJbaZaDYe62KxZViOhV06++QSPTl5pgna9rqa9sEztDbpYLETyHRHR8qG4ZyCGB/BM7/ddRp4ZAiHVZ5Yh8x2o4LMPWHiR9j7HVXrvqxqma8UhLjJSPuZ87H9trikUeq4pPEODdqwySk/IlgzrsWRw9TykXLG29jPsDYTjJN+OZaz5bP2lc4FWhcWVIQ+C2nRjwfyN1jq822Pf67TcVNmEp3zfsAJcocILlbI31uoan91SSJHhvDEm9HTBouShxdzB5qp23R487GNezWTCPq7vMV7PETouiZ09wf/LPO0ENiSbCZu8uP9zwDU9issLz0QAKtiaU45EmNARTxP1m riFGS3kV gxM+T9bxN3dkpHIOPSMAKfBz85CIBWC6ccnFTLvLB2NTiZgOtUNPQ+CWMAcoMRlPzhl3AYDLfTxvx7yaz9ArUdMcdAVQTSzRgkowqCeVjOTqXwBgu6qqKyRjWN2aWk1FBDJ2L0G+0EQ1qSMgW35iXO82lor0cFWIFCOf+UcZO8UAjlW9qrZMCDtOqTYiB/NFhcy05r49y/92sfwhrGOLdKRJXJliwWIyOe/i141SPjE6yu9K9IoVdB4CphIS5MHVU129tVIoFKB+/fJt7QfOxKIfoVMGQp1rD3ILvQgknFqeyk490z6NKcAOyT/VbQS+CULDzjfUpEsxuPu5SlR5vattruoUMDSEqp27vvX9asRb8S5UnkKm+5eb1Wx1fbnPqTduCkhAhnSHH6i2KEo3KEkUOqgtmabL/T86lyK2C+mBiKxXaCqzu4jIlAKrYRIhq9bCAgIWiLpwMjeROpOkWY7SMMH8y2CfTndUS0XIVNwIPqj+4QRdYGlEuyDjWtNsJZURIdJ8yAaNr+RlYTOqtgAc1JqRboUTJV/zKp4E46+hKIRIk9QeYTmvd/5MsJobt/t5z1gdZfTgsGVFm4EgfvUt/eCgyAerkCTOmmr1twdwavGF/36WRNElwFeAs5gdhZ/97xY09/fbz1UhVI9CAn7mMybbp6vWkhThmiy39GMT24YVHnpmI0w2IpNmQCy/JlHWv 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: On 25 April 2025 21:12:49 BST, David Hildenbrand wrote= : >On 25=2E04=2E25 21:08, David Woodhouse wrote: >> On 25 April 2025 17:17:25 BST, David Hildenbrand w= rote: >>> On 23=2E04=2E25 15:33, David Woodhouse wrote: >>>> From: David Woodhouse >>>>=20 >>>> Currently, memmap_init initializes pfn_hole with 0 instead of >>>> ARCH_PFN_OFFSET=2E Then init_unavailable_range will start iterating e= ach >>>> page from the page at address zero to the first available page, but i= t >>>> won't do anything for pages below ARCH_PFN_OFFSET because pfn_valid >>>> won't pass=2E >>>>=20 >>>> If ARCH_PFN_OFFSET is very large (e=2Eg=2E, something like 2^64-2GiB = if the >>>> kernel is used as a library and loaded at a very high address), the >>>> pointless iteration for pages below ARCH_PFN_OFFSET will take a very >>>> long time, and the kernel will look stuck at boot time=2E >>>>=20 >>>> Use for_each_valid_pfn() to skip the pointless iterations=2E >>>>=20 >>>> Reported-by: Ruihan Li >>>> Suggested-by: Mike Rapoport >>>> Signed-off-by: David Woodhouse >>>> Reviewed-by: Mike Rapoport (Microsoft) >>>> Tested-by: Ruihan Li >>>> --- >>>> mm/mm_init=2Ec | 6 +----- >>>> 1 file changed, 1 insertion(+), 5 deletions(-) >>>>=20 >>>> diff --git a/mm/mm_init=2Ec b/mm/mm_init=2Ec >>>> index 41884f2155c4=2E=2E0d1a4546825c 100644 >>>> --- a/mm/mm_init=2Ec >>>> +++ b/mm/mm_init=2Ec >>>> @@ -845,11 +845,7 @@ static void __init init_unavailable_range(unsign= ed long spfn, >>>> unsigned long pfn; >>>> u64 pgcnt =3D 0; >>>> - for (pfn =3D spfn; pfn < epfn; pfn++) { >>>> - if (!pfn_valid(pageblock_start_pfn(pfn))) { >>>> - pfn =3D pageblock_end_pfn(pfn) - 1; >>>> - continue; >>>> - } >>>=20 >>> So, if the first pfn in a pageblock is not valid, we skip the whole pa= geblock =2E=2E=2E >>>=20 >>>> + for_each_valid_pfn(pfn, spfn, epfn) { >>>> __init_single_page(pfn_to_page(pfn), pfn, zone, node); >>>> __SetPageReserved(pfn_to_page(pfn)); >>>> pgcnt++; >>>=20 >>> but here, we would process further pfns inside such a pageblock? >>>=20 >>=20 >> Is it not the case that either *all*, or *none*, of the PFNs within a g= iven pageblock will be valid? > >Hmm, good point=2E I was thinking about sub-sections, but all early secti= ons are fully valid=2E > >(Also, at least on x86, the subsection size should match the pageblock si= ze; might not be the case on other architectures, like arm64 with 64K base = pages =2E=2E=2E) > >>=20 >> I assumed that was *why* it had that skip, as an attempt at the kind of= optimisation that for_each_valid_pfn() now gives us? > >But it's interesting in this code that we didn't optimize for "if the fir= st pfn is valid, all the remaining ones are valid"=2E We would still check = each PFN=2E > >In any case, trying to figure out why Lorenzo ran into an issue =2E=2E=2E= if it's nit because of the pageblock, maybe something in for_each_valid_pf= n with sparsemem is still shaky=2E > A previous round of the patch series had a less aggressively optimised ver= sion of the sparsemem implementation=2E=2E=2E? Will see if I can reproduce in the morning=2E A boot in QEMU worked here b= efore I sent it out=2E