On 8/6/19 4:15 PM, Jason Gunthorpe wrote:
From: Jason Gunthorpe jgg@mellanox.com
This is a significant simplification, it eliminates all the remaining 'hmm' stuff in mm_struct, eliminates krefing along the critical notifier paths, and takes away all the ugly locking and abuse of page_table_lock.
mmu_notifier_get() provides the single struct hmm per struct mm which eliminates mm->hmm.
It also directly guarantees that no mmu_notifier op callback is callable while concurrent free is possible, this eliminates all the krefs inside the mmu_notifier callbacks.
The remaining krefs in the range code were overly cautious, drivers are already not permitted to free the mirror while a range exists.
Signed-off-by: Jason Gunthorpe jgg@mellanox.com
Looks good. Reviewed-by: Ralph Campbell rcampbell@nvidia.com