Messages in this thread | | | Date | Wed, 17 Apr 2024 10:19:52 +0200 | Subject | Re: [PATCH v7 1/3] mm/madvise: introduce clear_young_dirty_ptes() batch helper | From | David Hildenbrand <> |
| |
On 17.04.24 07:04, Lance Yang wrote: > Hey David, Ryan, > > How about this change? > > static inline void clear_young_dirty_ptes(struct vm_area_struct *vma, > unsigned long addr, pte_t *ptep, > unsigned int nr, cydp_t flags) > { > if (flags == CYDP_CLEAR_YOUNG) { > for (;;) { > ptep_test_and_clear_young(vma, addr, ptep); > if (--nr == 0) > break; > ptep++; > addr += PAGE_SIZE; > } > return; > } > > pte_t pte; > > for (;;) { > pte = ptep_get_and_clear(vma->vm_mm, addr, ptep); > > if (flags & CYDP_CLEAR_YOUNG) > pte = pte_mkold(pte); > if (flags & CYDP_CLEAR_DIRTY) > pte = pte_mkclean(pte); > > if (--nr == 0) > break; > ptep++; > addr += PAGE_SIZE; > } > }
Likely it might be best to just KIS for now and leave it as is. The compiler should optimize out based on flags already, that's what I ignored.
-- Cheers,
David / dhildenb
| |