folio_maybe_dma_pinned(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

โœจ NAME โœจ

okay so bestie, welcome to folio_maybe_dma_pinned(9) from the Kernel API Manual ๐Ÿ’– โ€” the whole vibe is: Report if a folio may be pinned for DMA. No cap, thatโ€™s the name energy.


๐Ÿ“œ SYNOPSIS ๐Ÿ“œ

bool folio_maybe_dma_pinned (struct folio *folio );

๐Ÿซถ ARGUMENTS ๐Ÿซถ

  • folio โ€” The folio. literally the folio, thatโ€™s the arg ๐ŸŽ€

๐Ÿ’ซ DESCRIPTION ๐Ÿ’ซ

This function checks if a folio has been pinned via a call to a function in the pin_user_pages family. yep, thatโ€™s the whole quest ๐Ÿ’…

For small folios, the return value is partially fuzzy: false is not fuzzy, because it means โ€œdefinitely not pinned for DMAโ€, but true means โ€œprobably pinned for DMA, but possibly a false positive due to having at least GUP_PIN_COUNTING_BIAS worth of normal folio referencesโ€. bestie, the vibes are approximate but the words are exact ๐Ÿซถ

False positives are OK, because:

  • a) itโ€™s unlikely for a folio to get that many refcounts, and
  • b) all the callers of this routine are expected to be able to deal gracefully with a false positive.

For most large folios, the result will be exactly correct. Thatโ€™s because we have more tracking data available: the _pincount field is used instead of the GUP_PIN_COUNTING_BIAS scheme. more tracking data = main character energy โœจ

For more information, please see Documentation/core-api/pin_user_pages.rst ๐Ÿ“š


๐ŸŽ€ RETURN ๐ŸŽ€

True, if it is likely that the folio has been โ€œdma-pinnedโ€. False, if the folio is definitely not dma-pinned. no fuzzy false, just fuzzy true, iykyk ๐Ÿ’œ


๐Ÿ”— SEE ALSO ๐Ÿ”—

Kernel file ./include/linux/mm.h is on the list too, and then the whole friend group is: folio_page_idx(9), vma_flag_t(9), fault_flag_allow_retry_first(9), vma_kernel_pagesize(9), folio_order(9), folio_reset_order(9), folio_mapcount(9), folio_mapped(9), thp_order(9), thp_size(9), folio_get(9), folio_put(9), folio_put_refs(9), folios_put(9), vma_flags_is_cow_mapping(9), vma_is_cow_mapping(9), vma_desc_is_cow_mapping(9), folio_pfn(9), folio_mk_pte(9), folio_mk_pmd(9), folio_mk_pud(9), is_zero_page(9), is_zero_folio(9), folio_nr_pages(9), folio_next(9), folio_shift(9), folio_size(9), folio_maybe_mapped_shared(9), folio_expected_ref_count(9), zap_vma(9), ptdesc_address(9), ptdesc_set_kernel(9), ptdesc_clear_kernel(9), ptdesc_test_kernel(9), pagetable_alloc(9), pagetable_free(9), vma_lookup(9), vma_start_pgoff(9), vma_end_pgoff(9), vma_last_pgoff(9), vma_start_anon_pgoff(9), vma_end_anon_pgoff(9), vma_last_anon_pgoff(9), mmap_action_remap(9), mmap_action_remap_full(9), mmap_action_ioremap(9), mmap_action_ioremap_full(9), mmap_action_simple_ioremap(9), mmap_action_map_kernel_pages(9), mmap_action_map_kernel_pages_full(9), range_is_subset(9), range_in_vma(9), range_in_vma_desc(9), clear_pages(9) ๐Ÿ’…โœจ


okay thatโ€™s the whole read, bestie ๐Ÿซถ Source/version: ./include/linux ยท date: October 2026 ยท page: folio_maybe_dma_pinned(9) โ€” mwah, go forth and vibe-check those folios ๐Ÿ’–๐ŸŽ€

๐Ÿ“ฆ where this page comes from