drm/amdgpu: Match against exact bootloader status
authorjsg <jsg@openbsd.org>
Wed, 13 Sep 2023 12:48:02 +0000 (12:48 +0000)
committerjsg <jsg@openbsd.org>
Wed, 13 Sep 2023 12:48:02 +0000 (12:48 +0000)
From Lijo Lazar
5251c835324bee81894fdad1a844d15a79e54883 in linux-6.1.y/6.1.53
d3de41ee5febe5c2d9989fe9810bce2bb54a3a8e in mainline linux

sys/dev/pci/drm/amd/amdgpu/psp_v13_0.c

index 938d0e6..a14205d 100644 (file)
@@ -147,14 +147,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),
-                                  0x80000000,
-                                  0x80000000,
-                                  false);
+               ret = psp_wait_for(
+                       psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),
+                       0x80000000, 0xffffffff, false);
 
                if (ret == 0)
                        return 0;