mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
drm/amdgpu: track guilty fence for queue reset
If we've already seen a fence, don't backup the ring contents since presumably either the previous reset was not successful or there was something wrong with the data. Reviewed-by: Jesse Zhang <jesse.zhang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
930a915de8
commit
ce3f23a780
|
|
@ -803,6 +803,17 @@ void amdgpu_ring_backup_unprocessed_commands(struct amdgpu_ring *ring,
|
|||
seq = ring->fence_drv.sync_seq & ring->fence_drv.num_fences_mask;
|
||||
ring->ring_backup_entries_to_copy = 0;
|
||||
|
||||
/* if we've already seen this fence, return early.
|
||||
* ring->ring_backup_entries_to_copy is set to 0 so
|
||||
* the reemit helper will return early as well to
|
||||
* avoid getting stuck in a reemit loop.
|
||||
*/
|
||||
if (ring->guilty_fence == guilty_fence) {
|
||||
ring->guilty_fence = NULL;
|
||||
return;
|
||||
}
|
||||
ring->guilty_fence = guilty_fence;
|
||||
|
||||
do {
|
||||
last_seq++;
|
||||
last_seq &= ring->fence_drv.num_fences_mask;
|
||||
|
|
|
|||
|
|
@ -314,6 +314,7 @@ struct amdgpu_ring {
|
|||
uint32_t *ring_backup;
|
||||
unsigned int ring_backup_entries_to_copy;
|
||||
bool reemit;
|
||||
struct amdgpu_fence *guilty_fence;
|
||||
unsigned rptr_offs;
|
||||
u64 rptr_gpu_addr;
|
||||
u32 *rptr_cpu_addr;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user