Message ID | 20231108001259.15123-4-dakr@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | DRM GPUVM features | expand |
On Wed, 8 Nov 2023 01:12:33 +0100 Danilo Krummrich <dakr@redhat.com> wrote: > Drivers may use this function to validate userspace requests in advance, > hence export it. > > Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> > Signed-off-by: Danilo Krummrich <dakr@redhat.com> Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com> > --- > drivers/gpu/drm/drm_gpuvm.c | 14 +++++++++++++- > include/drm/drm_gpuvm.h | 1 + > 2 files changed, 14 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c > index 445767f8fbc4..2669f9bbc377 100644 > --- a/drivers/gpu/drm/drm_gpuvm.c > +++ b/drivers/gpu/drm/drm_gpuvm.c > @@ -649,7 +649,18 @@ drm_gpuvm_in_kernel_node(struct drm_gpuvm *gpuvm, u64 addr, u64 range) > return krange && addr < kend && kstart < end; > } > > -static bool > +/** > + * drm_gpuvm_range_valid() - checks whether the given range is valid for the > + * given &drm_gpuvm > + * @gpuvm: the GPUVM to check the range for > + * @addr: the base address > + * @range: the range starting from the base address > + * > + * Checks whether the range is within the GPUVM's managed boundaries. > + * > + * Returns: true for a valid range, false otherwise > + */ > +bool > drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, > u64 addr, u64 range) > { > @@ -657,6 +668,7 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, > drm_gpuvm_in_mm_range(gpuvm, addr, range) && > !drm_gpuvm_in_kernel_node(gpuvm, addr, range); > } > +EXPORT_SYMBOL_GPL(drm_gpuvm_range_valid); > > /** > * drm_gpuvm_init() - initialize a &drm_gpuvm > diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h > index 687fd5893624..13eac6f70061 100644 > --- a/include/drm/drm_gpuvm.h > +++ b/include/drm/drm_gpuvm.h > @@ -253,6 +253,7 @@ void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name, > const struct drm_gpuvm_ops *ops); > void drm_gpuvm_destroy(struct drm_gpuvm *gpuvm); > > +bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range); > bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range); > > static inline struct drm_gpuva *
diff --git a/drivers/gpu/drm/drm_gpuvm.c b/drivers/gpu/drm/drm_gpuvm.c index 445767f8fbc4..2669f9bbc377 100644 --- a/drivers/gpu/drm/drm_gpuvm.c +++ b/drivers/gpu/drm/drm_gpuvm.c @@ -649,7 +649,18 @@ drm_gpuvm_in_kernel_node(struct drm_gpuvm *gpuvm, u64 addr, u64 range) return krange && addr < kend && kstart < end; } -static bool +/** + * drm_gpuvm_range_valid() - checks whether the given range is valid for the + * given &drm_gpuvm + * @gpuvm: the GPUVM to check the range for + * @addr: the base address + * @range: the range starting from the base address + * + * Checks whether the range is within the GPUVM's managed boundaries. + * + * Returns: true for a valid range, false otherwise + */ +bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range) { @@ -657,6 +668,7 @@ drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, drm_gpuvm_in_mm_range(gpuvm, addr, range) && !drm_gpuvm_in_kernel_node(gpuvm, addr, range); } +EXPORT_SYMBOL_GPL(drm_gpuvm_range_valid); /** * drm_gpuvm_init() - initialize a &drm_gpuvm diff --git a/include/drm/drm_gpuvm.h b/include/drm/drm_gpuvm.h index 687fd5893624..13eac6f70061 100644 --- a/include/drm/drm_gpuvm.h +++ b/include/drm/drm_gpuvm.h @@ -253,6 +253,7 @@ void drm_gpuvm_init(struct drm_gpuvm *gpuvm, const char *name, const struct drm_gpuvm_ops *ops); void drm_gpuvm_destroy(struct drm_gpuvm *gpuvm); +bool drm_gpuvm_range_valid(struct drm_gpuvm *gpuvm, u64 addr, u64 range); bool drm_gpuvm_interval_empty(struct drm_gpuvm *gpuvm, u64 addr, u64 range); static inline struct drm_gpuva *