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

Min, Frank Frank.Min at amd.com
Wed Aug 6 13:07:09 UTC 2025


[AMD Official Use Only - AMD Internal Distribution Only]


From: Frank Min <Frank.Min at amd.com<mailto:Frank.Min at amd.com>>

Date: Tue, 5 Aug 2025 22:30:54 +0800

Subject: [PATCH] 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.



Signed-off-by: Frank Min <Frank.Min at amd.com<mailto:Frank.Min at amd.com>>

---

drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 19 ++++++++++++++++---

1 file changed, 16 insertions(+), 3 deletions(-)



diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

index 14121efb9d95..1acc1ffce31d 100644

--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c

@@ -1043,15 +1043,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)

--

2.43.0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20250806/16a89738/attachment-0001.htm>


More information about the amd-gfx mailing list