]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
mm, x86: Use for_each_valid_pfn() from __ioremap_check_ram()
authorDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 4 Apr 2025 13:34:56 +0000 (14:34 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 23 Apr 2025 12:07:09 +0000 (13:07 +0100)
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.

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.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;
        }