XenevaOS
Loading...
Searching...
No Matches
List of all members
drm_gpuvm Struct Reference

#include <drm_gpuvm.h>

Collaboration diagram for drm_gpuvm:
Collaboration graph
[legend]

Public Attributes

: the name of the DRM GPU VA space
const char * name
 
enum drm_gpuvm_flags flags
 
struct drm_device * drm
 
u64 mm_start
 
u64 mm_range
 
struct { 
 
   struct rb_root_cached   tree 
 
   struct list_head   list 
 
} rb 
 
struct kref kref
 
struct drm_gpuva kernel_alloc_node
 
const struct drm_gpuvm_ops * ops
 
struct drm_gem_object * r_obj
 
struct { 
 
   struct list_head   list 
 
   struct list_head *   local_list 
 
   spinlock_t   lock 
 
} extobj 
 
struct { 
 
   struct list_head   list 
 
   struct list_head *   local_list 
 
   spinlock_t   lock 
 
} evict 
 
struct llist_head bo_defer
 

Detailed Description

struct drm_gpuvm - DRM GPU VA Manager

The DRM GPU VA Manager keeps track of a GPU's virtual address space by using &maple_tree structures. Typically, this structure is embedded in bigger driver structures.

Drivers can pass addresses and ranges in an arbitrary unit, e.g. bytes or pages.

There should be one manager instance per GPU virtual address space.

Member Data Documentation

◆ bo_defer

struct llist_head drm_gpuvm::bo_defer

@bo_defer: structure holding vm_bos that need to be destroyed

◆ drm

struct drm_device* drm_gpuvm::drm

@drm: the &drm_device this VM lives in

◆ [struct]

struct { ... } drm_gpuvm::evict

@evict: structure holding the evict list and evict list lock

◆ [struct]

struct { ... } drm_gpuvm::extobj

@extobj: structure holding the extobj list

◆ flags

enum drm_gpuvm_flags drm_gpuvm::flags

@flags: the &drm_gpuvm_flags of this GPUVM

◆ kernel_alloc_node

struct drm_gpuva drm_gpuvm::kernel_alloc_node

@kernel_alloc_node:

&drm_gpuva representing the address space cutout reserved for the kernel

◆ kref

struct kref drm_gpuvm::kref

@kref: reference count of this object

◆ list

struct list_head drm_gpuvm::list

@rb.list: the &list_head to track GPU VA mappings

@extobj.list: &list_head storing &drm_gpuvm_bos serving as external object

@evict.list: &list_head storing &drm_gpuvm_bos currently being evicted

◆ local_list

struct list_head* drm_gpuvm::local_list

@extobj.local_list: pointer to the local list temporarily storing entries from the external object list

@evict.local_list: pointer to the local list temporarily storing entries from the evicted object list

◆ lock

spinlock_t drm_gpuvm::lock

@extobj.lock: spinlock to protect the extobj list

@evict.lock: spinlock to protect the evict list

◆ mm_range

u64 drm_gpuvm::mm_range

@mm_range: length of the VA space

◆ mm_start

u64 drm_gpuvm::mm_start

@mm_start: start of the VA space

◆ name

const char* drm_gpuvm::name

◆ ops

const struct drm_gpuvm_ops* drm_gpuvm::ops

@ops: &drm_gpuvm_ops providing the split/merge steps to drivers

◆ r_obj

struct drm_gem_object* drm_gpuvm::r_obj

@r_obj: Resv GEM object; representing the GPUVM's common &dma_resv.

◆ [struct]

struct { ... } drm_gpuvm::rb

@rb: structures to track &drm_gpuva entries

◆ tree

struct rb_root_cached drm_gpuvm::tree

@rb.tree: the rb-tree to track GPU VA mappings


The documentation for this struct was generated from the following file: