From: Mike Rapoport <rppt@kernel.org>
To: David Woodhouse <dwmw2@infradead.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
"Sauerwein, David" <dssauerw@amazon.de>,
Anshuman Khandual <anshuman.khandual@arm.com>,
Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
David Hildenbrand <david@redhat.com>,
Marc Zyngier <maz@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Mike Rapoport <rppt@linux.ibm.com>, Will Deacon <will@kernel.org>,
kvmarm@lists.cs.columbia.edu,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC PATCH 3/3] mm: Implement for_each_valid_pfn() for CONFIG_SPARSEMEM
Date: Thu, 3 Apr 2025 09:24:04 +0300 [thread overview]
Message-ID: <Z-4phOInXZlxFwk9@kernel.org> (raw)
In-Reply-To: <20250402201841.3245371-3-dwmw2@infradead.org>
On Wed, Apr 02, 2025 at 09:18:41PM +0100, David Woodhouse wrote:
> From: David Woodhouse <dwmw@amazon.co.uk>
>
> Introduce a pfn_first_valid() helper which takes a pointer to the PFN and
> updates it to point to the first valid PFN starting from that point, and
> returns true if a valid PFN was found.
>
> This largely mirrors pfn_valid(), calling into a pfn_section_first_valid()
> helper which is trivial for the !CONFIG_SPARSEMEM_VMEMMAP case, and in
> the VMEMMAP case will skip to the next subsection as needed.
>
> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
with a small nit below
> +static inline bool first_valid_pfn(unsigned long *p_pfn)
> +{
> + unsigned long pfn = *p_pfn;
> + unsigned long nr = pfn_to_section_nr(pfn);
> + struct mem_section *ms;
> + bool ret = false;
> +
> + ms = __pfn_to_section(pfn);
> +
> + rcu_read_lock_sched();
> +
> + while (!ret && nr <= __highest_present_section_nr) {
This could be just for(;;), we anyway break when ret becomes true or we get
past last present section.
> + if (valid_section(ms) &&
> + (early_section(ms) || pfn_section_first_valid(ms, &pfn))) {
> + ret = true;
> + break;
> + }
> +
> + nr++;
> + if (nr > __highest_present_section_nr)
> + break;
> +
> + pfn = section_nr_to_pfn(nr);
> + ms = __pfn_to_section(pfn);
> + }
> +
> + rcu_read_unlock_sched();
> +
> + *p_pfn = pfn;
> +
> + return ret;
> +}
> +
> +#define for_each_valid_pfn(_pfn, _start_pfn, _end_pfn) \
> + for ((_pfn) = (_start_pfn); \
> + first_valid_pfn(&(_pfn)) && (_pfn) < (_end_pfn); \
> + (_pfn)++)
> +
> #endif
>
> static inline int pfn_in_present_section(unsigned long pfn)
> --
> 2.49.0
>
--
Sincerely yours,
Mike.
next prev parent reply other threads:[~2025-04-03 6:29 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-11 10:05 [PATCH v4 0/4] arm64: drop pfn_valid_within() and simplify pfn_valid() Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` [PATCH v4 1/4] include/linux/mmzone.h: add documentation for pfn_valid() Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:22 ` Ard Biesheuvel
2021-05-11 10:22 ` Ard Biesheuvel
2021-05-11 10:22 ` Ard Biesheuvel
2021-05-11 10:05 ` [PATCH v4 2/4] memblock: update initialization of reserved pages Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:23 ` Ard Biesheuvel
2021-05-11 10:23 ` Ard Biesheuvel
2021-05-11 10:23 ` Ard Biesheuvel
2025-03-31 12:50 ` David Woodhouse
2025-03-31 14:50 ` Mike Rapoport
2025-03-31 15:13 ` David Woodhouse
2025-04-01 11:33 ` Mike Rapoport
2025-04-01 11:50 ` David Woodhouse
2025-04-01 13:19 ` Mike Rapoport
2025-04-02 20:18 ` [RFC PATCH 1/3] mm: Introduce for_each_valid_pfn() and use it from reserve_bootmem_region() David Woodhouse
2025-04-02 20:18 ` [RFC PATCH 2/3] mm: Implement for_each_valid_pfn() for CONFIG_FLATMEM David Woodhouse
2025-04-03 6:19 ` Mike Rapoport
2025-04-02 20:18 ` [RFC PATCH 3/3] mm: Implement for_each_valid_pfn() for CONFIG_SPARSEMEM David Woodhouse
2025-04-03 6:24 ` Mike Rapoport [this message]
2025-04-03 7:07 ` David Woodhouse
2025-04-03 7:15 ` David Woodhouse
2025-04-03 14:13 ` Mike Rapoport
2025-04-03 14:17 ` David Woodhouse
2025-04-03 14:25 ` Mike Rapoport
2025-04-03 14:10 ` Mike Rapoport
2025-04-03 6:19 ` [RFC PATCH 1/3] mm: Introduce for_each_valid_pfn() and use it from reserve_bootmem_region() Mike Rapoport
2021-05-11 10:05 ` [PATCH v4 3/4] arm64: decouple check whether pfn is in linear map from pfn_valid() Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:25 ` Ard Biesheuvel
2021-05-11 10:25 ` Ard Biesheuvel
2021-05-11 10:25 ` Ard Biesheuvel
2021-05-11 10:05 ` [PATCH v4 4/4] arm64: drop pfn_valid_within() and simplify pfn_valid() Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:05 ` Mike Rapoport
2021-05-11 10:26 ` Ard Biesheuvel
2021-05-11 10:26 ` Ard Biesheuvel
2021-05-11 10:26 ` Ard Biesheuvel
2021-05-11 23:40 ` Andrew Morton
2021-05-11 23:40 ` Andrew Morton
2021-05-11 23:40 ` Andrew Morton
2021-05-12 5:31 ` Mike Rapoport
2021-05-12 5:31 ` Mike Rapoport
2021-05-12 5:31 ` Mike Rapoport
2021-05-12 3:13 ` [PATCH v4 0/4] " Kefeng Wang
2021-05-12 3:13 ` Kefeng Wang
2021-05-12 3:13 ` Kefeng Wang
2021-05-12 7:00 ` Ard Biesheuvel
2021-05-12 7:00 ` Ard Biesheuvel
2021-05-12 7:00 ` Ard Biesheuvel
2021-05-12 7:33 ` Mike Rapoport
2021-05-12 7:33 ` Mike Rapoport
2021-05-12 7:33 ` Mike Rapoport
2021-05-12 7:59 ` Ard Biesheuvel
2021-05-12 7:59 ` Ard Biesheuvel
2021-05-12 7:59 ` Ard Biesheuvel
2021-05-12 8:32 ` Mike Rapoport
2021-05-12 8:32 ` Mike Rapoport
2021-05-12 8:32 ` Mike Rapoport
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Z-4phOInXZlxFwk9@kernel.org \
--to=rppt@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=anshuman.khandual@arm.com \
--cc=ardb@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=david@redhat.com \
--cc=dssauerw@amazon.de \
--cc=dwmw2@infradead.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=rppt@linux.ibm.com \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.