Commit 4d3c4f4f authored by Jesse.zhang@amd.com's avatar Jesse.zhang@amd.com Committed by Alex Deucher
Browse files

drm/amdgpu: Introduce cached_rptr and is_guilty callback in amdgpu_ring



This patch introduces the following changes:
- Add `cached_rptr` to the `amdgpu_ring` structure to store the read pointer before a reset.
- Add `is_guilty` callback to the `amdgpu_ring_funcs` structure to check if a ring is guilty of causing a timeout.

Suggested-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarJesse Zhang <jesse.zhang@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 4c02f730
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -349,6 +349,8 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct amdgpu_ring *ring,
	ring->buf_mask = (ring->ring_size / 4) - 1;
	ring->ptr_mask = ring->funcs->support_64bit_ptrs ?
		0xffffffffffffffff : ring->buf_mask;
	/*  Initialize cached_rptr to 0 */
	ring->cached_rptr = 0;

	/* Allocate ring buffer */
	if (ring->is_mes_queue) {
+3 −0
Original line number Diff line number Diff line
@@ -238,6 +238,7 @@ struct amdgpu_ring_funcs {
	void (*patch_de)(struct amdgpu_ring *ring, unsigned offset);
	int (*reset)(struct amdgpu_ring *ring, unsigned int vmid);
	void (*emit_cleaner_shader)(struct amdgpu_ring *ring);
	bool (*is_guilty)(struct amdgpu_ring *ring);
};

struct amdgpu_ring {
@@ -307,6 +308,8 @@ struct amdgpu_ring {

	bool            is_sw_ring;
	unsigned int    entry_index;
	/* store the cached rptr to restore after reset */
	uint64_t cached_rptr;

};