From: Matthew Brost <matthew.brost@intel.com>
To: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
Cc: <intel-xe@lists.freedesktop.org>, <thomas.hellstrom@linux.intel.com>
Subject: Re: [PATCH v5 17/20] drm/gpusvm: Introduce drm_gpusvm_range_find_or_insert_start() function
Date: Tue, 29 Apr 2025 11:35:09 -0700 [thread overview]
Message-ID: <aBEb3eB36nXXLIds@lstrano-desk.jf.intel.com> (raw)
In-Reply-To: <20250429104233.215602-18-himal.prasad.ghimiray@intel.com>
On Tue, Apr 29, 2025 at 04:12:30PM +0530, Himal Prasad Ghimiray wrote:
> The drm_gpusvm_range_find_or_insert_start() function is used to
> determine the starting address of a CPU VMA within a specified user
> range. If the range does not contain any VMA, the function returns
> ULONG_MAX.
>
> Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> ---
> drivers/gpu/drm/drm_gpusvm.c | 29 +++++++++++++++++++++++++++++
> include/drm/drm_gpusvm.h | 5 +++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
> index 40a56f38ff8e..bb7c589b8d15 100644
> --- a/drivers/gpu/drm/drm_gpusvm.c
> +++ b/drivers/gpu/drm/drm_gpusvm.c
> @@ -980,6 +980,35 @@ static void drm_gpusvm_driver_lock_held(struct drm_gpusvm *gpusvm)
> }
> #endif
>
> +/**
> + * drm_gpusvm_range_find_or_insert_start() - Find or insert start address for range
> + * @gpusvm: Pointer to the GPU SVM structure
> + * @start: The inclusive start user address.
> + * @end: The exclusive end user address.
> + *
> + * Returns: The start address of first VMA within the provided range,
> + * ULONG_MAX otherwise. Assumes start_addr < end_addr.
> + */
> +unsigned long
> +drm_gpusvm_range_find_or_insert_start(struct drm_gpusvm *gpusvm,
> + unsigned long start,
> + unsigned long end)
We don't really do an insertion here, so maybe:
s/drm_gpusvm_range_find_or_insert_start/drm_gpusvm_find_vma_start
> +{
> + struct mm_struct *mm = gpusvm->mm;
> + struct vm_area_struct *vma;
> + unsigned long addr = ULONG_MAX;
> +
Hmm, do you think we need a mmget here? I'd expect this be called from a
user context where we'd have a MM ref but maybe to be safe add a
mmget/put?
Matt
> + mmap_read_lock(mm);
> +
> + vma = find_vma_intersection(mm, start, end);
> + if (vma)
> + addr = vma->vm_start;
> +
> + mmap_read_unlock(mm);
> + return addr;
> +}
> +EXPORT_SYMBOL_GPL(drm_gpusvm_range_find_or_insert_start);
> +
> /**
> * drm_gpusvm_range_find_or_insert() - Find or insert GPU SVM range
> * @gpusvm: Pointer to the GPU SVM structure
> diff --git a/include/drm/drm_gpusvm.h b/include/drm/drm_gpusvm.h
> index cce217bc136f..b0e9ee5c6226 100644
> --- a/include/drm/drm_gpusvm.h
> +++ b/include/drm/drm_gpusvm.h
> @@ -315,6 +315,11 @@ void drm_gpusvm_fini(struct drm_gpusvm *gpusvm);
>
> void drm_gpusvm_free(struct drm_gpusvm *gpusvm);
>
> +unsigned long
> +drm_gpusvm_range_find_or_insert_start(struct drm_gpusvm *gpusvm,
> + unsigned long start,
> + unsigned long end);
> +
> struct drm_gpusvm_range *
> drm_gpusvm_range_find_or_insert(struct drm_gpusvm *gpusvm,
> unsigned long fault_addr,
> --
> 2.34.1
>
next prev parent reply other threads:[~2025-04-29 18:33 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-29 10:42 [PATCH v5 00/20] Prefetch Support for svm ranges Himal Prasad Ghimiray
2025-04-29 10:36 ` ✓ CI.Patch_applied: success for Prefetch Support for svm ranges (rev4) Patchwork
2025-04-29 10:37 ` ✗ CI.checkpatch: warning " Patchwork
2025-04-29 10:38 ` ✓ CI.KUnit: success " Patchwork
2025-04-29 10:42 ` [PATCH v5 01/20] drm/gpusvm: Introduce devmem_only flag for allocation Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 02/20] drm/xe: Strict migration policy for atomic SVM faults Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 03/20] drm/gpusvm: Add timeslicing support to GPU SVM Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 04/20] drm/xe: Timeslice GPU on atomic SVM fault Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 05/20] drm/xe: Add atomic_svm_timeslice_ms debugfs entry Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 06/20] drm/xe: Introduce xe_vma_op_prefetch_range struct for prefetch of ranges Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 07/20] drm/xe: Make xe_svm_alloc_vram public Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 08/20] drm/xe/svm: Helper to add tile masks to svm ranges Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 09/20] drm/xe/svm: Make to_xe_range a public function Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 10/20] drm/xe/svm: Make xe_svm_range_* end/start/size public Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 11/20] drm/xe/vm: Update xe_vma_ops_incr_pt_update_ops to take an increment value Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 12/20] drm/xe/vm: Add an identifier in xe_vma_ops for svm prefetch Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 13/20] drm/xe: Rename lookup_vma function to xe_find_vma_by_addr Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 14/20] drm/xe/svm: Refactor usage of drm_gpusvm* function in xe_svm Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 15/20] drm/xe/svm: Make xe_svm_range_needs_migrate_to_vram() public Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 16/20] drm/xe/svm: Add xe_svm_range_validate_and_evict() function Himal Prasad Ghimiray
2025-04-29 18:42 ` Matthew Brost
[not found] ` <9f3f41e3-f3d0-49d6-ad3f-e725d86cd210@intel.com>
2025-04-30 3:45 ` Ghimiray, Himal Prasad
2025-04-30 3:49 ` Matthew Brost
2025-04-29 10:42 ` [PATCH v5 17/20] drm/gpusvm: Introduce drm_gpusvm_range_find_or_insert_start() function Himal Prasad Ghimiray
2025-04-29 18:35 ` Matthew Brost [this message]
2025-04-30 3:40 ` Ghimiray, Himal Prasad
2025-04-30 4:21 ` Matthew Brost
2025-04-29 10:42 ` [PATCH v5 18/20] drm/xe/svm: Add xe_svm_range_find_or_insert_start() Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 19/20] drm/xe/svm: Implement prefetch support for SVM ranges Himal Prasad Ghimiray
2025-04-29 10:42 ` [PATCH v5 20/20] drm/xe/vm: Add debug prints for SVM range prefetch Himal Prasad Ghimiray
2025-04-29 10:46 ` ✓ CI.Build: success for Prefetch Support for svm ranges (rev4) Patchwork
2025-04-29 10:49 ` ✓ CI.Hooks: " Patchwork
2025-04-29 10:51 ` ✓ CI.checksparse: " Patchwork
2025-04-29 12:47 ` ✗ Xe.CI.Full: failure " Patchwork
2025-05-06 7:14 ` ✗ Xe.CI.BAT: " Patchwork
2025-05-06 7:51 ` ✓ Xe.CI.BAT: success " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aBEb3eB36nXXLIds@lstrano-desk.jf.intel.com \
--to=matthew.brost@intel.com \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=thomas.hellstrom@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox