diff options
| author | Thomas Hellström <thomas.hellstrom@linux.intel.com> | 2023-12-12 11:01:43 +0100 |
|---|---|---|
| committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 11:46:08 -0500 |
| commit | 24f947d58fe554cf38507b94a43d373acf1e5e73 (patch) | |
| tree | ead77d5c467cbb27cbf313101c461c2302ac1e89 /drivers/gpu/drm/xe/xe_vm.h | |
| parent | 49e134e16f8111f82f4067da38055db4b4b34a0b (diff) | |
drm/xe: Use DRM GPUVM helpers for external- and evicted objects
Adapt to the DRM_GPUVM helpers moving removing a lot of complicated
driver-specific code.
For now this uses fine-grained locking for the evict list and external
object list, which may incur a slight performance penalty in some
situations.
v2:
- Don't lock all bos and validate on LR exec submissions (Matthew Brost)
- Add some kerneldoc
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Acked-by: Matthew Brost <matthew.brost@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20231212100144.6833-2-thomas.hellstrom@linux.intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Diffstat (limited to 'drivers/gpu/drm/xe/xe_vm.h')
| -rw-r--r-- | drivers/gpu/drm/xe/xe_vm.h | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h index a1907544cc4f..cf2f96e8c1ab 100644 --- a/drivers/gpu/drm/xe/xe_vm.h +++ b/drivers/gpu/drm/xe/xe_vm.h @@ -74,9 +74,20 @@ static inline bool xe_vm_has_scratch(const struct xe_vm *vm) return vm->flags & XE_VM_FLAG_SCRATCH_PAGE; } +/** + * gpuvm_to_vm() - Return the embedding xe_vm from a struct drm_gpuvm pointer + * @gpuvm: The struct drm_gpuvm pointer + * + * Return: Pointer to the embedding struct xe_vm. + */ +static inline struct xe_vm *gpuvm_to_vm(struct drm_gpuvm *gpuvm) +{ + return container_of(gpuvm, struct xe_vm, gpuvm); +} + static inline struct xe_vm *gpuva_to_vm(struct drm_gpuva *gpuva) { - return container_of(gpuva->vm, struct xe_vm, gpuvm); + return gpuvm_to_vm(gpuva->vm); } static inline struct xe_vma *gpuva_to_vma(struct drm_gpuva *gpuva) @@ -219,12 +230,6 @@ int xe_vma_userptr_check_repin(struct xe_vma *vma); bool xe_vm_validate_should_retry(struct drm_exec *exec, int err, ktime_t *end); -int xe_vm_lock_dma_resv(struct xe_vm *vm, struct drm_exec *exec, - unsigned int num_shared, bool lock_vm); - -void xe_vm_fence_all_extobjs(struct xe_vm *vm, struct dma_fence *fence, - enum dma_resv_usage usage); - int xe_analyze_vm(struct drm_printer *p, struct xe_vm *vm, int gt_id); int xe_vm_prepare_vma(struct drm_exec *exec, struct xe_vma *vma, |
