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 A5850C369D3 for ; Wed, 23 Apr 2025 11:11:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE0BF6B0089; Wed, 23 Apr 2025 07:11:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A8F1F6B008A; Wed, 23 Apr 2025 07:11:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 930D96B009C; Wed, 23 Apr 2025 07:11:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 730076B0089 for ; Wed, 23 Apr 2025 07:11:58 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 43E2A14248B for ; Wed, 23 Apr 2025 11:11:58 +0000 (UTC) X-FDA: 83365043916.30.62A1BD7 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf05.hostedemail.com (Postfix) with ESMTP id 9DB83100002 for ; Wed, 23 Apr 2025 11:11:56 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NxTlcq56; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745406716; a=rsa-sha256; cv=none; b=nC7BXzAJLH8n9F1ATU2Ez1FLM3Bj5lZ1mVg4oxa9OZJgEP9VdiJRzmCJzrBgrH7r9ssxTM q+xaQPptbu1QtaiXa1a3ke06DTOKjvgD+gypiN9dEOd+RJzCw8/frvpDJx2vL90MB1ASTd buBtHxC8KKSwboOHKufnc7+zRYlf7uI= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NxTlcq56; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf05.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 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=1745406716; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Ep37Lk8cbj1uZK5RIghJDl9JD8qjOsYP9VkjRsT48SQ=; b=Wy+sRAjkqDhcoEOcVFwMi5TBUGIgLBPYKnLG8cQLsW4vqJCs6+MBFN77CydgKbHkvdKzB8 wJrXvXkyI12Kzodej5+IuQQ0RgzzC95aDheJ350D8s6ZMCyQbulpkBEsn5fJu7tGu7ThZs 0M39HEUbN5Qei9jfeLdjtHeBATaepXo= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 8F0325C564D; Wed, 23 Apr 2025 11:09:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EACEFC4CEE2; Wed, 23 Apr 2025 11:11:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745406715; bh=7JF7P2qS4SB6DrZAGOl+9+UQooOUX8XT2naGwe0eouI=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=NxTlcq561futisD+LRi+fsEdtwocQ4KhTRWJWnnBSsh1LHwiTKkmT3KBKo0AX09ia ooXxJil4w12RGrbJQr4/jfwpAKi48wbPhs8inj8Yzz1YD5/nABsoBSYEMA/Mn6dvrM DDmfDfo7m9thdECwKNCorxyHVLI8s4/n+N3Sf7a37r28ebV3BE9wS7+Zdkfr/VObnN qC82fIHCKgQcSXM2oIx/odVp3YUVVQW2gr/WYiQint/oU1+NB7wHVw/6EJukdw1tFl DeUnWLbqHPsJyzeuR/tR5wnTVeQ9b2lwVEfcb69av6nmM+8/Q7k8CLQyV0W+0N7F/H MgjHDQMOMOsOg== Date: Wed, 23 Apr 2025 14:11:45 +0300 From: Mike Rapoport To: David Woodhouse Cc: Andrew Morton , "Sauerwein, David" , Anshuman Khandual , Ard Biesheuvel , Catalin Marinas , David Hildenbrand , Marc Zyngier , Mark Rutland , Mike Rapoport , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Ruihan Li Subject: Re: [PATCH v3 3/7] mm: Implement for_each_valid_pfn() for CONFIG_SPARSEMEM Message-ID: References: <20250423081828.608422-1-dwmw2@infradead.org> <20250423081828.608422-4-dwmw2@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250423081828.608422-4-dwmw2@infradead.org> X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 9DB83100002 X-Stat-Signature: y1t9i6ac5u4iwww4rbcdsoq5cwxsku7p X-HE-Tag: 1745406716-642282 X-HE-Meta: U2FsdGVkX19n4kAi9hXvh67ydPpKN59JvC9mgKxsT6JfQWZS2qQ2JPiqkE0xop9JuuWkQNPZtqhpL4xhHKQAGBwi/vK63IpFU1qnla8JryxU4JlS3ns98x2I/7pxB8FiVlbhFztVVpRCNxpXlecIiac6d7rr45tX3l87k8xsLjR0Z88sOC6wfrYx7UGmU4aZWhS4lHzhtLcH7X7yl5U1/U9DIpFSZgJCBq3BJjR9C/4oCuKYdLgibBhW/jW0zK8cb2aIhixo9hFyz+d0lowF1DJiH1k/6Dye5Wdn5W7SiOHPlXCq2BFe0PW8bA1Py7LjfymJS9cmwtixL54nRh+vBqnSeIY8ON1SjThNDrmGartF9V1Nu1iY/QgkhNdScjOT3MH3zp6Ft8YVT/hfmuLu1cpy8jeWoiSfywoKieLiwD6Hm1r0KFdX/HS0jApLHrRvRvh86GYCF0t07uXbN/CsVi2aJFMggqwIFjjCoMHzGfYbU6ILVrApMJeMYHUmc9XVkNmvO10yjdUVoxsnqsPaFVNpQZPBIK9x1HxpPhv/CYmHA02tpuaW+6q5uAOP873l6auFnAVJAVzdLv+/WrpxjLX8NzZ1rgojzIZ42JwDuhKFsmVAu76r5F4Y30x18s9skj132T/QykjRymWBeLxCDLILLOKkz1IXPHAcAT4j6dbSDWVwl6voMPVzv6yFEp1hFM+kbth4NxHfhhpLhw9fpdxIf9mE/hdML83eUY4JkZf6musxmpgr8H1JGuuzrrfxZLloB22F8ZM+fG0KkRBs55Qle1zsmO68o2BhNLfhh8zKgyILPa0gzX2Vj01S2gZsS3vBT0zhVTTTa0Ws/2cm3lDg+z2V6I1ZVHlQpMJqK+b79v1Xqo4jTsObftnnRqCjKTdmuNi8QdwUd4CvXR9/r5SNhM+zuVlK1NfPVB9JjRjok1d/pU5yLJ8Kmr5k9JNdje1kKP9Z6wJp1XxE2MB NSQhQwX4 Qh1YJT1M/RXzY6yeet77k5mpwwZFejvHAXD+aXOOVuDW+05eif0MTMCqUspaVd2ILOpK8/OPHsZWh/gz8zerfmKbBefRafk5I2k/pS6CZ85Krxkb6bzORinIe7XG2SlP/qC89EUZCoI2nGygiIGaBTsplYXj3fAE182Ari2PtPFj1kAPlNdHHbKf4tcXG82GtIS0+On0Wwcm9LfRNO4p2GAJALiCpXW0Or8YcFbycDmudA+K8hfBqM7OsoWFeQHLQTiCdAxIe33vMZokZU4Me+2oR8l7aVWFy+wqZUwV4buJbePYTUgdoVSFFJ32ETBhuwoyEDXFELpSaLKtgxQNMA3WmvGlRWfg9NB9e 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 Wed, Apr 23, 2025 at 08:52:45AM +0100, David Woodhouse wrote: > From: David Woodhouse > > Implement for_each_valid_pfn() based on two helper functions. > > The first_valid_pfn() function largely mirrors pfn_valid(), calling into > a pfn_section_first_valid() helper which is trivial for the !VMEMMAP case, > and in the VMEMMAP case will skip to the next subsection as needed. > > Since next_valid_pfn() knows that its argument *is* a valid PFN, it > doesn't need to do any checking at all while iterating over the low bits > within a (sub)section mask; the whole (sub)section is either present or > not. > > Note that the VMEMMAP version of pfn_section_first_valid() may return a > value *higher* than end_pfn when skipping to the next subsection, and > first_valid_pfn() happily returns that higher value. This is fine. > > Signed-off-by: David Woodhouse > Previous-revision-reviewed-by: Mike Rapoport (Microsoft) > --- > include/asm-generic/memory_model.h | 26 ++++++++-- > include/linux/mmzone.h | 78 ++++++++++++++++++++++++++++++ > 2 files changed, 99 insertions(+), 5 deletions(-) > > diff --git a/include/asm-generic/memory_model.h b/include/asm-generic/memory_model.h > index 74d0077cc5fa..044536da3390 100644 > --- a/include/asm-generic/memory_model.h > +++ b/include/asm-generic/memory_model.h > @@ -31,12 +31,28 @@ static inline int pfn_valid(unsigned long pfn) > } > #define pfn_valid pfn_valid > > +static inline bool first_valid_pfn(unsigned long *pfn) > +{ > + /* avoid include hell */ > + extern unsigned long max_mapnr; > + unsigned long pfn_offset = ARCH_PFN_OFFSET; > + > + if (*pfn < pfn_offset) { > + *pfn = pfn_offset; > + return true; > + } > + > + if ((*pfn - pfn_offset) < max_mapnr) > + return true; > + > + return false; > +} > + Looks like it's a leftover from one of the previous versions. > #ifndef for_each_valid_pfn > -#define for_each_valid_pfn(pfn, start_pfn, end_pfn) \ > - for ((pfn) = max_t(unsigned long, (start_pfn), ARCH_PFN_OFFSET); \ > - (pfn) < min_t(unsigned long, (end_pfn), \ > - ARCH_PFN_OFFSET + max_mapnr); \ > - (pfn)++) > +#define for_each_valid_pfn(pfn, start_pfn, end_pfn) \ > + for (pfn = max_t(unsigned long, start_pfn, ARCH_PFN_OFFSET); \ > + pfn < min_t(unsigned long, end_pfn, ARCH_PFN_OFFSET + max_mapnr); \ > + pfn++) And this one is probably a rebase artifact? With FLATMEM changes dropped This-revision-also-reviewed-by: Mike Rapoport (Microsoft) > #endif /* for_each_valid_pfn */ > #endif /* valid_pfn */ > -- Sincerely yours, Mike.