diff options
| author | Christian König <christian.koenig@amd.com> | 2018-01-19 14:21:47 +0100 | 
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2018-02-19 14:18:21 -0500 | 
| commit | 1b9d17db1cb103f56a69d8610d7339fb0a2a90cc (patch) | |
| tree | 35b7d9d247a12a662e800d1b00cc2347130a9999 /drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | |
| parent | 698825653fdf1a696e1b9458ed9fc4aa2c6587d4 (diff) | |
drm/amdgpu: fallback to generic HDP operation
When ring special operations aren't available we can fallback to the
generic ASIC operations.
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 22 | 
1 files changed, 14 insertions, 8 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c index a162d87ca0c8..e87c9952c901 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c @@ -184,12 +184,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,  	if (ring->funcs->init_cond_exec)  		patch_offset = amdgpu_ring_init_cond_exec(ring); -	if (ring->funcs->emit_hdp_flush  #ifdef CONFIG_X86_64 -	    && !(adev->flags & AMD_IS_APU) +	if (!(adev->flags & AMD_IS_APU))  #endif -	   ) -		amdgpu_ring_emit_hdp_flush(ring); +	{ +		if (ring->funcs->emit_hdp_flush) +			amdgpu_ring_emit_hdp_flush(ring); +		else +			amdgpu_asic_flush_hdp(adev, ring); +	}  	skip_preamble = ring->current_ctx == fence_ctx;  	need_ctx_switch = ring->current_ctx != fence_ctx; @@ -219,12 +222,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,  	if (ring->funcs->emit_tmz)  		amdgpu_ring_emit_tmz(ring, false); -	if (ring->funcs->emit_hdp_invalidate  #ifdef CONFIG_X86_64 -	    && !(adev->flags & AMD_IS_APU) +	if (!(adev->flags & AMD_IS_APU))  #endif -	   ) -		amdgpu_ring_emit_hdp_invalidate(ring); +	{ +		if (ring->funcs->emit_hdp_invalidate) +			amdgpu_ring_emit_hdp_invalidate(ring); +		else +			amdgpu_asic_invalidate_hdp(adev, ring); +	}  	r = amdgpu_fence_emit(ring, f);  	if (r) { | 
