[PATCH] drm/amdgpu: add checking for sos version

Christian König ckoenig.leichtzumerken at gmail.com
Wed May 23 07:34:16 UTC 2018


Please add a commit message.

We recently got pinged by Linus that this is missing on to many of our 
patches.

Christian.

Am 23.05.2018 um 07:45 schrieb Huang Rui:
> Signed-off-by: Huang Rui <ray.huang at amd.com>
> Acked-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/psp_v3_1.c | 27 ++++++++++++++++++++++++++-
>   1 file changed, 26 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
> index 196e75d..efe5c1f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
> @@ -44,6 +44,8 @@ MODULE_FIRMWARE("amdgpu/vega12_asd.bin");
>   
>   #define smnMP1_FIRMWARE_FLAGS 0x3010028
>   
> +static uint32_t sos_old_versions[] = {1517616, 1510592, 1448594, 1446554};
> +
>   static int
>   psp_v3_1_get_fw_type(struct amdgpu_firmware_info *ucode, enum psp_gfx_fw_type *type)
>   {
> @@ -207,12 +209,31 @@ static int psp_v3_1_bootloader_load_sysdrv(struct psp_context *psp)
>   	return ret;
>   }
>   
> +static bool psp_v3_1_match_version(struct amdgpu_device *adev, uint32_t ver)
> +{
> +	int i;
> +
> +	if (ver == adev->psp.sos_fw_version)
> +		return true;
> +
> +	/*
> +	 * Double check if the latest three legacy versions.
> +	 * If yes, it is still the right version.
> +	 */
> +	for (i = 0; i < sizeof(sos_old_versions) / sizeof(uint32_t); i++) {
> +		if (sos_old_versions[i] == adev->psp.sos_fw_version)
> +			return true;
> +	}
> +
> +	return false;
> +}
> +
>   static int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
>   {
>   	int ret;
>   	unsigned int psp_gfxdrv_command_reg = 0;
>   	struct amdgpu_device *adev = psp->adev;
> -	uint32_t sol_reg;
> +	uint32_t sol_reg, ver;
>   
>   	/* Check sOS sign of life register to confirm sys driver and sOS
>   	 * are already been loaded.
> @@ -245,6 +266,10 @@ static int psp_v3_1_bootloader_load_sos(struct psp_context *psp)
>   			   RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_81),
>   			   0, true);
>   
> +	ver = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_58);
> +	if (!psp_v3_1_match_version(adev, ver))
> +		DRM_WARN("SOS version doesn't match\n");
> +
>   	return ret;
>   }
>   



More information about the amd-gfx mailing list