On Tue, Jul 07, 2026 at 12:47:43PM -0700, Stanislav Kinsburskii wrote: > Several GPU SVM paths take mmap_read_lock() only to call hmm_range_fault(), > then retry -EBUSY until HMM_RANGE_DEFAULT_TIMEOUT expires. Those paths use > MMU interval notifiers whose mm matches the mm that was locked for the HMM > fault. > > Use hmm_range_fault_unlocked_timeout() for those faults and pass the > remaining retry budget to HMM. The helper owns mmap_lock acquisition and > refreshes range->notifier_seq internally for each retry, while GPU SVM > keeps its existing driver-lock validation with mmu_interval_read_retry() > after a successful fault. > > Leave drm_gpusvm_check_pages() on hmm_range_fault() because that path is > called with the mmap lock already held by its caller. > > Signed-off-by: Stanislav Kinsburskii <[email protected]> > --- > drivers/gpu/drm/drm_gpusvm.c | 52 > ++++++------------------------------------ > 1 file changed, 7 insertions(+), 45 deletions(-)
Reviewed-by: Jason Gunthorpe <[email protected]> > - mmap_read_unlock(range->gpusvm->mm); > + err = hmm_range_fault_unlocked_timeout(&hmm_range, > + max_t(long, timeout - jiffies, 1)); Same remark about max_t Jason
