On Wed, Mar 11, 2020 at 03:35:00PM -0300, Jason Gunthorpe wrote:
> @@ -694,6 +672,15 @@ long hmm_range_fault(struct hmm_range *range, unsigned 
> int flags)
>                       return -EBUSY;
>               ret = walk_page_range(mm, hmm_vma_walk.last, range->end,
>                                     &hmm_walk_ops, &hmm_vma_walk);
> +             /*
> +              * A pgmap is kept cached in the hmm_vma_walk to avoid expensive
> +              * searching in the probably common case that the pgmap is the
> +              * same for the entire requested range.
> +              */
> +             if (hmm_vma_walk.pgmap) {
> +                     put_dev_pagemap(hmm_vma_walk.pgmap);
> +                     hmm_vma_walk.pgmap = NULL;
> +             }
>       } while (ret == -EBUSY);

In which case it should only be put on return, and not for every loop.

I still think the right fix is to just delete all the unused and broken
pgmap handling code.  If we ever need to add it back it can be added
in a proper understood and tested way.
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to