drm/amdgpu:add MEC_STORAGE ucode id for sriov
for sriov, SMC need MEC_STORAGE reserved in fw bo. Signed-off-by: Monk Liu <Monk.Liu@amd.com> Signed-off-by: Frank Min <frank.min@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
ac00bbf32b
commit
bed5712e1a
|
@ -696,6 +696,9 @@ static uint32_t fw_type_convert(struct cgs_device *cgs_device, uint32_t fw_type)
|
||||||
case CGS_UCODE_ID_RLC_G:
|
case CGS_UCODE_ID_RLC_G:
|
||||||
result = AMDGPU_UCODE_ID_RLC_G;
|
result = AMDGPU_UCODE_ID_RLC_G;
|
||||||
break;
|
break;
|
||||||
|
case CGS_UCODE_ID_STORAGE:
|
||||||
|
result = AMDGPU_UCODE_ID_STORAGE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
DRM_ERROR("Firmware type not supported\n");
|
DRM_ERROR("Firmware type not supported\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,6 +228,9 @@ static int amdgpu_ucode_init_single_fw(struct amdgpu_firmware_info *ucode,
|
||||||
ucode->mc_addr = mc_addr;
|
ucode->mc_addr = mc_addr;
|
||||||
ucode->kaddr = kptr;
|
ucode->kaddr = kptr;
|
||||||
|
|
||||||
|
if (ucode->ucode_id == AMDGPU_UCODE_ID_STORAGE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
header = (const struct common_firmware_header *)ucode->fw->data;
|
header = (const struct common_firmware_header *)ucode->fw->data;
|
||||||
memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data +
|
memcpy(ucode->kaddr, (void *)((uint8_t *)ucode->fw->data +
|
||||||
le32_to_cpu(header->ucode_array_offset_bytes)),
|
le32_to_cpu(header->ucode_array_offset_bytes)),
|
||||||
|
|
|
@ -130,6 +130,7 @@ enum AMDGPU_UCODE_ID {
|
||||||
AMDGPU_UCODE_ID_CP_MEC1,
|
AMDGPU_UCODE_ID_CP_MEC1,
|
||||||
AMDGPU_UCODE_ID_CP_MEC2,
|
AMDGPU_UCODE_ID_CP_MEC2,
|
||||||
AMDGPU_UCODE_ID_RLC_G,
|
AMDGPU_UCODE_ID_RLC_G,
|
||||||
|
AMDGPU_UCODE_ID_STORAGE,
|
||||||
AMDGPU_UCODE_ID_MAXIMUM,
|
AMDGPU_UCODE_ID_MAXIMUM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1058,6 +1058,14 @@ static int gfx_v8_0_init_microcode(struct amdgpu_device *adev)
|
||||||
adev->firmware.fw_size +=
|
adev->firmware.fw_size +=
|
||||||
ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
|
ALIGN(le32_to_cpu(header->ucode_size_bytes), PAGE_SIZE);
|
||||||
|
|
||||||
|
if (amdgpu_sriov_vf(adev)) {
|
||||||
|
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_STORAGE];
|
||||||
|
info->ucode_id = AMDGPU_UCODE_ID_STORAGE;
|
||||||
|
info->fw = adev->gfx.mec_fw;
|
||||||
|
adev->firmware.fw_size +=
|
||||||
|
ALIGN(le32_to_cpu(64 * PAGE_SIZE), PAGE_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
if (adev->gfx.mec2_fw) {
|
if (adev->gfx.mec2_fw) {
|
||||||
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2];
|
info = &adev->firmware.ucode[AMDGPU_UCODE_ID_CP_MEC2];
|
||||||
info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2;
|
info->ucode_id = AMDGPU_UCODE_ID_CP_MEC2;
|
||||||
|
|
|
@ -106,6 +106,7 @@ enum cgs_ucode_id {
|
||||||
CGS_UCODE_ID_CP_MEC_JT2,
|
CGS_UCODE_ID_CP_MEC_JT2,
|
||||||
CGS_UCODE_ID_GMCON_RENG,
|
CGS_UCODE_ID_GMCON_RENG,
|
||||||
CGS_UCODE_ID_RLC_G,
|
CGS_UCODE_ID_RLC_G,
|
||||||
|
CGS_UCODE_ID_STORAGE,
|
||||||
CGS_UCODE_ID_MAXIMUM,
|
CGS_UCODE_ID_MAXIMUM,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -278,6 +278,9 @@ enum cgs_ucode_id smu7_convert_fw_type_to_cgs(uint32_t fw_type)
|
||||||
case UCODE_ID_RLC_G:
|
case UCODE_ID_RLC_G:
|
||||||
result = CGS_UCODE_ID_RLC_G;
|
result = CGS_UCODE_ID_RLC_G;
|
||||||
break;
|
break;
|
||||||
|
case UCODE_ID_MEC_STORAGE:
|
||||||
|
result = CGS_UCODE_ID_STORAGE;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -452,6 +455,10 @@ int smu7_request_smu_load_fw(struct pp_smumgr *smumgr)
|
||||||
PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr,
|
PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr,
|
||||||
UCODE_ID_SDMA1, &toc->entry[toc->num_entries++]),
|
UCODE_ID_SDMA1, &toc->entry[toc->num_entries++]),
|
||||||
"Failed to Get Firmware Entry.", return -EINVAL);
|
"Failed to Get Firmware Entry.", return -EINVAL);
|
||||||
|
if (cgs_is_virtualization_enabled(smumgr->device))
|
||||||
|
PP_ASSERT_WITH_CODE(0 == smu7_populate_single_firmware_entry(smumgr,
|
||||||
|
UCODE_ID_MEC_STORAGE, &toc->entry[toc->num_entries++]),
|
||||||
|
"Failed to Get Firmware Entry.", return -EINVAL);
|
||||||
|
|
||||||
smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_HI, smu_data->header_buffer.mc_addr_high);
|
smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_HI, smu_data->header_buffer.mc_addr_high);
|
||||||
smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_LO, smu_data->header_buffer.mc_addr_low);
|
smu7_send_msg_to_smc_with_parameter(smumgr, PPSMC_MSG_DRV_DRAM_ADDR_LO, smu_data->header_buffer.mc_addr_low);
|
||||||
|
|
Loading…
Reference in New Issue