[PATCH] drm/amdgpu: Read PSPv13 OS version from register

Zhang, Hawking Hawking.Zhang at amd.com
Wed Oct 11 07:06:54 UTC 2023


[AMD Official Use Only - General]

Reviewed-by: Hawking Zhang <Hawking.Zhang at amd.com>

Regards,
Hawking
-----Original Message-----
From: Lazar, Lijo <Lijo.Lazar at amd.com>
Sent: Wednesday, October 11, 2023 14:51
To: amd-gfx at lists.freedesktop.org
Cc: Zhang, Hawking <Hawking.Zhang at amd.com>; Deucher, Alexander <Alexander.Deucher at amd.com>; Wang, Yang(Kevin) <KevinYang.Wang at amd.com>
Subject: [PATCH] drm/amdgpu: Read PSPv13 OS version from register

PSP OS updates the version information in register. On APUs with PSPv13, PSP OS will already be loaded with SBIOS. Hence use the version register instead of using information in driver binary header.

Signed-off-by: Lijo Lazar <lijo.lazar at amd.com>
Reviewed-by: Yang Wang <kevinyang.wang at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
index b7bc00d4c696..573046702861 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
@@ -263,6 +263,12 @@ static int psp_v13_0_bootloader_load_ras_drv(struct psp_context *psp)
        return psp_v13_0_bootloader_load_component(psp, &psp->ras_drv, PSP_BL__LOAD_RASDRV);  }

+static inline void psp_v13_0_init_sos_version(struct psp_context *psp)
+{
+       struct amdgpu_device *adev = psp->adev;
+
+       psp->sos.fw_version = RREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_58); }

 static int psp_v13_0_bootloader_load_sos(struct psp_context *psp)  { @@ -273,8 +279,10 @@ static int psp_v13_0_bootloader_load_sos(struct psp_context *psp)
        /* Check sOS sign of life register to confirm sys driver and sOS
         * are already been loaded.
         */
-       if (psp_v13_0_is_sos_alive(psp))
+       if (psp_v13_0_is_sos_alive(psp)) {
+               psp_v13_0_init_sos_version(psp);
                return 0;
+       }

        ret = psp_v13_0_wait_for_bootloader(psp);
        if (ret)
@@ -298,6 +306,9 @@ static int psp_v13_0_bootloader_load_sos(struct psp_context *psp)
                           RREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_81),
                           0, true);

+       if (!ret)
+               psp_v13_0_init_sos_version(psp);
+
        return ret;
 }

--
2.25.1



More information about the amd-gfx mailing list