I was wondering if we can better integrate that into the pagewalk below.
That is, don't do the TTU_SPLIT_HUGE_PMD immediately. Start the pagewalk
first. If we walk a PMD, try to unmap it. Only if that fails, split it.
Nice. Thanks for the suggestion!
I'll work on integrating it into the pagewalk as you suggested.
Less working on "vma + address" and instead directly on PMDs.
Yes, some of the work on "vma + address" can be avoided :)
Doing the conditional split while in the pagewalk will be the
interesting bit to sort out (we temporarily have to drop the PTL and
start once again from that now-PTE-mapped page table). But it should be
a reasonable thing to have.
Please let us know if you run into bigger issues with that!
See walk_pmd_range() as an inspiration where we call split_huge_pmd().
--
Cheers,
David / dhildenb