Re: [PATCH] drm/amdgpu: Match against exact bootloader status

2023-07-25 Thread Deucher, Alexander
[AMD Official Use Only - General]

Acked-by: Alex Deucher 

From: Lazar, Lijo 
Sent: Tuesday, July 25, 2023 9:48 AM
To: amd-gfx@lists.freedesktop.org 
Cc: Zhang, Hawking ; Deucher, Alexander 

Subject: [PATCH] drm/amdgpu: Match against exact bootloader status

On PSP v13.x ASICs, boot loader will set only the MSB to 1 and clear the
least significant bits for any command submission. Hence match against
the exact register value, otherwise a register value of all 0xFFs also
could falsely indicate that boot loader is ready. Also, from PSP v13.0.6
and newer, bits[7:0] will be used to indicate command error status.

Signed-off-by: Lijo Lazar 
---
 drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c 
b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
index e1a392bcea70..af5685f4cb34 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
@@ -137,14 +137,15 @@ static int psp_v13_0_wait_for_bootloader(struct 
psp_context *psp)
 int ret;
 int retry_loop;

+   /* Wait for bootloader to signify that it is ready having bit 31 of
+* C2PMSG_35 set to 1. All other bits are expected to be cleared.
+* If there is an error in processing command, bits[7:0] will be set.
+* This is applicable for PSP v13.0.6 and newer.
+*/
 for (retry_loop = 0; retry_loop < 10; retry_loop++) {
-   /* Wait for bootloader to signify that is
-   ready having bit 31 of C2PMSG_35 set to 1 */
-   ret = psp_wait_for(psp,
-  SOC15_REG_OFFSET(MP0, 0, 
regMP0_SMN_C2PMSG_35),
-  0x8000,
-  0x8000,
-  false);
+   ret = psp_wait_for(
+   psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),
+   0x8000, 0x, false);

 if (ret == 0)
 return 0;
--
2.25.1



[PATCH] drm/amdgpu: Match against exact bootloader status

2023-07-25 Thread Lijo Lazar
On PSP v13.x ASICs, boot loader will set only the MSB to 1 and clear the
least significant bits for any command submission. Hence match against
the exact register value, otherwise a register value of all 0xFFs also
could falsely indicate that boot loader is ready. Also, from PSP v13.0.6
and newer, bits[7:0] will be used to indicate command error status.

Signed-off-by: Lijo Lazar 
---
 drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 15 ---
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c 
b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
index e1a392bcea70..af5685f4cb34 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
@@ -137,14 +137,15 @@ static int psp_v13_0_wait_for_bootloader(struct 
psp_context *psp)
int ret;
int retry_loop;
 
+   /* Wait for bootloader to signify that it is ready having bit 31 of
+* C2PMSG_35 set to 1. All other bits are expected to be cleared.
+* If there is an error in processing command, bits[7:0] will be set.
+* This is applicable for PSP v13.0.6 and newer.
+*/
for (retry_loop = 0; retry_loop < 10; retry_loop++) {
-   /* Wait for bootloader to signify that is
-   ready having bit 31 of C2PMSG_35 set to 1 */
-   ret = psp_wait_for(psp,
-  SOC15_REG_OFFSET(MP0, 0, 
regMP0_SMN_C2PMSG_35),
-  0x8000,
-  0x8000,
-  false);
+   ret = psp_wait_for(
+   psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),
+   0x8000, 0x, false);
 
if (ret == 0)
return 0;
-- 
2.25.1