[PATCH] drm/amdgpu: use sjt mec fw on aldebaran for sriov

Alex Deucher alexdeucher at gmail.com
Wed Aug 10 16:35:00 UTC 2022


On Fri, Aug 5, 2022 at 12:11 PM shaoyunl <shaoyun.liu at amd.com> wrote:
>
> The second jump table is required on live migration or mulitple VF
> configuration on Aldebaran. With this implemented, the first level
> jump table(hw used) will be same, mec fw internal will use the
> second level jump table jump to the real functionality implementation.
> so the different VF can load different version of MEC as long as
> they support sjt

You might want some sort of mechanism to determine if the sjt firmware
was loaded so you know whether live migration is possible, although I
guess it's probably only used in controlled environments so it would
be a known prerequisite.

Acked-by: Alex Deucher <alexander.deucher at amd.com>

Alex

>
> Signed-off-by: shaoyunl <shaoyun.liu at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++++++++++++--
>  1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> index c6e0f9313a7f..7f187558220e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> @@ -126,6 +126,8 @@ MODULE_FIRMWARE("amdgpu/green_sardine_rlc.bin");
>  MODULE_FIRMWARE("amdgpu/aldebaran_mec.bin");
>  MODULE_FIRMWARE("amdgpu/aldebaran_mec2.bin");
>  MODULE_FIRMWARE("amdgpu/aldebaran_rlc.bin");
> +MODULE_FIRMWARE("amdgpu/aldebaran_sjt_mec.bin");
> +MODULE_FIRMWARE("amdgpu/aldebaran_sjt_mec2.bin");
>
>  #define mmTCP_CHAN_STEER_0_ARCT                                                                0x0b03
>  #define mmTCP_CHAN_STEER_0_ARCT_BASE_IDX                                                       0
> @@ -1496,7 +1498,11 @@ static int gfx_v9_0_init_cp_compute_microcode(struct amdgpu_device *adev,
>         const struct common_firmware_header *header = NULL;
>         const struct gfx_firmware_header_v1_0 *cp_hdr;
>
> -       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name);
> +       if (amdgpu_sriov_vf(adev) && (adev->asic_type == CHIP_ALDEBARAN))
> +               snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sjt_mec.bin", chip_name);
> +       else
> +               snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec.bin", chip_name);
> +
>         err = request_firmware(&adev->gfx.mec_fw, fw_name, adev->dev);
>         if (err)
>                 goto out;
> @@ -1509,7 +1515,11 @@ static int gfx_v9_0_init_cp_compute_microcode(struct amdgpu_device *adev,
>
>
>         if (gfx_v9_0_load_mec2_fw_bin_support(adev)) {
> -               snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name);
> +               if (amdgpu_sriov_vf(adev) && (adev->asic_type == CHIP_ALDEBARAN))
> +                       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_sjt_mec2.bin", chip_name);
> +               else
> +                       snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mec2.bin", chip_name);
> +
>                 err = request_firmware(&adev->gfx.mec2_fw, fw_name, adev->dev);
>                 if (!err) {
>                         err = amdgpu_ucode_validate(adev->gfx.mec2_fw);
> --
> 2.17.1
>


More information about the amd-gfx mailing list