mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-04 21:49:11 +08:00
mm: implement for_each_valid_pfn() for CONFIG_FLATMEM
In the FLATMEM case, the default pfn_valid() just checks that the PFN is within the range [ ARCH_PFN_OFFSET .. ARCH_PFN_OFFSET + max_mapnr ). The for_each_valid_pfn() function can therefore be a simple for() loop using those as min/max respectively. Link: https://lkml.kernel.org/r/20250423133821.789413-3-dwmw2@infradead.org Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Acked-by: David Hildenbrand <david@redhat.com> Cc: Anshuman Khandual <anshuman.khandual@arm.com> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Marc Rutland <mark.rutland@arm.com> Cc: Marc Zyngier <maz@kernel.org> Cc: Ruihan Li <lrh2000@pku.edu.cn> Cc: Will Deacon <will@kernel.org> Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
f88ce2c84a
commit
928930c2e0
@@ -30,7 +30,15 @@ static inline int pfn_valid(unsigned long pfn)
|
||||
return pfn >= pfn_offset && (pfn - pfn_offset) < max_mapnr;
|
||||
}
|
||||
#define pfn_valid pfn_valid
|
||||
#endif
|
||||
|
||||
#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)++)
|
||||
#endif /* for_each_valid_pfn */
|
||||
#endif /* valid_pfn */
|
||||
|
||||
#elif defined(CONFIG_SPARSEMEM_VMEMMAP)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user