diff options
author | Matthew Brost <matthew.brost@intel.com> | 2023-06-22 13:03:04 -0700 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2023-12-21 11:35:18 -0500 |
commit | 21ed3327e388c24ddbdc3b2e8533f0c3ab99953b (patch) | |
tree | 52ebc3f8f234c514a3a9e616f025f9cb5d9d3558 /drivers/gpu/drm/xe/xe_vm.h | |
parent | 9d858b69b0cfb56dd67943138c10d84eeb73380f (diff) |
drm/xe: Add helpers to hide struct xe_vma internals
This will help with the GPUVA port as the internals of struct xe_vma
will change.
v2: Update comment around helpers
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.kernel.org>
Signed-off-by: Matthew Brost <matthew.brost@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 | 76 |
1 files changed, 60 insertions, 16 deletions
diff --git a/drivers/gpu/drm/xe/xe_vm.h b/drivers/gpu/drm/xe/xe_vm.h index 02b409dd77d5..644a8aa604e8 100644 --- a/drivers/gpu/drm/xe/xe_vm.h +++ b/drivers/gpu/drm/xe/xe_vm.h @@ -61,7 +61,66 @@ static inline bool xe_vm_is_closed_or_banned(struct xe_vm *vm) } struct xe_vma * -xe_vm_find_overlapping_vma(struct xe_vm *vm, const struct xe_vma *vma); +xe_vm_find_overlapping_vma(struct xe_vm *vm, struct xe_vma *vma); + +/** + * DOC: Provide accessors for vma members to facilitate easy change of + * implementation. + */ +static inline u64 xe_vma_start(struct xe_vma *vma) +{ + return vma->start; +} + +static inline u64 xe_vma_size(struct xe_vma *vma) +{ + return vma->end - vma->start + 1; +} + +static inline u64 xe_vma_end(struct xe_vma *vma) +{ + return xe_vma_start(vma) + xe_vma_size(vma); +} + +static inline u64 xe_vma_bo_offset(struct xe_vma *vma) +{ + return vma->bo_offset; +} + +static inline struct xe_bo *xe_vma_bo(struct xe_vma *vma) +{ + return vma->bo; +} + +static inline struct xe_vm *xe_vma_vm(struct xe_vma *vma) +{ + return vma->vm; +} + +static inline bool xe_vma_read_only(struct xe_vma *vma) +{ + return vma->pte_flags & XE_PTE_FLAG_READ_ONLY; +} + +static inline u64 xe_vma_userptr(struct xe_vma *vma) +{ + return vma->userptr.ptr; +} + +static inline bool xe_vma_is_null(struct xe_vma *vma) +{ + return vma->pte_flags & XE_PTE_FLAG_NULL; +} + +static inline bool xe_vma_has_no_bo(struct xe_vma *vma) +{ + return !xe_vma_bo(vma); +} + +static inline bool xe_vma_is_userptr(struct xe_vma *vma) +{ + return xe_vma_has_no_bo(vma) && !xe_vma_is_null(vma); +} #define xe_vm_assert_held(vm) dma_resv_assert_held(&(vm)->resv) @@ -126,21 +185,6 @@ static inline void xe_vm_reactivate_rebind(struct xe_vm *vm) } } -static inline bool xe_vma_is_null(struct xe_vma *vma) -{ - return vma->pte_flags & XE_PTE_FLAG_NULL; -} - -static inline bool xe_vma_has_no_bo(struct xe_vma *vma) -{ - return !vma->bo; -} - -static inline bool xe_vma_is_userptr(struct xe_vma *vma) -{ - return xe_vma_has_no_bo(vma) && !xe_vma_is_null(vma); -} - int xe_vma_userptr_pin_pages(struct xe_vma *vma); int xe_vma_userptr_check_repin(struct xe_vma *vma); |