drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.h

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.h

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.h
Extension
.h
Size
2827 bytes
Lines
93
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct amdgpu_vram_mgr {
	struct ttm_resource_manager manager;
	struct gpu_buddy mm;
	/* protects access to buffer objects */
	struct mutex lock;
	struct list_head reservations_pending;
	struct list_head reserved_pages;
	atomic64_t vis_usage;
	u64 default_page_size;
	struct list_head allocated_vres_list;
};

struct amdgpu_vres_task {
	pid_t pid;
	char  comm[TASK_COMM_LEN];
};

struct amdgpu_vram_block_info {
	u64 start;
	u64 size;
	struct amdgpu_vres_task task;
};

struct amdgpu_vram_mgr_resource {
	struct ttm_resource base;
	struct list_head blocks;
	unsigned long flags;
	struct list_head vres_node;
	struct amdgpu_vres_task task;
};

static inline u64 amdgpu_vram_mgr_block_start(struct gpu_buddy_block *block)
{
	return gpu_buddy_block_offset(block);
}

static inline u64 amdgpu_vram_mgr_block_size(struct gpu_buddy_block *block)
{
	return (u64)PAGE_SIZE << gpu_buddy_block_order(block);
}

static inline bool amdgpu_vram_mgr_is_cleared(struct gpu_buddy_block *block)
{
	return gpu_buddy_block_is_clear(block);
}

static inline struct amdgpu_vram_mgr_resource *
to_amdgpu_vram_mgr_resource(struct ttm_resource *res)
{
	return container_of(res, struct amdgpu_vram_mgr_resource, base);
}

static inline void amdgpu_vram_mgr_set_cleared(struct ttm_resource *res)
{
	struct amdgpu_vram_mgr_resource *ares = to_amdgpu_vram_mgr_resource(res);

	WARN_ON(ares->flags & GPU_BUDDY_CLEARED);
	ares->flags |= GPU_BUDDY_CLEARED;
}

int amdgpu_vram_mgr_query_address_block_info(struct amdgpu_vram_mgr *mgr,
		uint64_t address, struct amdgpu_vram_block_info *info);

#endif

Annotation

Implementation Notes