diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 13 | 
1 files changed, 8 insertions, 5 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c index 3afcd1e8aa54..2c1b38c5cfc6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c @@ -368,7 +368,7 @@ void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void **mem_obj)  {  	struct amdgpu_bo **bo = (struct amdgpu_bo **) mem_obj; -	amdgpu_bo_reserve(*bo, true); +	(void)amdgpu_bo_reserve(*bo, true);  	amdgpu_bo_kunmap(*bo);  	amdgpu_bo_unpin(*bo);  	amdgpu_bo_unreserve(*bo); @@ -715,8 +715,9 @@ err:  void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device *adev, bool idle)  {  	enum amd_powergating_state state = idle ? AMD_PG_STATE_GATE : AMD_PG_STATE_UNGATE; -	if (IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 11 && -	    ((adev->mes.kiq_version & AMDGPU_MES_VERSION_MASK) <= 64)) { +	if ((IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 11 && +	    ((adev->mes.kiq_version & AMDGPU_MES_VERSION_MASK) <= 64)) || +		(IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 12)) {  		pr_debug("GFXOFF is %s\n", idle ? "enabled" : "disabled");  		amdgpu_gfx_off_ctrl(adev, idle);  	} else if ((IP_VERSION_MAJ(amdgpu_ip_version(adev, GC_HWIP, 0)) == 9) && @@ -724,7 +725,9 @@ void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device *adev, bool idle)  		/* Disable GFXOFF and PG. Temporary workaround  		 * to fix some compute applications issue on GFX9.  		 */ -		adev->ip_blocks[AMD_IP_BLOCK_TYPE_GFX].version->funcs->set_powergating_state((void *)adev, state); +		struct amdgpu_ip_block *gfx_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_GFX); +		if (gfx_block != NULL) +			gfx_block->version->funcs->set_powergating_state((void *)gfx_block, state);  	}  	amdgpu_dpm_switch_power_profile(adev,  					PP_SMC_POWER_PROFILE_COMPUTE, @@ -834,7 +837,7 @@ int amdgpu_amdkfd_unmap_hiq(struct amdgpu_device *adev, u32 doorbell_off,  	if (!kiq->pmf || !kiq->pmf->kiq_unmap_queues)  		return -EINVAL; -	if (!kiq_ring->sched.ready || adev->job_hang) +	if (!kiq_ring->sched.ready || amdgpu_in_reset(adev))  		return 0;  	ring_funcs = kzalloc(sizeof(*ring_funcs), GFP_KERNEL); | 
