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 D935AC369D3 for ; Fri, 25 Apr 2025 19:09:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 82AB86B0008; Fri, 25 Apr 2025 15:09:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7D9416B000D; Fri, 25 Apr 2025 15:09:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 67C206B000E; Fri, 25 Apr 2025 15:09:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 46D176B0008 for ; Fri, 25 Apr 2025 15:09:05 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7DEF5C06A3 for ; Fri, 25 Apr 2025 19:09:05 +0000 (UTC) X-FDA: 83373503850.09.9A0F607 Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) by imf24.hostedemail.com (Postfix) with ESMTP id 60F49180008 for ; Fri, 25 Apr 2025 19:09:02 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=jJmglLn2; dmarc=none; spf=none (imf24.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=1745608143; a=rsa-sha256; cv=none; b=pcoThu8m7b+lKm3DKgaBtjqKHcyi+SjZY0yyvJjoEPm6xwl1gwxpi+Ga/mlMhEQ8lxFrUD SkMmdvtcIIS35mqjReh5M4G7Jb9VclU8wk1lg/D9xTLLIKL6/yYOWDEDyqz7fN5ZZxGnX4 wNGXy7XtM6fOuZmW3m00dnXOhtr+5Yk= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=infradead.org header.s=desiato.20200630 header.b=jJmglLn2; dmarc=none; spf=none (imf24.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=1745608143; 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=aKYzHIALNtDUUydkxeFhY6Lnu4RyTa/BxMviK7FEme0=; b=nGCD3gy7QbeMUCGO1rFcNSYqjRfxfUGqmLCn+DPNEHSTsM7+DhuqYo+WY4D5zf4AOFZSur dCB3iUNxRT771iC7so1q1BOFM5/kNWvWO1jeLGSeH4XbZO4xn7NvUcMX4HrRNlInRxySyl DfyVQyLuE4KTooIBTQ1Xp3g2i9C/vN4= 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=aKYzHIALNtDUUydkxeFhY6Lnu4RyTa/BxMviK7FEme0=; b=jJmglLn2xcvuWVpTYWDmM1yxR4 qVMBGIZQw5UMNuetuPXAcU3EPY7NpfKppXxD6BrJ31gx/4dt5M6kcohNT5GgXxwrhcrOXo1Zwjmw/ dzFpqy6pWN/d+8LikBV6Zbzh6uwxnAEpMF4hJTtPCTb5ddlhPD5uRJmx3/Y63w7ZUwNtUFxtD+UYj 6btcOSXcALKynfnR6ZMafLNz9+jGHRhqtCOEdkoeuEWfkmNK8MTmkwjMtyZW4kpT8n2m/ucgdSJE9 m91XZrQO75JIYnHxyrWT8XUSOQoluLCildSTBryKqtkyv/mfc+eQLmNchyVbM+sRjcXULs6fmteti YBxjqClg==; Received: from [188.39.25.218] (helo=[127.0.0.1]) by desiato.infradead.org with esmtpsa (Exim 4.98.1 #2 (Red Hat Linux)) id 1u8OPp-0000000C8dg-0e1C; Fri, 25 Apr 2025 19:08:49 +0000 Date: Fri, 25 Apr 2025 20:08:50 +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: References: <20250423133821.789413-1-dwmw2@infradead.org> <20250423133821.789413-8-dwmw2@infradead.org> Message-ID: <91CA8854-2E86-4AF3-BAD0-8C47833F59D4@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-Server: rspam03 X-Rspamd-Queue-Id: 60F49180008 X-Stat-Signature: faaexy8yx14jamd5im3i9jf7s3x1ernw X-Rspam-User: X-HE-Tag: 1745608142-10689 X-HE-Meta: U2FsdGVkX19xh/H0c1DKN9cyf/tkxKwalyi/JOdq/X2ukZtC4bsuHl7n8nuWzOf9GejAuCI8595Lpprvm6wfJ8ATzS6U8p6L60S0oJP2oaXVDNDh9Iz4ZP2gEvRO5o5KA85EBe9/D1B5EV5VD6hacWxq1IfA48cN1W1Vd7Z5gkdMeGuufKpJvSLbatFtpY9duw9wB7PEURKWHXHeaK9TVPzFt5OCcUgTFl8MFy9cRYfBwzsEj64psgB318qB447JrpslZoe+E4HB9UufBZ9E0sswhJABVUTXt5LijOF/AanSd2rYl7QKnAkN0GOhQ/He71RhVJnqPgZKOVdKYcsOR7mhxYIJjLWS2+YsBLDTMTTiLmLmuXXWXkBDWVJj/M1UXove/lQgk8bex+r+sFIfrDx2+V6+lZmnI9ZoTlg+hHp4Cxt/tv0S3h11AeAwA9aIxABH3/RPDOfFDsKss8nF33eRH0uTynDmajVvaiAzayBzxFH7RTVpaS9W2gkK+eOEoxSkhpFUej8de/F1Yme3aXfqMkXbZ2+mDRaxYLiWMB7JabX+SlnOGseYd31kvp9JLxzJtjHpk+/WCdofao71m4BuNcawlvUAuE4PBjr0qTWWliufFFYVabfDJDxkZgl8ElROMwPUVBK7k/jMRhG4QL4gDIDdpFt4OkV+ZaQBWDlE1CoVSItrwh0bufaUofMHNmQXtaLjBKaF3kzSxa47Wy+wWxyysYK7/78GzPIxg+L69kHj/nSdfbFD4DHCeM4BjfUGoe/Pj35GuN+0I2FRAs/CjQBAitqTpuLBwfRF97JZaYaL+5m/8Vy/DUzpPWNv5ds6ANCdAj4aI1BAUbh3q6GV3LNRxlamBnDFBTlSZ9PiKbx5uUgimiM8EFsEdNXnCIB47QWcso86XvCkFCVZV7EHmCLjz6xKhYNT4XuZJ8PyWdmTQNxcF0WOaADjxm1z/A8bNY7IC9GOhBGrDj+ cMXUCykx zqcuRZbjB/xbD4VOugbEsggFssSrVHWFD/HP0nXSyr4PdSx3dlgL/OePdBFh1ITTBVV56PV7ZFhD+H5dtvfCSkA7dV9GBHVSlAxLX1Th60rwQ7AZKM6ZgKT5tnjjeo79cKR0ToFR7A3IlJU9evjpShmRXTwKwQ1AEhlMh3km8PbEmVZKQzNBN0cLdRDyCvbycUnsVGCBmSYhTMRIPG+6rtO+0UqYv3aNWjSuXnFINgN9+6/1L/LebOhEhQGNIBWxz68/VmKRob9Kmc5on1tGD5zE/vdD5yLEQ21Wk+zXAUhL0xV5eyYy4uTw0roPcQB+s3EyIswqQ0tJpt6JzK4UNPzEFXwAxpOsscC0pPp0yARn/o/E7SEbQaYGo0sjircz8eSMafQWRAqvM0SC5ZaIDqOXpxZen6AM32tSOD0VhBGKkqIrqzGe/T7Yq7feXteeOBDR36R0UpYOiO5ITniyNW0O167ELhmKYdvVYT/hyC0mvH9Y+QuTAPY6Ivq6HhVse8EI7yTFrdiWxRGat7NBpX7f/GdGxyYW2Ahkno+G5+hhX4u6IKZSqKykFgHfYSrYkZQssme1OjK+qUqSmP+0nrsFDcO4t5wsuXWz+Xc7v4IuDs7tRTeapTuuCWvtgBiAnyl3ZQAnP6NSy1e1s/0ZldOqDQ6FEoMBvhRJS 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 17:17:25 BST, David Hildenbrand wrote= : >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 eac= h >> page from the page at address zero to the first available page, but it >> 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(unsigned= 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; >> - } > >So, if the first pfn in a pageblock is not valid, we skip the whole pageb= lock =2E=2E=2E > >> + for_each_valid_pfn(pfn, spfn, epfn) { >> __init_single_page(pfn_to_page(pfn), pfn, zone, node); >> __SetPageReserved(pfn_to_page(pfn)); >> pgcnt++; > >but here, we would process further pfns inside such a pageblock? > Is it not the case that either *all*, or *none*, of the PFNs within a give= n pageblock will be valid?=20 I assumed that was *why* it had that skip, as an attempt at the kind of op= timisation that for_each_valid_pfn() now gives us?