Lines Matching refs:folio
132 static inline void *kmap_local_folio(struct folio *folio, size_t offset);
224 struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma, in vma_alloc_zeroed_movable_folio()
227 struct folio *folio; in vma_alloc_zeroed_movable_folio() local
229 folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_CMA, 0, vma, vaddr, false); in vma_alloc_zeroed_movable_folio()
230 if (folio) in vma_alloc_zeroed_movable_folio()
231 clear_user_highpage(&folio->page, vaddr); in vma_alloc_zeroed_movable_folio()
233 return folio; in vma_alloc_zeroed_movable_folio()
455 static inline void memcpy_from_folio(char *to, struct folio *folio, in memcpy_from_folio() argument
458 VM_BUG_ON(offset + len > folio_size(folio)); in memcpy_from_folio()
461 const char *from = kmap_local_folio(folio, offset); in memcpy_from_folio()
464 if (folio_test_partial_kmap(folio) && in memcpy_from_folio()
483 static inline void memcpy_to_folio(struct folio *folio, size_t offset, in memcpy_to_folio() argument
486 VM_BUG_ON(offset + len > folio_size(folio)); in memcpy_to_folio()
489 char *to = kmap_local_folio(folio, offset); in memcpy_to_folio()
492 if (folio_test_partial_kmap(folio) && in memcpy_to_folio()
503 flush_dcache_folio(folio); in memcpy_to_folio()
520 static inline __must_check void *folio_zero_tail(struct folio *folio, in folio_zero_tail() argument
523 size_t len = folio_size(folio) - offset; in folio_zero_tail()
525 if (folio_test_partial_kmap(folio)) { in folio_zero_tail()
534 kaddr = kmap_local_folio(folio, offset); in folio_zero_tail()
539 flush_dcache_folio(folio); in folio_zero_tail()
556 static inline void folio_fill_tail(struct folio *folio, size_t offset, in folio_fill_tail() argument
559 char *to = kmap_local_folio(folio, offset); in folio_fill_tail()
561 VM_BUG_ON(offset + len > folio_size(folio)); in folio_fill_tail()
563 if (folio_test_partial_kmap(folio)) { in folio_fill_tail()
573 to = kmap_local_folio(folio, offset); in folio_fill_tail()
578 to = folio_zero_tail(folio, offset + len, to + len); in folio_fill_tail()
594 static inline size_t memcpy_from_file_folio(char *to, struct folio *folio, in memcpy_from_file_folio() argument
597 size_t offset = offset_in_folio(folio, pos); in memcpy_from_file_folio()
598 char *from = kmap_local_folio(folio, offset); in memcpy_from_file_folio()
600 if (folio_test_partial_kmap(folio)) { in memcpy_from_file_folio()
604 len = min(len, folio_size(folio) - offset); in memcpy_from_file_folio()
620 static inline void folio_zero_segments(struct folio *folio, in folio_zero_segments() argument
623 zero_user_segments(&folio->page, start1, xend1, start2, xend2); in folio_zero_segments()
632 static inline void folio_zero_segment(struct folio *folio, in folio_zero_segment() argument
635 zero_user_segments(&folio->page, start, xend, 0, 0); in folio_zero_segment()
644 static inline void folio_zero_range(struct folio *folio, in folio_zero_range() argument
647 zero_user_segments(&folio->page, start, start + length, 0, 0); in folio_zero_range()
659 static inline void folio_release_kmap(struct folio *folio, void *addr) in folio_release_kmap() argument
662 folio_put(folio); in folio_release_kmap()