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

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

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/amd/amdgpu/amdgpu_eviction_fence.h
Extension
.h
Size
2545 bytes
Lines
73
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_eviction_fence {
	struct dma_fence base;
	spinlock_t	 lock;
	char		 timeline_name[TASK_COMM_LEN];
	struct amdgpu_eviction_fence_mgr *evf_mgr;
};

struct amdgpu_eviction_fence_mgr {
	u64			ev_fence_ctx;
	atomic_t		ev_fence_seq;

	/*
	 * Only updated while holding the VM resv lock.
	 * Only signaled while holding the userq mutex.
	 */
	struct dma_fence __rcu	*ev_fence;
	struct work_struct	suspend_work;
	bool			shutdown;
};

static inline struct dma_fence *
amdgpu_evf_mgr_get_fence(struct amdgpu_eviction_fence_mgr *evf_mgr)
{
	struct dma_fence *ev_fence;

	rcu_read_lock();
	ev_fence = dma_fence_get_rcu_safe(&evf_mgr->ev_fence);
	rcu_read_unlock();
	return ev_fence;
}

int amdgpu_evf_mgr_attach_fence(struct amdgpu_eviction_fence_mgr *evf_mgr,
				struct amdgpu_bo *bo);
int amdgpu_evf_mgr_rearm(struct amdgpu_eviction_fence_mgr *evf_mgr,
			 struct drm_exec *exec);
void amdgpu_evf_mgr_detach_fence(struct amdgpu_eviction_fence_mgr *evf_mgr,
				 struct amdgpu_bo *bo);
void amdgpu_evf_mgr_init(struct amdgpu_eviction_fence_mgr *evf_mgr);
void amdgpu_evf_mgr_shutdown(struct amdgpu_eviction_fence_mgr *evf_mgr);
void amdgpu_evf_mgr_flush_suspend(struct amdgpu_eviction_fence_mgr *evf_mgr);
void amdgpu_evf_mgr_fini(struct amdgpu_eviction_fence_mgr *evf_mgr);

#endif

Annotation

Implementation Notes