Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm: convert put_devmap_managed_page_refs() to put_devmap_managed_folio_refs()

All callers have a folio so we can remove this use of
page_ref_sub_return().

Link: https://lkml.kernel.org/r/20240424191914.361554-4-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
53e45c4f 6785c54a

+15 -15
+6 -6
include/linux/mm.h
··· 1441 1441 #if defined(CONFIG_ZONE_DEVICE) && defined(CONFIG_FS_DAX) 1442 1442 DECLARE_STATIC_KEY_FALSE(devmap_managed_key); 1443 1443 1444 - bool __put_devmap_managed_page_refs(struct page *page, int refs); 1445 - static inline bool put_devmap_managed_page_refs(struct page *page, int refs) 1444 + bool __put_devmap_managed_folio_refs(struct folio *folio, int refs); 1445 + static inline bool put_devmap_managed_folio_refs(struct folio *folio, int refs) 1446 1446 { 1447 1447 if (!static_branch_unlikely(&devmap_managed_key)) 1448 1448 return false; 1449 - if (!is_zone_device_page(page)) 1449 + if (!folio_is_zone_device(folio)) 1450 1450 return false; 1451 - return __put_devmap_managed_page_refs(page, refs); 1451 + return __put_devmap_managed_folio_refs(folio, refs); 1452 1452 } 1453 1453 #else /* CONFIG_ZONE_DEVICE && CONFIG_FS_DAX */ 1454 - static inline bool put_devmap_managed_page_refs(struct page *page, int refs) 1454 + static inline bool put_devmap_managed_folio_refs(struct folio *folio, int refs) 1455 1455 { 1456 1456 return false; 1457 1457 } ··· 1575 1575 * For some devmap managed pages we need to catch refcount transition 1576 1576 * from 2 to 1: 1577 1577 */ 1578 - if (put_devmap_managed_page_refs(&folio->page, 1)) 1578 + if (put_devmap_managed_folio_refs(folio, 1)) 1579 1579 return; 1580 1580 folio_put(folio); 1581 1581 }
+3 -3
mm/gup.c
··· 89 89 * belongs to this folio. 90 90 */ 91 91 if (unlikely(page_folio(page) != folio)) { 92 - if (!put_devmap_managed_page_refs(&folio->page, refs)) 92 + if (!put_devmap_managed_folio_refs(folio, refs)) 93 93 folio_put_refs(folio, refs); 94 94 goto retry; 95 95 } ··· 156 156 */ 157 157 if (unlikely((flags & FOLL_LONGTERM) && 158 158 !folio_is_longterm_pinnable(folio))) { 159 - if (!put_devmap_managed_page_refs(&folio->page, refs)) 159 + if (!put_devmap_managed_folio_refs(folio, refs)) 160 160 folio_put_refs(folio, refs); 161 161 return NULL; 162 162 } ··· 198 198 refs *= GUP_PIN_COUNTING_BIAS; 199 199 } 200 200 201 - if (!put_devmap_managed_page_refs(&folio->page, refs)) 201 + if (!put_devmap_managed_folio_refs(folio, refs)) 202 202 folio_put_refs(folio, refs); 203 203 } 204 204
+5 -5
mm/memremap.c
··· 512 512 EXPORT_SYMBOL_GPL(zone_device_page_init); 513 513 514 514 #ifdef CONFIG_FS_DAX 515 - bool __put_devmap_managed_page_refs(struct page *page, int refs) 515 + bool __put_devmap_managed_folio_refs(struct folio *folio, int refs) 516 516 { 517 - if (page->pgmap->type != MEMORY_DEVICE_FS_DAX) 517 + if (folio->page.pgmap->type != MEMORY_DEVICE_FS_DAX) 518 518 return false; 519 519 520 520 /* ··· 522 522 * refcount is 1, then the page is free and the refcount is 523 523 * stable because nobody holds a reference on the page. 524 524 */ 525 - if (page_ref_sub_return(page, refs) == 1) 526 - wake_up_var(&page->_refcount); 525 + if (folio_ref_sub_return(folio, refs) == 1) 526 + wake_up_var(&folio->_refcount); 527 527 return true; 528 528 } 529 - EXPORT_SYMBOL(__put_devmap_managed_page_refs); 529 + EXPORT_SYMBOL(__put_devmap_managed_folio_refs); 530 530 #endif /* CONFIG_FS_DAX */
+1 -1
mm/swap.c
··· 980 980 unlock_page_lruvec_irqrestore(lruvec, flags); 981 981 lruvec = NULL; 982 982 } 983 - if (put_devmap_managed_page_refs(&folio->page, nr_refs)) 983 + if (put_devmap_managed_folio_refs(folio, nr_refs)) 984 984 continue; 985 985 if (folio_ref_sub_and_test(folio, nr_refs)) 986 986 free_zone_device_folio(folio);