|
XenevaOS
|
#include <drm_gpuvm.h>

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 | |
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.
| struct llist_head drm_gpuvm::bo_defer |
@bo_defer: structure holding vm_bos that need to be destroyed
| struct drm_device* drm_gpuvm::drm |
@drm: the &drm_device this VM lives in
| struct { ... } drm_gpuvm::evict |
@evict: structure holding the evict list and evict list lock
| struct { ... } drm_gpuvm::extobj |
@extobj: structure holding the extobj list
| enum drm_gpuvm_flags drm_gpuvm::flags |
@flags: the &drm_gpuvm_flags of this GPUVM
| struct drm_gpuva drm_gpuvm::kernel_alloc_node |
@kernel_alloc_node:
&drm_gpuva representing the address space cutout reserved for the kernel
| struct kref drm_gpuvm::kref |
@kref: reference count of this object
| struct list_head drm_gpuvm::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
| spinlock_t drm_gpuvm::lock |
@extobj.lock: spinlock to protect the extobj list
@evict.lock: spinlock to protect the evict list
| u64 drm_gpuvm::mm_range |
@mm_range: length of the VA space
| u64 drm_gpuvm::mm_start |
@mm_start: start of the VA space
| const char* drm_gpuvm::name |
| const struct drm_gpuvm_ops* drm_gpuvm::ops |
@ops: &drm_gpuvm_ops providing the split/merge steps to drivers
| struct drm_gem_object* drm_gpuvm::r_obj |
@r_obj: Resv GEM object; representing the GPUVM's common &dma_resv.
| struct { ... } drm_gpuvm::rb |
@rb: structures to track &drm_gpuva entries
| struct rb_root_cached drm_gpuvm::tree |
@rb.tree: the rb-tree to track GPU VA mappings