Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amd/amdgpu: add consistent PSP FW loading size checking

Signed-off-by: Candice Li <candice.li@amd.com>
Reviewed-by: John Clements <John.Clements@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Candice Li and committed by
Alex Deucher
222e0a71 ff99849b

+95 -86
+4 -4
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
··· 374 374 fw_info->feature = adev->sdma.instance[query_fw->index].feature_version; 375 375 break; 376 376 case AMDGPU_INFO_FW_SOS: 377 - fw_info->ver = adev->psp.sos_fw_version; 378 - fw_info->feature = adev->psp.sos_feature_version; 377 + fw_info->ver = adev->psp.sos.fw_version; 378 + fw_info->feature = adev->psp.sos.feature_version; 379 379 break; 380 380 case AMDGPU_INFO_FW_ASD: 381 381 fw_info->ver = adev->psp.asd_fw_version; ··· 390 390 fw_info->feature = 0; 391 391 break; 392 392 case AMDGPU_INFO_FW_TOC: 393 - fw_info->ver = adev->psp.toc_fw_version; 394 - fw_info->feature = adev->psp.toc_feature_version; 393 + fw_info->ver = adev->psp.toc.fw_version; 394 + fw_info->feature = adev->psp.toc.feature_version; 395 395 break; 396 396 default: 397 397 return -EINVAL;
+59 -49
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
··· 516 516 if (!cmd) 517 517 return -ENOMEM; 518 518 /* Copy toc to psp firmware private buffer */ 519 - psp_copy_fw(psp, psp->toc_start_addr, psp->toc_bin_size); 519 + psp_copy_fw(psp, psp->toc.start_addr, psp->toc.size_bytes); 520 520 521 - psp_prep_load_toc_cmd_buf(cmd, psp->fw_pri_mc_addr, psp->toc_bin_size); 521 + psp_prep_load_toc_cmd_buf(cmd, psp->fw_pri_mc_addr, psp->toc.size_bytes); 522 522 523 523 ret = psp_cmd_submit_buf(psp, NULL, cmd, 524 524 psp->fence_buf_mc_addr); ··· 548 548 /* For ASICs support RLC autoload, psp will parse the toc 549 549 * and calculate the total size of TMR needed */ 550 550 if (!amdgpu_sriov_vf(psp->adev) && 551 - psp->toc_start_addr && 552 - psp->toc_bin_size && 551 + psp->toc.start_addr && 552 + psp->toc.size_bytes && 553 553 psp->fw_pri_buf) { 554 554 ret = psp_load_toc(psp, &tmr_size); 555 555 if (ret) { ··· 728 728 struct psp_context *psp = &adev->psp; 729 729 struct psp_gfx_cmd_resp *cmd = psp->cmd; 730 730 731 - if (psp->rl_bin_size == 0) 731 + if (!is_psp_fw_valid(psp->rl)) 732 732 return 0; 733 733 734 734 memset(psp->fw_pri_buf, 0, PSP_1_MEG); 735 - memcpy(psp->fw_pri_buf, psp->rl_start_addr, psp->rl_bin_size); 735 + memcpy(psp->fw_pri_buf, psp->rl.start_addr, psp->rl.size_bytes); 736 736 737 737 memset(cmd, 0, sizeof(struct psp_gfx_cmd_resp)); 738 738 739 739 cmd->cmd_id = GFX_CMD_ID_LOAD_IP_FW; 740 740 cmd->cmd.cmd_load_ip_fw.fw_phy_addr_lo = lower_32_bits(psp->fw_pri_mc_addr); 741 741 cmd->cmd.cmd_load_ip_fw.fw_phy_addr_hi = upper_32_bits(psp->fw_pri_mc_addr); 742 - cmd->cmd.cmd_load_ip_fw.fw_size = psp->rl_bin_size; 742 + cmd->cmd.cmd_load_ip_fw.fw_size = psp->rl.size_bytes; 743 743 cmd->cmd.cmd_load_ip_fw.fw_type = GFX_FW_TYPE_REG_LIST; 744 744 745 745 return psp_cmd_submit_buf(psp, NULL, cmd, psp->fence_buf_mc_addr); ··· 2129 2129 int ret; 2130 2130 2131 2131 if (!amdgpu_sriov_vf(adev)) { 2132 - if (psp->kdb_bin_size && 2132 + if ((is_psp_fw_valid(psp->kdb)) && 2133 2133 (psp->funcs->bootloader_load_kdb != NULL)) { 2134 2134 ret = psp_bootloader_load_kdb(psp); 2135 2135 if (ret) { ··· 2138 2138 } 2139 2139 } 2140 2140 2141 - if (psp->spl_bin_size) { 2141 + if ((is_psp_fw_valid(psp->spl)) && 2142 + (psp->funcs->bootloader_load_spl != NULL)) { 2142 2143 ret = psp_bootloader_load_spl(psp); 2143 2144 if (ret) { 2144 2145 DRM_ERROR("PSP load spl failed!\n"); ··· 2147 2146 } 2148 2147 } 2149 2148 2150 - ret = psp_bootloader_load_sysdrv(psp); 2151 - if (ret) { 2152 - DRM_ERROR("PSP load sysdrv failed!\n"); 2153 - return ret; 2149 + if ((is_psp_fw_valid(psp->sys)) && 2150 + (psp->funcs->bootloader_load_sysdrv != NULL)) { 2151 + ret = psp_bootloader_load_sysdrv(psp); 2152 + if (ret) { 2153 + DRM_ERROR("PSP load sysdrv failed!\n"); 2154 + return ret; 2155 + } 2154 2156 } 2155 2157 2156 - ret = psp_bootloader_load_sos(psp); 2157 - if (ret) { 2158 - DRM_ERROR("PSP load sos failed!\n"); 2159 - return ret; 2158 + if ((is_psp_fw_valid(psp->sos)) && 2159 + (psp->funcs->bootloader_load_sos != NULL)) { 2160 + ret = psp_bootloader_load_sos(psp); 2161 + if (ret) { 2162 + DRM_ERROR("PSP load sos failed!\n"); 2163 + return ret; 2164 + } 2160 2165 } 2161 2166 } 2162 2167 ··· 3004 2997 goto out; 3005 2998 3006 2999 toc_hdr = (const struct psp_firmware_header_v1_0 *)adev->psp.toc_fw->data; 3007 - adev->psp.toc_fw_version = le32_to_cpu(toc_hdr->header.ucode_version); 3008 - adev->psp.toc_feature_version = le32_to_cpu(toc_hdr->sos.fw_version); 3009 - adev->psp.toc_bin_size = le32_to_cpu(toc_hdr->header.ucode_size_bytes); 3010 - adev->psp.toc_start_addr = (uint8_t *)toc_hdr + 3000 + adev->psp.toc.fw_version = le32_to_cpu(toc_hdr->header.ucode_version); 3001 + adev->psp.toc.feature_version = le32_to_cpu(toc_hdr->sos.fw_version); 3002 + adev->psp.toc.size_bytes = le32_to_cpu(toc_hdr->header.ucode_size_bytes); 3003 + adev->psp.toc.start_addr = (uint8_t *)toc_hdr + 3011 3004 le32_to_cpu(toc_hdr->header.ucode_array_offset_bytes); 3012 3005 return 0; 3013 3006 out: ··· 3028 3021 le32_to_cpu(sos_hdr->header.ucode_array_offset_bytes); 3029 3022 3030 3023 if (adev->gmc.xgmi.connected_to_cpu || (adev->asic_type != CHIP_ALDEBARAN)) { 3031 - adev->psp.sos_fw_version = le32_to_cpu(sos_hdr->header.ucode_version); 3032 - adev->psp.sos_feature_version = le32_to_cpu(sos_hdr->sos.fw_version); 3024 + adev->psp.sos.fw_version = le32_to_cpu(sos_hdr->header.ucode_version); 3025 + adev->psp.sos.feature_version = le32_to_cpu(sos_hdr->sos.fw_version); 3033 3026 3034 - adev->psp.sys_bin_size = le32_to_cpu(sos_hdr->sos.offset_bytes); 3035 - adev->psp.sys_start_addr = ucode_array_start_addr; 3027 + adev->psp.sys.size_bytes = le32_to_cpu(sos_hdr->sos.offset_bytes); 3028 + adev->psp.sys.start_addr = ucode_array_start_addr; 3036 3029 3037 - adev->psp.sos_bin_size = le32_to_cpu(sos_hdr->sos.size_bytes); 3038 - adev->psp.sos_start_addr = ucode_array_start_addr + 3030 + adev->psp.sos.size_bytes = le32_to_cpu(sos_hdr->sos.size_bytes); 3031 + adev->psp.sos.start_addr = ucode_array_start_addr + 3039 3032 le32_to_cpu(sos_hdr->sos.offset_bytes); 3040 3033 } else { 3041 3034 /* Load alternate PSP SOS FW */ 3042 3035 sos_hdr_v1_3 = (const struct psp_firmware_header_v1_3 *)adev->psp.sos_fw->data; 3043 3036 3044 - adev->psp.sos_fw_version = le32_to_cpu(sos_hdr_v1_3->sos_aux.fw_version); 3045 - adev->psp.sos_feature_version = le32_to_cpu(sos_hdr_v1_3->sos_aux.fw_version); 3037 + adev->psp.sos.fw_version = le32_to_cpu(sos_hdr_v1_3->sos_aux.fw_version); 3038 + adev->psp.sos.feature_version = le32_to_cpu(sos_hdr_v1_3->sos_aux.fw_version); 3046 3039 3047 - adev->psp.sys_bin_size = le32_to_cpu(sos_hdr_v1_3->sys_drv_aux.size_bytes); 3048 - adev->psp.sys_start_addr = ucode_array_start_addr + 3040 + adev->psp.sys.size_bytes = le32_to_cpu(sos_hdr_v1_3->sys_drv_aux.size_bytes); 3041 + adev->psp.sys.start_addr = ucode_array_start_addr + 3049 3042 le32_to_cpu(sos_hdr_v1_3->sys_drv_aux.offset_bytes); 3050 3043 3051 - adev->psp.sos_bin_size = le32_to_cpu(sos_hdr_v1_3->sos_aux.size_bytes); 3052 - adev->psp.sos_start_addr = ucode_array_start_addr + 3044 + adev->psp.sos.size_bytes = le32_to_cpu(sos_hdr_v1_3->sos_aux.size_bytes); 3045 + adev->psp.sos.start_addr = ucode_array_start_addr + 3053 3046 le32_to_cpu(sos_hdr_v1_3->sos_aux.offset_bytes); 3054 3047 } 3055 3048 3056 - if ((adev->psp.sys_bin_size == 0) || (adev->psp.sos_bin_size == 0)) { 3049 + if ((adev->psp.sys.size_bytes == 0) || (adev->psp.sos.size_bytes == 0)) { 3057 3050 dev_warn(adev->dev, "PSP SOS FW not available"); 3058 3051 return -EINVAL; 3059 3052 } ··· 3100 3093 3101 3094 if (sos_hdr->header.header_version_minor == 1) { 3102 3095 sos_hdr_v1_1 = (const struct psp_firmware_header_v1_1 *)adev->psp.sos_fw->data; 3103 - adev->psp.toc_bin_size = le32_to_cpu(sos_hdr_v1_1->toc.size_bytes); 3104 - adev->psp.toc_start_addr = (uint8_t *)adev->psp.sys_start_addr + 3096 + adev->psp.toc.size_bytes = le32_to_cpu(sos_hdr_v1_1->toc.size_bytes); 3097 + adev->psp.toc.start_addr = (uint8_t *)adev->psp.sys.start_addr + 3105 3098 le32_to_cpu(sos_hdr_v1_1->toc.offset_bytes); 3106 - adev->psp.kdb_bin_size = le32_to_cpu(sos_hdr_v1_1->kdb.size_bytes); 3107 - adev->psp.kdb_start_addr = (uint8_t *)adev->psp.sys_start_addr + 3099 + adev->psp.kdb.size_bytes = le32_to_cpu(sos_hdr_v1_1->kdb.size_bytes); 3100 + adev->psp.kdb.start_addr = (uint8_t *)adev->psp.sys.start_addr + 3108 3101 le32_to_cpu(sos_hdr_v1_1->kdb.offset_bytes); 3109 3102 } 3110 3103 if (sos_hdr->header.header_version_minor == 2) { 3111 3104 sos_hdr_v1_2 = (const struct psp_firmware_header_v1_2 *)adev->psp.sos_fw->data; 3112 - adev->psp.kdb_bin_size = le32_to_cpu(sos_hdr_v1_2->kdb.size_bytes); 3113 - adev->psp.kdb_start_addr = (uint8_t *)adev->psp.sys_start_addr + 3105 + adev->psp.kdb.size_bytes = le32_to_cpu(sos_hdr_v1_2->kdb.size_bytes); 3106 + adev->psp.kdb.start_addr = (uint8_t *)adev->psp.sys.start_addr + 3114 3107 le32_to_cpu(sos_hdr_v1_2->kdb.offset_bytes); 3115 3108 } 3116 3109 if (sos_hdr->header.header_version_minor == 3) { 3117 3110 sos_hdr_v1_3 = (const struct psp_firmware_header_v1_3 *)adev->psp.sos_fw->data; 3118 - adev->psp.toc_bin_size = le32_to_cpu(sos_hdr_v1_3->v1_1.toc.size_bytes); 3119 - adev->psp.toc_start_addr = ucode_array_start_addr + 3111 + adev->psp.toc.size_bytes = le32_to_cpu(sos_hdr_v1_3->v1_1.toc.size_bytes); 3112 + adev->psp.toc.start_addr = ucode_array_start_addr + 3120 3113 le32_to_cpu(sos_hdr_v1_3->v1_1.toc.offset_bytes); 3121 - adev->psp.kdb_bin_size = le32_to_cpu(sos_hdr_v1_3->v1_1.kdb.size_bytes); 3122 - adev->psp.kdb_start_addr = ucode_array_start_addr + 3114 + adev->psp.kdb.size_bytes = le32_to_cpu(sos_hdr_v1_3->v1_1.kdb.size_bytes); 3115 + adev->psp.kdb.start_addr = ucode_array_start_addr + 3123 3116 le32_to_cpu(sos_hdr_v1_3->v1_1.kdb.offset_bytes); 3124 - adev->psp.spl_bin_size = le32_to_cpu(sos_hdr_v1_3->spl.size_bytes); 3125 - adev->psp.spl_start_addr = ucode_array_start_addr + 3117 + adev->psp.spl.size_bytes = le32_to_cpu(sos_hdr_v1_3->spl.size_bytes); 3118 + adev->psp.spl.start_addr = ucode_array_start_addr + 3126 3119 le32_to_cpu(sos_hdr_v1_3->spl.offset_bytes); 3127 - adev->psp.rl_bin_size = le32_to_cpu(sos_hdr_v1_3->rl.size_bytes); 3128 - adev->psp.rl_start_addr = ucode_array_start_addr + 3120 + adev->psp.rl.size_bytes = le32_to_cpu(sos_hdr_v1_3->rl.size_bytes); 3121 + adev->psp.rl.start_addr = ucode_array_start_addr + 3129 3122 le32_to_cpu(sos_hdr_v1_3->rl.offset_bytes); 3130 3123 } 3131 3124 break; ··· 3368 3361 psp_usbc_pd_fw_sysfs_read, 3369 3362 psp_usbc_pd_fw_sysfs_write); 3370 3363 3371 - 3364 + int is_psp_fw_valid(struct psp_bin_desc bin) 3365 + { 3366 + return bin.size_bytes; 3367 + } 3372 3368 3373 3369 const struct amd_ip_funcs psp_ip_funcs = { 3374 3370 .name = "psp",
+15 -16
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h
··· 48 48 struct psp_context; 49 49 struct psp_xgmi_node_info; 50 50 struct psp_xgmi_topology_info; 51 + struct psp_bin_desc; 51 52 52 53 enum psp_bootloader_cmd { 53 54 PSP_BL__LOAD_SYSDRV = 0x10000, ··· 284 283 uint32_t reserved; 285 284 }; 286 285 286 + struct psp_bin_desc { 287 + uint32_t fw_version; 288 + uint32_t feature_version; 289 + uint32_t size_bytes; 290 + uint8_t *start_addr; 291 + }; 292 + 287 293 struct psp_context 288 294 { 289 295 struct amdgpu_device *adev; ··· 306 298 307 299 /* sos firmware */ 308 300 const struct firmware *sos_fw; 309 - uint32_t sos_fw_version; 310 - uint32_t sos_feature_version; 311 - uint32_t sys_bin_size; 312 - uint32_t sos_bin_size; 313 - uint32_t toc_bin_size; 314 - uint32_t kdb_bin_size; 315 - uint32_t spl_bin_size; 316 - uint32_t rl_bin_size; 317 - uint8_t *sys_start_addr; 318 - uint8_t *sos_start_addr; 319 - uint8_t *toc_start_addr; 320 - uint8_t *kdb_start_addr; 321 - uint8_t *spl_start_addr; 322 - uint8_t *rl_start_addr; 301 + struct psp_bin_desc sys; 302 + struct psp_bin_desc sos; 303 + struct psp_bin_desc toc; 304 + struct psp_bin_desc kdb; 305 + struct psp_bin_desc spl; 306 + struct psp_bin_desc rl; 323 307 324 308 /* tmr buffer */ 325 309 struct amdgpu_bo *tmr_bo; ··· 326 326 327 327 /* toc firmware */ 328 328 const struct firmware *toc_fw; 329 - uint32_t toc_fw_version; 330 - uint32_t toc_feature_version; 331 329 332 330 /* fence buffer */ 333 331 struct amdgpu_bo *fence_buf_bo; ··· 482 484 struct amdgpu_firmware_info **ucode_list, int ucode_count); 483 485 void psp_copy_fw(struct psp_context *psp, uint8_t *start_addr, uint32_t bin_size); 484 486 487 + int is_psp_fw_valid(struct psp_bin_desc bin); 485 488 #endif
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_ucode.c
··· 518 518 FW_VERSION_ATTR(rlc_srls_fw_version, 0444, gfx.rlc_srls_fw_version); 519 519 FW_VERSION_ATTR(mec_fw_version, 0444, gfx.mec_fw_version); 520 520 FW_VERSION_ATTR(mec2_fw_version, 0444, gfx.mec2_fw_version); 521 - FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos_fw_version); 521 + FW_VERSION_ATTR(sos_fw_version, 0444, psp.sos.fw_version); 522 522 FW_VERSION_ATTR(asd_fw_version, 0444, psp.asd_fw_version); 523 523 FW_VERSION_ATTR(ta_ras_fw_version, 0444, psp.ta_ras_ucode_version); 524 524 FW_VERSION_ATTR(ta_xgmi_fw_version, 0444, psp.ta_xgmi_ucode_version);
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c
··· 531 531 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_RLC_SRLS, adev->gfx.rlc_srls_fw_version); 532 532 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC, adev->gfx.mec_fw_version); 533 533 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_MEC2, adev->gfx.mec2_fw_version); 534 - POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_SOS, adev->psp.sos_fw_version); 534 + POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_SOS, adev->psp.sos.fw_version); 535 535 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_ASD, adev->psp.asd_fw_version); 536 536 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_TA_RAS, adev->psp.ta_ras_ucode_version); 537 537 POPULATE_UCODE_INFO(vf2pf_info, AMD_SRIOV_UCODE_ID_TA_XGMI, adev->psp.ta_xgmi_ucode_version);
+2 -2
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
··· 5397 5397 int ret; 5398 5398 RLC_TABLE_OF_CONTENT *rlc_toc; 5399 5399 5400 - ret = amdgpu_bo_create_reserved(adev, adev->psp.toc_bin_size, PAGE_SIZE, 5400 + ret = amdgpu_bo_create_reserved(adev, adev->psp.toc.size_bytes, PAGE_SIZE, 5401 5401 AMDGPU_GEM_DOMAIN_GTT, 5402 5402 &adev->gfx.rlc.rlc_toc_bo, 5403 5403 &adev->gfx.rlc.rlc_toc_gpu_addr, ··· 5408 5408 } 5409 5409 5410 5410 /* Copy toc from psp sos fw to rlc toc buffer */ 5411 - memcpy(adev->gfx.rlc.rlc_toc_buf, adev->psp.toc_start_addr, adev->psp.toc_bin_size); 5411 + memcpy(adev->gfx.rlc.rlc_toc_buf, adev->psp.toc.start_addr, adev->psp.toc.size_bytes); 5412 5412 5413 5413 rlc_toc = (RLC_TABLE_OF_CONTENT *)adev->gfx.rlc.rlc_toc_buf; 5414 5414 while (rlc_toc && (rlc_toc->id > FIRMWARE_ID_INVALID) &&
+4 -4
drivers/gpu/drm/amd/amdgpu/psp_v11_0.c
··· 287 287 return ret; 288 288 289 289 /* Copy PSP KDB binary to memory */ 290 - psp_copy_fw(psp, psp->kdb_start_addr, psp->kdb_bin_size); 290 + psp_copy_fw(psp, psp->kdb.start_addr, psp->kdb.size_bytes); 291 291 292 292 /* Provide the PSP KDB to bootloader */ 293 293 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36, ··· 318 318 return ret; 319 319 320 320 /* Copy PSP SPL binary to memory */ 321 - psp_copy_fw(psp, psp->spl_start_addr, psp->spl_bin_size); 321 + psp_copy_fw(psp, psp->spl.start_addr, psp->spl.size_bytes); 322 322 323 323 /* Provide the PSP SPL to bootloader */ 324 324 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36, ··· 349 349 return ret; 350 350 351 351 /* Copy PSP System Driver binary to memory */ 352 - psp_copy_fw(psp, psp->sys_start_addr, psp->sys_bin_size); 352 + psp_copy_fw(psp, psp->sys.start_addr, psp->sys.size_bytes); 353 353 354 354 /* Provide the sys driver to bootloader */ 355 355 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36, ··· 383 383 return ret; 384 384 385 385 /* Copy Secure OS binary to PSP memory */ 386 - psp_copy_fw(psp, psp->sos_start_addr, psp->sos_bin_size); 386 + psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); 387 387 388 388 /* Provide the PSP secure OS to bootloader */ 389 389 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36,
+2 -2
drivers/gpu/drm/amd/amdgpu/psp_v12_0.c
··· 138 138 return ret; 139 139 140 140 /* Copy PSP System Driver binary to memory */ 141 - psp_copy_fw(psp, psp->sys_start_addr, psp->sys_bin_size); 141 + psp_copy_fw(psp, psp->sys.start_addr, psp->sys.size_bytes); 142 142 143 143 /* Provide the sys driver to bootloader */ 144 144 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36, ··· 177 177 return ret; 178 178 179 179 /* Copy Secure OS binary to PSP memory */ 180 - psp_copy_fw(psp, psp->sos_start_addr, psp->sos_bin_size); 180 + psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); 181 181 182 182 /* Provide the PSP secure OS to bootloader */ 183 183 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36,
+3 -3
drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
··· 136 136 memset(psp->fw_pri_buf, 0, PSP_1_MEG); 137 137 138 138 /* Copy PSP KDB binary to memory */ 139 - memcpy(psp->fw_pri_buf, psp->kdb_start_addr, psp->kdb_bin_size); 139 + memcpy(psp->fw_pri_buf, psp->kdb.start_addr, psp->kdb.size_bytes); 140 140 141 141 /* Provide the PSP KDB to bootloader */ 142 142 WREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_36, ··· 169 169 memset(psp->fw_pri_buf, 0, PSP_1_MEG); 170 170 171 171 /* Copy PSP System Driver binary to memory */ 172 - memcpy(psp->fw_pri_buf, psp->sys_start_addr, psp->sys_bin_size); 172 + memcpy(psp->fw_pri_buf, psp->sys.start_addr, psp->sys.size_bytes); 173 173 174 174 /* Provide the sys driver to bootloader */ 175 175 WREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_36, ··· 205 205 memset(psp->fw_pri_buf, 0, PSP_1_MEG); 206 206 207 207 /* Copy Secure OS binary to PSP memory */ 208 - memcpy(psp->fw_pri_buf, psp->sos_start_addr, psp->sos_bin_size); 208 + memcpy(psp->fw_pri_buf, psp->sos.start_addr, psp->sos.size_bytes); 209 209 210 210 /* Provide the PSP secure OS to bootloader */ 211 211 WREG32_SOC15(MP0, 0, regMP0_SMN_C2PMSG_36,
+2 -2
drivers/gpu/drm/amd/amdgpu/psp_v3_1.c
··· 103 103 return ret; 104 104 105 105 /* Copy PSP System Driver binary to memory */ 106 - psp_copy_fw(psp, psp->sys_start_addr, psp->sys_bin_size); 106 + psp_copy_fw(psp, psp->sys.start_addr, psp->sys.size_bytes); 107 107 108 108 /* Provide the sys driver to bootloader */ 109 109 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36, ··· 142 142 return ret; 143 143 144 144 /* Copy Secure OS binary to PSP memory */ 145 - psp_copy_fw(psp, psp->sos_start_addr, psp->sos_bin_size); 145 + psp_copy_fw(psp, psp->sos.start_addr, psp->sos.size_bytes); 146 146 147 147 /* Provide the PSP secure OS to bootloader */ 148 148 WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_36,
+2 -2
drivers/gpu/drm/amd/amdgpu/soc15.c
··· 575 575 baco_reset = amdgpu_dpm_is_baco_supported(adev); 576 576 break; 577 577 case CHIP_VEGA20: 578 - if (adev->psp.sos_fw_version >= 0x80067) 578 + if (adev->psp.sos.fw_version >= 0x80067) 579 579 baco_reset = amdgpu_dpm_is_baco_supported(adev); 580 580 581 581 /* ··· 635 635 case CHIP_ARCTURUS: 636 636 return amdgpu_dpm_is_baco_supported(adev); 637 637 case CHIP_VEGA20: 638 - if (adev->psp.sos_fw_version >= 0x80067) 638 + if (adev->psp.sos.fw_version >= 0x80067) 639 639 return amdgpu_dpm_is_baco_supported(adev); 640 640 return false; 641 641 default: