From: jsg Date: Wed, 13 Sep 2023 12:48:02 +0000 (+0000) Subject: drm/amdgpu: Match against exact bootloader status X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=108bce240d4d5329c43f5fe88af178abf445c616;p=openbsd drm/amdgpu: Match against exact bootloader status From Lijo Lazar 5251c835324bee81894fdad1a844d15a79e54883 in linux-6.1.y/6.1.53 d3de41ee5febe5c2d9989fe9810bce2bb54a3a8e in mainline linux --- diff --git a/sys/dev/pci/drm/amd/amdgpu/psp_v13_0.c b/sys/dev/pci/drm/amd/amdgpu/psp_v13_0.c index 938d0e6914b..a14205de7c1 100644 --- a/sys/dev/pci/drm/amd/amdgpu/psp_v13_0.c +++ b/sys/dev/pci/drm/amd/amdgpu/psp_v13_0.c @@ -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;