Commit e67b8afc authored by Frank Min's avatar Frank Min Committed by Alex Deucher
Browse files

drm/amdgpu: Add PSP fw version check for fw reserve GFX command



The fw reserved GFX command is only supported starting from PSP fw
version 0x3a0e14 and 0x3b0e0d. Older versions do not support this command.

Add a version guard to ensure the command is only used when the running
PSP fw meets the minimum version requirement.

This ensures backward compatibility and safe operation across fw
revisions.

Fixes: a3b7f9c3 ("drm/amdgpu: reclaim psp fw reservation memory region")
Signed-off-by: default avatarFrank Min <Frank.Min@amd.com>
Reviewed-by: default avatarHawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 065e2317)
parent 8f5ae30d
Loading
Loading
Loading
Loading
+16 −3
Original line number Diff line number Diff line
@@ -1039,15 +1039,28 @@ int psp_update_fw_reservation(struct psp_context *psp)
{
	int ret;
	uint64_t reserv_addr, reserv_addr_ext;
	uint32_t reserv_size, reserv_size_ext;
	uint32_t reserv_size, reserv_size_ext, mp0_ip_ver;
	struct amdgpu_device *adev = psp->adev;

	mp0_ip_ver = amdgpu_ip_version(adev, MP0_HWIP, 0);

	if (amdgpu_sriov_vf(psp->adev))
		return 0;

	if ((amdgpu_ip_version(adev, MP0_HWIP, 0) != IP_VERSION(14, 0, 2)) &&
	    (amdgpu_ip_version(adev, MP0_HWIP, 0) != IP_VERSION(14, 0, 3)))
	switch (mp0_ip_ver) {
	case IP_VERSION(14, 0, 2):
		if (adev->psp.sos.fw_version < 0x3b0e0d)
			return 0;
		break;

	case IP_VERSION(14, 0, 3):
		if (adev->psp.sos.fw_version < 0x3a0e14)
			return 0;
		break;

	default:
		return 0;
	}

	ret = psp_get_fw_reservation_info(psp, GFX_CMD_ID_FB_FW_RESERV_ADDR, &reserv_addr, &reserv_size);
	if (ret)