Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b995795b authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: fix "use bulk moves for efficient VM LRU handling" v2



First step to fix the LRU corruption, we accidentially tried to move things
on the LRU after dropping the lock.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Tested-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 972a21f9
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -1237,6 +1237,8 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,
	ring = to_amdgpu_ring(entity->rq->sched);
	amdgpu_ring_priority_get(ring, priority);

	amdgpu_vm_move_to_lru_tail(p->adev, &fpriv->vm);

	ttm_eu_fence_buffer_objects(&p->ticket, &p->validated, p->fence);
	amdgpu_mn_unlock(p->mn);

@@ -1258,7 +1260,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
	union drm_amdgpu_cs *cs = data;
	struct amdgpu_cs_parser parser = {};
	bool reserved_buffers = false;
	struct amdgpu_fpriv *fpriv;
	int i, r;

	if (!adev->accel_working)
@@ -1303,8 +1304,6 @@ int amdgpu_cs_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)

	r = amdgpu_cs_submit(&parser, cs);

	fpriv = filp->driver_priv;
	amdgpu_vm_move_to_lru_tail(adev, &fpriv->vm);
out:
	amdgpu_cs_parser_fini(&parser, r, reserved_buffers);
	return r;