diff options
| author | Christian König <christian.koenig@amd.com> | 2018-08-21 16:09:39 +0300 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-08-27 19:09:39 +0300 | 
| commit | 9296435729dc8a2fd28b42391ff9f1ff310ebb7b (patch) | |
| tree | 0be02a982cc160800131911b468d8d77db4a4a37 /drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | |
| parent | 1cadf2b36809dca78ea9bbee7789a30727c1b5b3 (diff) | |
| download | linux-9296435729dc8a2fd28b42391ff9f1ff310ebb7b.tar.xz | |
drm/amdgpu: fix preamble handling
At this point the command submission can still be interrupted.
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 16 | 
1 files changed, 9 insertions, 7 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c index 502b94fb116a..09703c87d676 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c @@ -1012,13 +1012,9 @@ static int amdgpu_cs_ib_fill(struct amdgpu_device *adev,  		if (r)  			return r; -		if (chunk_ib->flags & AMDGPU_IB_FLAG_PREAMBLE) { -			parser->job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT; -			if (!parser->ctx->preamble_presented) { -				parser->job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT_FIRST; -				parser->ctx->preamble_presented = true; -			} -		} +		if (chunk_ib->flags & AMDGPU_IB_FLAG_PREAMBLE) +			parser->job->preamble_status |= +				AMDGPU_PREAMBLE_IB_PRESENT;  		if (parser->ring && parser->ring != ring)  			return -EINVAL; @@ -1241,6 +1237,12 @@ static int amdgpu_cs_submit(struct amdgpu_cs_parser *p,  	amdgpu_cs_post_dependencies(p); +	if ((job->preamble_status & AMDGPU_PREAMBLE_IB_PRESENT) && +	    !p->ctx->preamble_presented) { +		job->preamble_status |= AMDGPU_PREAMBLE_IB_PRESENT_FIRST; +		p->ctx->preamble_presented = true; +	} +  	cs->out.handle = seq;  	job->uf_sequence = seq; | 
