]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mm_zone: Generalise has_managed_dma()
authorRobin Murphy <robin.murphy@arm.com>
Mon, 12 Jan 2026 15:46:37 +0000 (15:46 +0000)
committerMarek Szyprowski <m.szyprowski@samsung.com>
Wed, 14 Jan 2026 10:00:00 +0000 (11:00 +0100)
It would be useful to be able to check for potential DMA pages beyond
just ZONE_DMA - generalise the existing has_managed_dma() function to
allow checking other zones too.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: David Hildenbrand (Red Hat) <david@kernel.org>
Acked-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Tested-by: Vladimir Kondratiev <vladimir.kondratiev@mobileye.com>
Reviewed-by: Baoquan He <bhe@redhat.com>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Link: https://lore.kernel.org/r/bd002d2351074e57be1ca08f03f333debac658fb.1768230104.git.robin.murphy@arm.com
include/linux/mmzone.h
mm/page_alloc.c

index 75ef7c9f9307ff402f2132d6cc8c0299edf1705e..fc5d6c88d2f01c2ed44722b698da66c62ddecc95 100644 (file)
@@ -1648,14 +1648,15 @@ static inline int is_highmem(const struct zone *zone)
        return is_highmem_idx(zone_idx(zone));
 }
 
-#ifdef CONFIG_ZONE_DMA
-bool has_managed_dma(void);
-#else
+bool has_managed_zone(enum zone_type zone);
 static inline bool has_managed_dma(void)
 {
+#ifdef CONFIG_ZONE_DMA
+       return has_managed_zone(ZONE_DMA);
+#else
        return false;
-}
 #endif
+}
 
 
 #ifndef CONFIG_NUMA
index 822e05f1a9646b7a3992301fdeb3e7f41fd0946f..36ccc85c50736daac6442f7fccb91e5e18787425 100644 (file)
@@ -7418,20 +7418,16 @@ bool put_page_back_buddy(struct page *page)
 }
 #endif
 
-#ifdef CONFIG_ZONE_DMA
-bool has_managed_dma(void)
+bool has_managed_zone(enum zone_type zone)
 {
        struct pglist_data *pgdat;
 
        for_each_online_pgdat(pgdat) {
-               struct zone *zone = &pgdat->node_zones[ZONE_DMA];
-
-               if (managed_zone(zone))
+               if (managed_zone(&pgdat->node_zones[zone]))
                        return true;
        }
        return false;
 }
-#endif /* CONFIG_ZONE_DMA */
 
 #ifdef CONFIG_UNACCEPTED_MEMORY