[PATCH 1/7] mm: Set the pte dirty if the folio is already dirty
Alexander Gordeev
agordeev at linux.ibm.com
Tue Feb 18 23:27:21 PST 2025
On Tue, Feb 18, 2025 at 05:06:38PM +0000, Matthew Wilcox wrote:
...
> > With the above the implicit dirtifying of hugetlb PTEs (as result of
> > mk_huge_pte() -> mk_pte()) in make_huge_pte() is removed:
> >
> > static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page,
> > bool try_mkwrite)
> > {
> > ...
> > if (try_mkwrite && (vma->vm_flags & VM_WRITE)) {
> > entry = huge_pte_mkwrite(huge_pte_mkdirty(mk_huge_pte(page,
> > vma->vm_page_prot)));
> > } else {
> > entry = huge_pte_wrprotect(mk_huge_pte(page,
> > vma->vm_page_prot));
> > }
>
> Took me a moment to spot how this was getting invoked; for anyone else
> playing along, it's mk_huge_pte() which calls mk_pte().
>
> But I'm not sure how you lose out on the PTE being marked dirty. In
> the first arm that you've quoted, the pte is made dirty anyway. In the
> second arm, it's being writeprotected, so marking it dirty isn't a
> helpful thing to do because writing to it will cause a fault anyway?
>
> I know s390 is a little different, so there's probably something I'm
> missing.
No, it is just me missing the obvious.
More information about the linux-um
mailing list