XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Enumerations | Functions
drm_gpuvm.h File Reference
#include <linux/dma-resv.h>
#include <linux/list.h>
#include <linux/llist.h>
#include <linux/rbtree.h>
#include <linux/types.h>
#include <drm/drm_device.h>
#include <drm/drm_gem.h>
#include <drm/drm_exec.h>
Include dependency graph for drm_gpuvm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  drm_gpuva
 
struct  drm_gpuvm
 
struct  drm_gpuvm_exec
 
struct  drm_gpuvm_bo
 
struct  drm_gpuva_op_map
 
struct  drm_gpuva_op_unmap
 
struct  drm_gpuva_op_remap
 
struct  drm_gpuva_op_prefetch
 
struct  drm_gpuva_op
 
struct  drm_gpuva_ops
 
struct  drm_gpuvm_map_req
 
struct  drm_gpuvm_ops
 

Macros

#define drm_gpuvm_resv(gpuvm__)   ((gpuvm__)->r_obj->resv)
 
#define drm_gpuvm_resv_obj(gpuvm__)   ((gpuvm__)->r_obj)
 
#define drm_gpuvm_resv_held(gpuvm__)    dma_resv_held(drm_gpuvm_resv(gpuvm__))
 
#define drm_gpuvm_resv_assert_held(gpuvm__)    dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))
 
#define drm_gpuvm_resv_held(gpuvm__)    dma_resv_held(drm_gpuvm_resv(gpuvm__))
 
#define drm_gpuvm_resv_assert_held(gpuvm__)    dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))
 
#define drm_gpuvm_for_each_va_range(va__, gpuvm__, start__, end__)
 
#define drm_gpuvm_for_each_va_range_safe(va__, next__, gpuvm__, start__, end__)
 
#define drm_gpuvm_for_each_va(va__, gpuvm__)    list_for_each_entry(va__, &(gpuvm__)->rb.list, rb.entry)
 
#define drm_gpuvm_for_each_va_safe(va__, next__, gpuvm__)    list_for_each_entry_safe(va__, next__, &(gpuvm__)->rb.list, rb.entry)
 
#define drm_gpuvm_bo_for_each_va(va__, vm_bo__)    list_for_each_entry(va__, &(vm_bo)->list.gpuva, gem.entry)
 
#define drm_gpuvm_bo_for_each_va_safe(va__, next__, vm_bo__)    list_for_each_entry_safe(va__, next__, &(vm_bo)->list.gpuva, gem.entry)
 
#define drm_gpuva_for_each_op(op, ops)   list_for_each_entry(op, &(ops)->list, entry)
 
#define drm_gpuva_for_each_op_safe(op, next, ops)    list_for_each_entry_safe(op, next, &(ops)->list, entry)
 
#define drm_gpuva_for_each_op_from_reverse(op, ops)    list_for_each_entry_from_reverse(op, &(ops)->list, entry)
 
#define drm_gpuva_for_each_op_reverse(op, ops)    list_for_each_entry_reverse(op, &(ops)->list, entry)
 
#define drm_gpuva_first_op(ops)    list_first_entry(&(ops)->list, struct drm_gpuva_op, entry)
 
#define drm_gpuva_last_op(ops)    list_last_entry(&(ops)->list, struct drm_gpuva_op, entry)
 
#define drm_gpuva_prev_op(op)   list_prev_entry(op, entry)
 
#define drm_gpuva_next_op(op)   list_next_entry(op, entry)
 

Enumerations

enum  drm_gpuva_flags { DRM_GPUVA_INVALIDATED = (1 << 0) , DRM_GPUVA_SPARSE = (1 << 1) , DRM_GPUVA_USERBITS = (1 << 2) }
 
enum  drm_gpuvm_flags { DRM_GPUVM_RESV_PROTECTED = BIT(0) , DRM_GPUVM_IMMEDIATE_MODE = BIT(1) , DRM_GPUVM_USERBITS = BIT(2) }
 
enum  drm_gpuva_op_type {
  DRM_GPUVA_OP_MAP , DRM_GPUVA_OP_REMAP , DRM_GPUVA_OP_UNMAP , DRM_GPUVA_OP_PREFETCH ,
  DRM_GPUVA_OP_DRIVER
}
 

Functions

int drm_gpuva_insert (struct drm_gpuvm *gpuvm, struct drm_gpuva *va)
 
void drm_gpuva_remove (struct drm_gpuva *va)
 
void drm_gpuva_link (struct drm_gpuva *va, struct drm_gpuvm_bo *vm_bo)
 
void drm_gpuva_unlink (struct drm_gpuva *va)
 
void drm_gpuva_unlink_defer (struct drm_gpuva *va)
 
struct drm_gpuva * drm_gpuva_find (struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 
struct drm_gpuva * drm_gpuva_find_first (struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 
struct drm_gpuva * drm_gpuva_find_prev (struct drm_gpuvm *gpuvm, u64 start)
 
struct drm_gpuva * drm_gpuva_find_next (struct drm_gpuvm *gpuvm, u64 end)
 
void drm_gpuvm_init (struct drm_gpuvm *gpuvm, const char *name, enum drm_gpuvm_flags flags, struct drm_device *drm, struct drm_gem_object *r_obj, u64 start_offset, u64 range, u64 reserve_offset, u64 reserve_range, const struct drm_gpuvm_ops *ops)
 
void drm_gpuvm_put (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)
 
struct drm_gem_object * drm_gpuvm_resv_object_alloc (struct drm_device *drm)
 
int drm_gpuvm_prepare_vm (struct drm_gpuvm *gpuvm, struct drm_exec *exec, unsigned int num_fences)
 
int drm_gpuvm_prepare_objects (struct drm_gpuvm *gpuvm, struct drm_exec *exec, unsigned int num_fences)
 
int drm_gpuvm_prepare_range (struct drm_gpuvm *gpuvm, struct drm_exec *exec, u64 addr, u64 range, unsigned int num_fences)
 
int drm_gpuvm_exec_lock (struct drm_gpuvm_exec *vm_exec)
 
int drm_gpuvm_exec_lock_array (struct drm_gpuvm_exec *vm_exec, struct drm_gem_object **objs, unsigned int num_objs)
 
int drm_gpuvm_exec_lock_range (struct drm_gpuvm_exec *vm_exec, u64 addr, u64 range)
 
int drm_gpuvm_validate (struct drm_gpuvm *gpuvm, struct drm_exec *exec)
 
void drm_gpuvm_resv_add_fence (struct drm_gpuvm *gpuvm, struct drm_exec *exec, struct dma_fence *fence, enum dma_resv_usage private_usage, enum dma_resv_usage extobj_usage)
 
struct drm_gpuvm_bo * drm_gpuvm_bo_create (struct drm_gpuvm *gpuvm, struct drm_gem_object *obj)
 
struct drm_gpuvm_bo * drm_gpuvm_bo_obtain_locked (struct drm_gpuvm *gpuvm, struct drm_gem_object *obj)
 
struct drm_gpuvm_bo * drm_gpuvm_bo_obtain_prealloc (struct drm_gpuvm_bo *vm_bo)
 
bool drm_gpuvm_bo_put (struct drm_gpuvm_bo *vm_bo)
 
bool drm_gpuvm_bo_put_deferred (struct drm_gpuvm_bo *vm_bo)
 
void drm_gpuvm_bo_deferred_cleanup (struct drm_gpuvm *gpuvm)
 
struct drm_gpuvm_bo * drm_gpuvm_bo_find (struct drm_gpuvm *gpuvm, struct drm_gem_object *obj)
 
void drm_gpuvm_bo_evict (struct drm_gpuvm_bo *vm_bo, bool evict)
 
void drm_gpuvm_bo_extobj_add (struct drm_gpuvm_bo *vm_bo)
 
struct drm_gpuva_ops * drm_gpuvm_sm_map_ops_create (struct drm_gpuvm *gpuvm, const struct drm_gpuvm_map_req *req)
 
struct drm_gpuva_ops * drm_gpuvm_madvise_ops_create (struct drm_gpuvm *gpuvm, const struct drm_gpuvm_map_req *req)
 
struct drm_gpuva_ops * drm_gpuvm_sm_unmap_ops_create (struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 
struct drm_gpuva_ops * drm_gpuvm_prefetch_ops_create (struct drm_gpuvm *gpuvm, u64 addr, u64 range)
 
struct drm_gpuva_ops * drm_gpuvm_bo_unmap_ops_create (struct drm_gpuvm_bo *vm_bo)
 
void drm_gpuva_ops_free (struct drm_gpuvm *gpuvm, struct drm_gpuva_ops *ops)
 
int drm_gpuvm_sm_map (struct drm_gpuvm *gpuvm, void *priv, const struct drm_gpuvm_map_req *req)
 
int drm_gpuvm_sm_unmap (struct drm_gpuvm *gpuvm, void *priv, u64 addr, u64 range)
 
int drm_gpuvm_sm_map_exec_lock (struct drm_gpuvm *gpuvm, struct drm_exec *exec, unsigned int num_fences, struct drm_gpuvm_map_req *req)
 
int drm_gpuvm_sm_unmap_exec_lock (struct drm_gpuvm *gpuvm, struct drm_exec *exec, u64 req_addr, u64 req_range)
 
void drm_gpuva_map (struct drm_gpuvm *gpuvm, struct drm_gpuva *va, const struct drm_gpuva_op_map *op)
 
void drm_gpuva_remap (struct drm_gpuva *prev, struct drm_gpuva *next, const struct drm_gpuva_op_remap *op)
 
void drm_gpuva_unmap (const struct drm_gpuva_op_unmap *op)
 

Macro Definition Documentation

◆ drm_gpuva_first_op

#define drm_gpuva_first_op (   ops)     list_first_entry(&(ops)->list, struct drm_gpuva_op, entry)

drm_gpuva_first_op() - returns the first &drm_gpuva_op from &drm_gpuva_ops @ops: the &drm_gpuva_ops to get the fist &drm_gpuva_op from

◆ drm_gpuva_for_each_op

#define drm_gpuva_for_each_op (   op,
  ops 
)    list_for_each_entry(op, &(ops)->list, entry)

drm_gpuva_for_each_op() - iterator to walk over &drm_gpuva_ops @op: &drm_gpuva_op to assign in each iteration step @ops: &drm_gpuva_ops to walk

This iterator walks over all ops within a given list of operations.

◆ drm_gpuva_for_each_op_from_reverse

#define drm_gpuva_for_each_op_from_reverse (   op,
  ops 
)     list_for_each_entry_from_reverse(op, &(ops)->list, entry)

drm_gpuva_for_each_op_from_reverse() - iterate backwards from the given point @op: &drm_gpuva_op to assign in each iteration step @ops: &drm_gpuva_ops to walk

This iterator walks over all ops within a given list of operations beginning from the given operation in reverse order.

◆ drm_gpuva_for_each_op_reverse

#define drm_gpuva_for_each_op_reverse (   op,
  ops 
)     list_for_each_entry_reverse(op, &(ops)->list, entry)

drm_gpuva_for_each_op_reverse - iterator to walk over &drm_gpuva_ops in reverse @op: &drm_gpuva_op to assign in each iteration step @ops: &drm_gpuva_ops to walk

This iterator walks over all ops within a given list of operations in reverse

◆ drm_gpuva_for_each_op_safe

#define drm_gpuva_for_each_op_safe (   op,
  next,
  ops 
)     list_for_each_entry_safe(op, next, &(ops)->list, entry)

drm_gpuva_for_each_op_safe() - iterator to safely walk over &drm_gpuva_ops @op: &drm_gpuva_op to assign in each iteration step @next: &next &drm_gpuva_op to store the next step @ops: &drm_gpuva_ops to walk

This iterator walks over all ops within a given list of operations. It is implemented with list_for_each_safe(), so save against removal of elements.

◆ drm_gpuva_last_op

#define drm_gpuva_last_op (   ops)     list_last_entry(&(ops)->list, struct drm_gpuva_op, entry)

drm_gpuva_last_op() - returns the last &drm_gpuva_op from &drm_gpuva_ops @ops: the &drm_gpuva_ops to get the last &drm_gpuva_op from

◆ drm_gpuva_next_op

#define drm_gpuva_next_op (   op)    list_next_entry(op, entry)

drm_gpuva_next_op() - next &drm_gpuva_op in the list @op: the current &drm_gpuva_op

◆ drm_gpuva_prev_op

#define drm_gpuva_prev_op (   op)    list_prev_entry(op, entry)

drm_gpuva_prev_op() - previous &drm_gpuva_op in the list @op: the current &drm_gpuva_op

◆ drm_gpuvm_bo_for_each_va

#define drm_gpuvm_bo_for_each_va (   va__,
  vm_bo__ 
)     list_for_each_entry(va__, &(vm_bo)->list.gpuva, gem.entry)

drm_gpuvm_bo_for_each_va() - iterator to walk over a list of &drm_gpuva @va__: &drm_gpuva structure to assign to in each iteration step @vm_bo__: the &drm_gpuvm_bo the &drm_gpuva to walk are associated with

This iterator walks over all &drm_gpuva structures associated with the &drm_gpuvm_bo.

The caller must hold the GEM's gpuva lock.

◆ drm_gpuvm_bo_for_each_va_safe

#define drm_gpuvm_bo_for_each_va_safe (   va__,
  next__,
  vm_bo__ 
)     list_for_each_entry_safe(va__, next__, &(vm_bo)->list.gpuva, gem.entry)

drm_gpuvm_bo_for_each_va_safe() - iterator to safely walk over a list of &drm_gpuva @va__: &drm_gpuva structure to assign to in each iteration step @next__: &next &drm_gpuva to store the next step @vm_bo__: the &drm_gpuvm_bo the &drm_gpuva to walk are associated with

This iterator walks over all &drm_gpuva structures associated with the &drm_gpuvm_bo. It is implemented with list_for_each_entry_safe(), hence it is save against removal of elements.

The caller must hold the GEM's gpuva lock.

◆ drm_gpuvm_for_each_va

#define drm_gpuvm_for_each_va (   va__,
  gpuvm__ 
)     list_for_each_entry(va__, &(gpuvm__)->rb.list, rb.entry)

drm_gpuvm_for_each_va() - iterate over all &drm_gpuvas @va__: &drm_gpuva to assign to in each iteration step @gpuvm__: &drm_gpuvm to walk over

This iterator walks over all &drm_gpuva structures associated with the given &drm_gpuvm.

◆ drm_gpuvm_for_each_va_range

#define drm_gpuvm_for_each_va_range (   va__,
  gpuvm__,
  start__,
  end__ 
)
Value:
for (va__ = drm_gpuva_find_first((gpuvm__), (start__), (end__) - (start__)); \
va__ && (va__->va.addr < (end__)); \
va__ = __drm_gpuva_next(va__))
struct drm_gpuva * drm_gpuva_find_first(struct drm_gpuvm *gpuvm, u64 addr, u64 range)

drm_gpuvm_for_each_va_range() - iterate over a range of &drm_gpuvas @va__: &drm_gpuva structure to assign to in each iteration step @gpuvm__: &drm_gpuvm to walk over @start__: starting offset, the first gpuva will overlap this @end__: ending offset, the last gpuva will start before this (but may overlap)

This iterator walks over all &drm_gpuvas in the &drm_gpuvm that lie between @start__ and @end__. It is implemented similarly to list_for_each(), but is using the &drm_gpuvm's internal interval tree to accelerate the search for the starting &drm_gpuva, and hence isn't safe against removal of elements. It assumes that @end__ is within (or is the upper limit of) the &drm_gpuvm. This iterator does not skip over the &drm_gpuvm's @kernel_alloc_node.

◆ drm_gpuvm_for_each_va_range_safe

#define drm_gpuvm_for_each_va_range_safe (   va__,
  next__,
  gpuvm__,
  start__,
  end__ 
)
Value:
for (va__ = drm_gpuva_find_first((gpuvm__), (start__), (end__) - (start__)), \
next__ = __drm_gpuva_next(va__); \
va__ && (va__->va.addr < (end__)); \
va__ = next__, next__ = __drm_gpuva_next(va__))

drm_gpuvm_for_each_va_range_safe() - safely iterate over a range of &drm_gpuvas @va__: &drm_gpuva to assign to in each iteration step @next__: another &drm_gpuva to use as temporary storage @gpuvm__: &drm_gpuvm to walk over @start__: starting offset, the first gpuva will overlap this @end__: ending offset, the last gpuva will start before this (but may overlap)

This iterator walks over all &drm_gpuvas in the &drm_gpuvm that lie between @start__ and @end__. It is implemented similarly to list_for_each_safe(), but is using the &drm_gpuvm's internal interval tree to accelerate the search for the starting &drm_gpuva, and hence is safe against removal of elements. It assumes that @end__ is within (or is the upper limit of) the &drm_gpuvm. This iterator does not skip over the &drm_gpuvm's @kernel_alloc_node.

◆ drm_gpuvm_for_each_va_safe

#define drm_gpuvm_for_each_va_safe (   va__,
  next__,
  gpuvm__ 
)     list_for_each_entry_safe(va__, next__, &(gpuvm__)->rb.list, rb.entry)

drm_gpuvm_for_each_va_safe() - safely iterate over all &drm_gpuvas @va__: &drm_gpuva to assign to in each iteration step @next__: another &drm_gpuva to use as temporary storage @gpuvm__: &drm_gpuvm to walk over

This iterator walks over all &drm_gpuva structures associated with the given &drm_gpuvm. It is implemented with list_for_each_entry_safe(), and hence safe against the removal of elements.

◆ drm_gpuvm_resv

#define drm_gpuvm_resv (   gpuvm__)    ((gpuvm__)->r_obj->resv)

drm_gpuvm_resv() - returns the &drm_gpuvm's &dma_resv @gpuvm__: the &drm_gpuvm

Returns: a pointer to the &drm_gpuvm's shared &dma_resv

◆ drm_gpuvm_resv_assert_held [1/2]

#define drm_gpuvm_resv_assert_held (   gpuvm__)     dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))

◆ drm_gpuvm_resv_assert_held [2/2]

#define drm_gpuvm_resv_assert_held (   gpuvm__)     dma_resv_assert_held(drm_gpuvm_resv(gpuvm__))

◆ drm_gpuvm_resv_held [1/2]

#define drm_gpuvm_resv_held (   gpuvm__)     dma_resv_held(drm_gpuvm_resv(gpuvm__))

◆ drm_gpuvm_resv_held [2/2]

#define drm_gpuvm_resv_held (   gpuvm__)     dma_resv_held(drm_gpuvm_resv(gpuvm__))

◆ drm_gpuvm_resv_obj

#define drm_gpuvm_resv_obj (   gpuvm__)    ((gpuvm__)->r_obj)

drm_gpuvm_resv_obj() - returns the &drm_gem_object holding the &drm_gpuvm's &dma_resv @gpuvm__: the &drm_gpuvm

Returns: a pointer to the &drm_gem_object holding the &drm_gpuvm's shared &dma_resv

Enumeration Type Documentation

◆ drm_gpuva_flags

enum drm_gpuva_flags - flags for struct drm_gpuva

Enumerator
DRM_GPUVA_INVALIDATED 

@DRM_GPUVA_INVALIDATED:

Flag indicating that the &drm_gpuva's backing GEM is invalidated.

DRM_GPUVA_SPARSE 

@DRM_GPUVA_SPARSE:

Flag indicating that the &drm_gpuva is a sparse mapping.

DRM_GPUVA_USERBITS 

@DRM_GPUVA_USERBITS: user defined bits

◆ drm_gpuva_op_type

enum drm_gpuva_op_type - GPU VA operation type

Operations to alter the GPU VA mappings tracked by the &drm_gpuvm.

Enumerator
DRM_GPUVA_OP_MAP 

@DRM_GPUVA_OP_MAP: the map op type

DRM_GPUVA_OP_REMAP 

@DRM_GPUVA_OP_REMAP: the remap op type

DRM_GPUVA_OP_UNMAP 

@DRM_GPUVA_OP_UNMAP: the unmap op type

DRM_GPUVA_OP_PREFETCH 

@DRM_GPUVA_OP_PREFETCH: the prefetch op type

DRM_GPUVA_OP_DRIVER 

@DRM_GPUVA_OP_DRIVER: the driver defined op type

◆ drm_gpuvm_flags

enum drm_gpuvm_flags - flags for struct drm_gpuvm

Enumerator
DRM_GPUVM_RESV_PROTECTED 

@DRM_GPUVM_RESV_PROTECTED: GPUVM is protected externally by the GPUVM's &dma_resv lock

DRM_GPUVM_IMMEDIATE_MODE 

@DRM_GPUVM_IMMEDIATE_MODE: use the locking scheme for GEMs designed for modifying the GPUVM during the fence signalling path

When set, gpuva.lock is used to protect gpuva.list in all GEM objects associated with this GPUVM. Otherwise, the GEMs dma-resv is used.

DRM_GPUVM_USERBITS 

@DRM_GPUVM_USERBITS: user defined bits

Function Documentation

◆ drm_gpuva_find()

struct drm_gpuva * drm_gpuva_find ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuva_find_first()

struct drm_gpuva * drm_gpuva_find_first ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuva_find_next()

struct drm_gpuva * drm_gpuva_find_next ( struct drm_gpuvm *  gpuvm,
u64  end 
)

◆ drm_gpuva_find_prev()

struct drm_gpuva * drm_gpuva_find_prev ( struct drm_gpuvm *  gpuvm,
u64  start 
)

◆ drm_gpuva_insert()

int drm_gpuva_insert ( struct drm_gpuvm *  gpuvm,
struct drm_gpuva *  va 
)

◆ drm_gpuva_link()

void drm_gpuva_link ( struct drm_gpuva *  va,
struct drm_gpuvm_bo *  vm_bo 
)

◆ drm_gpuva_map()

void drm_gpuva_map ( struct drm_gpuvm *  gpuvm,
struct drm_gpuva *  va,
const struct drm_gpuva_op_map *  op 
)

◆ drm_gpuva_ops_free()

void drm_gpuva_ops_free ( struct drm_gpuvm *  gpuvm,
struct drm_gpuva_ops *  ops 
)

◆ drm_gpuva_remap()

void drm_gpuva_remap ( struct drm_gpuva *  prev,
struct drm_gpuva *  next,
const struct drm_gpuva_op_remap *  op 
)

◆ drm_gpuva_remove()

void drm_gpuva_remove ( struct drm_gpuva *  va)

◆ drm_gpuva_unlink()

void drm_gpuva_unlink ( struct drm_gpuva *  va)

◆ drm_gpuva_unlink_defer()

void drm_gpuva_unlink_defer ( struct drm_gpuva *  va)

◆ drm_gpuva_unmap()

void drm_gpuva_unmap ( const struct drm_gpuva_op_unmap *  op)

◆ drm_gpuvm_bo_create()

struct drm_gpuvm_bo * drm_gpuvm_bo_create ( struct drm_gpuvm *  gpuvm,
struct drm_gem_object *  obj 
)

◆ drm_gpuvm_bo_deferred_cleanup()

void drm_gpuvm_bo_deferred_cleanup ( struct drm_gpuvm *  gpuvm)

◆ drm_gpuvm_bo_evict()

void drm_gpuvm_bo_evict ( struct drm_gpuvm_bo *  vm_bo,
bool  evict 
)

◆ drm_gpuvm_bo_extobj_add()

void drm_gpuvm_bo_extobj_add ( struct drm_gpuvm_bo *  vm_bo)

◆ drm_gpuvm_bo_find()

struct drm_gpuvm_bo * drm_gpuvm_bo_find ( struct drm_gpuvm *  gpuvm,
struct drm_gem_object *  obj 
)

◆ drm_gpuvm_bo_obtain_locked()

struct drm_gpuvm_bo * drm_gpuvm_bo_obtain_locked ( struct drm_gpuvm *  gpuvm,
struct drm_gem_object *  obj 
)

◆ drm_gpuvm_bo_obtain_prealloc()

struct drm_gpuvm_bo * drm_gpuvm_bo_obtain_prealloc ( struct drm_gpuvm_bo *  vm_bo)

◆ drm_gpuvm_bo_put()

bool drm_gpuvm_bo_put ( struct drm_gpuvm_bo *  vm_bo)

◆ drm_gpuvm_bo_put_deferred()

bool drm_gpuvm_bo_put_deferred ( struct drm_gpuvm_bo *  vm_bo)

◆ drm_gpuvm_bo_unmap_ops_create()

struct drm_gpuva_ops * drm_gpuvm_bo_unmap_ops_create ( struct drm_gpuvm_bo *  vm_bo)

◆ drm_gpuvm_exec_lock()

int drm_gpuvm_exec_lock ( struct drm_gpuvm_exec *  vm_exec)

◆ drm_gpuvm_exec_lock_array()

int drm_gpuvm_exec_lock_array ( struct drm_gpuvm_exec *  vm_exec,
struct drm_gem_object **  objs,
unsigned int  num_objs 
)

◆ drm_gpuvm_exec_lock_range()

int drm_gpuvm_exec_lock_range ( struct drm_gpuvm_exec *  vm_exec,
u64  addr,
u64  range 
)

◆ drm_gpuvm_init()

void drm_gpuvm_init ( struct drm_gpuvm *  gpuvm,
const char *  name,
enum drm_gpuvm_flags  flags,
struct drm_device *  drm,
struct drm_gem_object *  r_obj,
u64  start_offset,
u64  range,
u64  reserve_offset,
u64  reserve_range,
const struct drm_gpuvm_ops *  ops 
)

◆ drm_gpuvm_interval_empty()

bool drm_gpuvm_interval_empty ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuvm_madvise_ops_create()

struct drm_gpuva_ops * drm_gpuvm_madvise_ops_create ( struct drm_gpuvm *  gpuvm,
const struct drm_gpuvm_map_req *  req 
)

◆ drm_gpuvm_prefetch_ops_create()

struct drm_gpuva_ops * drm_gpuvm_prefetch_ops_create ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuvm_prepare_objects()

int drm_gpuvm_prepare_objects ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
unsigned int  num_fences 
)

◆ drm_gpuvm_prepare_range()

int drm_gpuvm_prepare_range ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
u64  addr,
u64  range,
unsigned int  num_fences 
)

◆ drm_gpuvm_prepare_vm()

int drm_gpuvm_prepare_vm ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
unsigned int  num_fences 
)

◆ drm_gpuvm_put()

void drm_gpuvm_put ( struct drm_gpuvm *  gpuvm)

◆ drm_gpuvm_range_valid()

bool drm_gpuvm_range_valid ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuvm_resv_add_fence()

void drm_gpuvm_resv_add_fence ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
struct dma_fence *  fence,
enum dma_resv_usage  private_usage,
enum dma_resv_usage  extobj_usage 
)

◆ drm_gpuvm_resv_object_alloc()

struct drm_gem_object * drm_gpuvm_resv_object_alloc ( struct drm_device *  drm)

◆ drm_gpuvm_sm_map()

int drm_gpuvm_sm_map ( struct drm_gpuvm *  gpuvm,
void *  priv,
const struct drm_gpuvm_map_req *  req 
)

◆ drm_gpuvm_sm_map_exec_lock()

int drm_gpuvm_sm_map_exec_lock ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
unsigned int  num_fences,
struct drm_gpuvm_map_req *  req 
)

◆ drm_gpuvm_sm_map_ops_create()

struct drm_gpuva_ops * drm_gpuvm_sm_map_ops_create ( struct drm_gpuvm *  gpuvm,
const struct drm_gpuvm_map_req *  req 
)

◆ drm_gpuvm_sm_unmap()

int drm_gpuvm_sm_unmap ( struct drm_gpuvm *  gpuvm,
void *  priv,
u64  addr,
u64  range 
)

◆ drm_gpuvm_sm_unmap_exec_lock()

int drm_gpuvm_sm_unmap_exec_lock ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec,
u64  req_addr,
u64  req_range 
)

◆ drm_gpuvm_sm_unmap_ops_create()

struct drm_gpuva_ops * drm_gpuvm_sm_unmap_ops_create ( struct drm_gpuvm *  gpuvm,
u64  addr,
u64  range 
)

◆ drm_gpuvm_validate()

int drm_gpuvm_validate ( struct drm_gpuvm *  gpuvm,
struct drm_exec *  exec 
)