[PATCH v3 hmm 11/12] mm/hmm: Remove confusing comment and logic from hmm_release
Christoph Hellwig
hch at infradead.org
Wed Jun 19 12:03:52 UTC 2019
On Wed, Jun 19, 2019 at 08:56:32AM -0300, Jason Gunthorpe wrote:
> This looks a lot like the ODP code (amdgpu_mn_node == ib_umem_odp)
>
> The interval tree is to quickly find the driver object(s) that have
> the virtual pages during invalidation:
>
> static int amdgpu_mn_sync_pagetables_gfx(struct hmm_mirror *mirror,
> const struct hmm_update *update)
> {
> it = interval_tree_iter_first(&amn->objects, start, end);
> while (it) {
> [..]
> amdgpu_mn_invalidate_node(node, start, end);
>
> And following the ODP model there should be a single hmm_mirror per-mm
> (user can fork and stuff, this is something I want to have core code
> help with).
That makes the hmm_mirror object pretty silly, though as the scope
is then exactly the same as the mmu_notifier itself.
> The hmm_mirror can either exist so long as objects exist, or it can
> exist until the chardev is closed - but never longer than the
> chardev's lifetime.
>
> Maybe we should be considering providing a mmu notifier & interval
> tree & lock abstraction since ODP & AMD are very similar here..
It defintively sounds like a good idea to move this kind of object
management into common code. Nouvea actually seems like the odd one
out here by not having a list of objects below the mirror, but then
again and interval tree with a single entry wouldn't really hurt it
either.
More information about the amd-gfx
mailing list