[bug report] drm/xe/svm: Implement prefetch support for SVM ranges
Ghimiray, Himal Prasad
himal.prasad.ghimiray at intel.com
Mon May 26 16:45:17 UTC 2025
On 26-05-2025 20:36, Dan Carpenter wrote:
> Hello Himal Prasad Ghimiray,
>
> Commit 09ba0a8f06cd ("drm/xe/svm: Implement prefetch support for SVM
> ranges") from May 13, 2025 (linux-next), leads to the following
> Smatch static checker warning:
>
> drivers/gpu/drm/xe/xe_vm.c:2922 prefetch_ranges()
> warn: passing positive error code 's32min-(-96),(-94)-(-15),(-13)-(-12),(-10)-(-2),1' to 'ERR_PTR'
Hi Dan,
Thanks for pointing this out. I see there's a gap in how
hmm_range_fault() adheres to its documented behavior. I believe the
function should sanitize positive return values from walk_page_range()
to ensure consistency.
Jason can comment further on same.
>
> drivers/gpu/drm/xe/xe_vm.c
> 2917
> 2918 err = xe_svm_range_get_pages(vm, svm_range, &ctx);
> 2919 if (err) {
> 2920 if (err == -EOPNOTSUPP || err == -EFAULT || err == -EPERM)
> 2921 err = -ENODATA;
> --> 2922 drm_dbg(&vm->xe->drm, "Get pages failed, asid=%u, gpusvm=%p, errno=%pe\n",
> 2923 vm->usm.asid, &vm->svm.gpusvm, ERR_PTR(err));
>
> The comments on walk_page_range() say it can return > 0 on success but
> the comments on hmm_range_fault() say it can never return > 0. Smatch
> does a naive reading of the code and thinks that it can return > 0.
>
> Presumably the comments are correct but the code is too tricky for me.
>
> I can easily silence this in Smatch by adding deleting the positive
> returns from hmm_range_fault() from the cross function DB. Can someone
> confirm that's the correct thing to do?
>
> 2924 return err;
> 2925 }
> 2926 xe_svm_range_debug(svm_range, "PREFETCH - RANGE GET PAGES DONE");
> 2927 }
> 2928
> 2929 return err;
> 2930 }
>
> regards,
> dan carpenter
More information about the dri-devel
mailing list