diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c index c641f84649d6..dee17a0e1187 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c @@ -518,7 +518,7 @@ static struct psp_gfx_cmd_resp *acquire_psp_cmd_buf(struct psp_context *psp)  	return cmd;  } -void release_psp_cmd_buf(struct psp_context *psp) +static void release_psp_cmd_buf(struct psp_context *psp)  {  	mutex_unlock(&psp->mutex);  } @@ -2017,12 +2017,16 @@ static int psp_hw_start(struct psp_context *psp)  		return ret;  	} +	if (amdgpu_sriov_vf(adev) && amdgpu_in_reset(adev)) +		goto skip_pin_bo; +  	ret = psp_tmr_init(psp);  	if (ret) {  		DRM_ERROR("PSP tmr init failed!\n");  		return ret;  	} +skip_pin_bo:  	/*  	 * For ASICs with DF Cstate management centralized  	 * to PMFW, TMR setup should be performed after PMFW @@ -2452,6 +2456,18 @@ skip_memalloc:  		return ret;  	} +	if (amdgpu_sriov_vf(adev) && amdgpu_in_reset(adev)) { +		if (adev->gmc.xgmi.num_physical_nodes > 1) { +			ret = psp_xgmi_initialize(psp, false, true); +			/* Warning the XGMI seesion initialize failure +			* Instead of stop driver initialization +			*/ +			if (ret) +				dev_err(psp->adev->dev, +					"XGMI: Failed to initialize XGMI session\n"); +		} +	} +  	if (psp->ta_fw) {  		ret = psp_ras_initialize(psp);  		if (ret) | 
