* David Hildenbrand <da...@redhat.com> wrote:
> On top of mm-unstable. > > VM_PAT annoyed me too much and wasted too much of my time, let's clean > PAT handling up and remove VM_PAT. > > This should sort out various issues with VM_PAT we discovered recently, > and will hopefully make the whole code more stable and easier to maintain. > > In essence: we stop letting PAT mode mess with VMAs and instead lift > what to track/untrack to the MM core. We remember per VMA which pfn range > we tracked in a new struct we attach to a VMA (we have space without > exceeding 192 bytes), use a kref to share it among VMAs during > split/mremap/fork, and automatically untrack once the kref drops to 0. Yay! The extra pointer in vm_area_struct is a small price to pay IMHO. > This implies that we'll keep tracking a full pfn range even after partially > unmapping it, until fully unmapping it; but as that case was mostly broken > before, this at least makes it work in a way that is least intrusive to > VMA handling. > > Shrinking with mremap() used to work in a hacky way, now we'll similarly > keep the original pfn range tacked even after this form of partial unmap. > Does anybody care about that? Unlikely. If we run into issues, we could > likely handled that (adjust the tracking) when our kref drops to 1 while > freeing a VMA. But it adds more complexity, so avoid that for now. > > Briefly tested > > There will be some clash with [1], but nothing that cannot be sorted out > easily by moving the functions added to kernel/fork.c to wherever the vma > bits will live. > > Briefly tested with some basic /dev/mem test I crafted. I want to convert > them to selftests, but that might or might not require a bit of > more work (e.g., /dev/mem accessibility). So for the x86 bits, once it passes review by the fine MM folks: Acked-by: Ingo Molnar <mi...@kernel.org> And I suppose this rewrite will be carried in -mm? Thanks, Ingo