On Wed, Apr 17, 2024 at 4:19 PM David Hildenbrand <david@xxxxxxxxxx> wrote: > > 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. Got it. Let's keep it as is for now :) Thanks, Lance > > -- > Cheers, > > David / dhildenb >