]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm, x86: use for_each_valid_pfn() from __ioremap_check_ram()
authorDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 23 Apr 2025 13:33:41 +0000 (14:33 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 13 May 2025 06:50:44 +0000 (23:50 -0700)
Instead of calling pfn_valid() separately for every single PFN in the
range, use for_each_valid_pfn() and only look at the ones which are.

Link: https://lkml.kernel.org/r/20250423133821.789413-6-dwmw2@infradead.org
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: David Hildenbrand <david@redhat.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>
arch/x86/mm/ioremap.c

index 331e101bf801d1de4b060e18b371ed6a40aeaa85..12c8180ca1ba7473f42c5d4cef306657356dae40 100644 (file)
@@ -71,7 +71,7 @@ int ioremap_change_attr(unsigned long vaddr, unsigned long size,
 static unsigned int __ioremap_check_ram(struct resource *res)
 {
        unsigned long start_pfn, stop_pfn;
-       unsigned long i;
+       unsigned long pfn;
 
        if ((res->flags & IORESOURCE_SYSTEM_RAM) != IORESOURCE_SYSTEM_RAM)
                return 0;
@@ -79,9 +79,8 @@ static unsigned int __ioremap_check_ram(struct resource *res)
        start_pfn = (res->start + PAGE_SIZE - 1) >> PAGE_SHIFT;
        stop_pfn = (res->end + 1) >> PAGE_SHIFT;
        if (stop_pfn > start_pfn) {
-               for (i = 0; i < (stop_pfn - start_pfn); ++i)
-                       if (pfn_valid(start_pfn + i) &&
-                           !PageReserved(pfn_to_page(start_pfn + i)))
+               for_each_valid_pfn(pfn, start_pfn, stop_pfn)
+                       if (!PageReserved(pfn_to_page(pfn)))
                                return IORES_MAP_SYSTEM_RAM;
        }