]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm: add folio_is_pci_p2pdma()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 5 Aug 2025 17:23:01 +0000 (18:23 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 12 Sep 2025 00:25:09 +0000 (17:25 -0700)
Reimplement is_pci_p2pdma_page() in terms of folio_is_pci_p2pdma().  Moves
the page_folio() call from inside page_pgmap() to is_pci_p2pdma_page().
This removes a page_folio() call from try_grab_folio() which already has a
folio and can pass it in.

Link: https://lkml.kernel.org/r/20250805172307.1302730-12-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Shakeel Butt <shakeel.butt@linux.dev>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/memremap.h
mm/gup.c

index 450d4bb6835cc780be67e61d642eb4b87845b254..aa1b6aa877a029c58d86b18df387341e6a568b07 100644 (file)
@@ -170,11 +170,17 @@ static inline bool is_device_private_page(const struct page *page)
                folio_is_device_private(page_folio(page));
 }
 
+static inline bool folio_is_pci_p2pdma(const struct folio *folio)
+{
+       return IS_ENABLED(CONFIG_PCI_P2PDMA) &&
+               folio_is_zone_device(folio) &&
+               folio->pgmap->type == MEMORY_DEVICE_PCI_P2PDMA;
+}
+
 static inline bool is_pci_p2pdma_page(const struct page *page)
 {
        return IS_ENABLED(CONFIG_PCI_P2PDMA) &&
-               is_zone_device_page(page) &&
-               page_pgmap(page)->type == MEMORY_DEVICE_PCI_P2PDMA;
+               folio_is_pci_p2pdma(page_folio(page));
 }
 
 static inline bool folio_is_device_coherent(const struct folio *folio)
index 134a2c86f4402daad8e610006f43b5ce8af2d587..ed02d65f9c7254a56b5c025d2716e7493ba64bd1 100644 (file)
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -148,7 +148,7 @@ int __must_check try_grab_folio(struct folio *folio, int refs,
        if (WARN_ON_ONCE(folio_ref_count(folio) <= 0))
                return -ENOMEM;
 
-       if (unlikely(!(flags & FOLL_PCI_P2PDMA) && is_pci_p2pdma_page(&folio->page)))
+       if (unlikely(!(flags & FOLL_PCI_P2PDMA) && folio_is_pci_p2pdma(folio)))
                return -EREMOTEIO;
 
        if (flags & FOLL_GET)