On Thu, May 28, 2026 at 2:49 AM Pratik Vishwakarma
<[email protected]> wrote:
>
> Initialize GC IP 11_5_6
>
> Signed-off-by: Pratik Vishwakarma <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c |  6 ++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c       |  1 +
>  drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c        | 12 +++++++++++-
>  drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c        |  2 ++
>  drivers/gpu/drm/amd/amdgpu/imu_v11_0.c        |  1 +
>  drivers/gpu/drm/amd/amdgpu/mes_v11_0.c        |  2 ++
>  drivers/gpu/drm/amd/amdgpu/soc21.c            |  5 +++++
>  drivers/gpu/drm/amd/amdkfd/kfd_crat.c         |  1 +
>  drivers/gpu/drm/amd/amdkfd/kfd_device.c       |  5 +++++
>  9 files changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> index 8e3b6a4050e9..5364b0540613 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> @@ -2097,6 +2097,7 @@ static int amdgpu_discovery_set_common_ip_blocks(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 amdgpu_device_ip_block_add(adev, &soc21_common_ip_block);
>                 break;
>         case IP_VERSION(12, 0, 0):
> @@ -2157,6 +2158,7 @@ static int amdgpu_discovery_set_gmc_ip_blocks(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 amdgpu_device_ip_block_add(adev, &gmc_v11_0_ip_block);
>                 break;
>         case IP_VERSION(12, 0, 0):
> @@ -2479,6 +2481,7 @@ static int amdgpu_discovery_set_gc_ip_blocks(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 amdgpu_device_ip_block_add(adev, &gfx_v11_0_ip_block);
>                 break;
>         case IP_VERSION(12, 0, 0):
> @@ -2690,6 +2693,7 @@ static int amdgpu_discovery_set_mes_ip_blocks(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 amdgpu_device_ip_block_add(adev, &mes_v11_0_ip_block);
>                 adev->enable_mes = true;
>                 adev->enable_mes_kiq = true;
> @@ -3096,6 +3100,7 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device 
> *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 adev->family = AMDGPU_FAMILY_GC_11_5_0;
>                 break;
>         case IP_VERSION(12, 0, 0):
> @@ -3124,6 +3129,7 @@ int amdgpu_discovery_set_ip_blocks(struct amdgpu_device 
> *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 adev->flags |= AMD_IS_APU;
>                 break;
>         default:
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> index 13bec8461cde..7bf4d1890152 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -976,6 +976,7 @@ void amdgpu_gmc_tmz_set(struct amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 /* Don't enable it by default yet.
>                  */
>                 if (amdgpu_tmz < 1) {
> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c 
> b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> index fabdbbd0abb7..1941bfbcbfbf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> @@ -129,6 +129,10 @@ MODULE_FIRMWARE("amdgpu/gc_11_5_4_pfp.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_me.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_mec.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_rlc.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_pfp.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_me.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_mec.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_rlc.bin");
>
>  static const struct amdgpu_hwip_reg_entry gc_reg_list_11_0[] = {
>         SOC15_REG_ENTRY_STR(GC, 0, regGRBM_STATUS),
> @@ -1123,6 +1127,7 @@ static int gfx_v11_0_gpu_early_init(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 adev->gfx.config.max_hw_contexts = 8;
>                 adev->gfx.config.sc_prim_fifo_size_frontend = 0x20;
>                 adev->gfx.config.sc_prim_fifo_size_backend = 0x100;
> @@ -1606,6 +1611,7 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block 
> *ip_block)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 adev->gfx.me.num_me = 1;
>                 adev->gfx.me.num_pipe_per_me = 1;
>                 adev->gfx.me.num_queue_per_pipe = 2;
> @@ -3078,7 +3084,8 @@ static int 
> gfx_v11_0_wait_for_rlc_autoload_complete(struct amdgpu_device *adev)
>                     amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 1) ||
>                     amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 2) ||
>                     amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 3) ||
> -                   amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 4))
> +                   amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 4) ||
> +                   amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(11, 5, 
> 6))
>                         bootload_status = RREG32_SOC15(GC, 0,
>                                         
> regRLC_RLCS_BOOTLOAD_STATUS_gc_11_0_1);
>                 else
> @@ -5721,6 +5728,7 @@ static void gfx_v11_cntl_power_gating(struct 
> amdgpu_device *adev, bool enable)
>                 case IP_VERSION(11, 5, 2):
>                 case IP_VERSION(11, 5, 3):
>                 case IP_VERSION(11, 5, 4):
> +               case IP_VERSION(11, 5, 6):
>                         WREG32_SOC15(GC, 0, regRLC_PG_DELAY_3, 
> RLC_PG_DELAY_3_DEFAULT_GC_11_0_1);
>                         break;
>                 default:
> @@ -5760,6 +5768,7 @@ static int gfx_v11_0_set_powergating_state(struct 
> amdgpu_ip_block *ip_block,
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 if (!enable)
>                         amdgpu_gfx_off_ctrl(adev, false);
>
> @@ -5795,6 +5804,7 @@ static int gfx_v11_0_set_clockgating_state(struct 
> amdgpu_ip_block *ip_block,
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 gfx_v11_0_update_gfx_clock_gating(adev,
>                                 state ==  AMD_CG_STATE_GATE);
>                 break;
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c 
> b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> index 16388e3caea3..9664b7b8f0db 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
> @@ -604,6 +604,7 @@ static void gmc_v11_0_set_gfxhub_funcs(struct 
> amdgpu_device *adev)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 adev->gfxhub.funcs = &gfxhub_v11_5_0_funcs;
>                 break;
>         default:
> @@ -778,6 +779,7 @@ static int gmc_v11_0_sw_init(struct amdgpu_ip_block 
> *ip_block)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 set_bit(AMDGPU_GFXHUB(0), adev->vmhubs_mask);
>                 set_bit(AMDGPU_MMHUB0(0), adev->vmhubs_mask);
>                 /*
> diff --git a/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c 
> b/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c
> index 46d25d55ebbe..f5927c3553ce 100644
> --- a/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/imu_v11_0.c
> @@ -42,6 +42,7 @@ MODULE_FIRMWARE("amdgpu/gc_11_5_1_imu.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_2_imu.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_3_imu.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_imu.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_imu.bin");
>
>  static int imu_v11_0_init_microcode(struct amdgpu_device *adev)
>  {
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c 
> b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> index a926a330700e..147ba2942690 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_v11_0.c
> @@ -58,6 +58,8 @@ MODULE_FIRMWARE("amdgpu/gc_11_5_3_mes_2.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_3_mes1.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_mes_2.bin");
>  MODULE_FIRMWARE("amdgpu/gc_11_5_4_mes1.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_mes_2.bin");
> +MODULE_FIRMWARE("amdgpu/gc_11_5_6_mes1.bin");
>
>  static int mes_v11_0_hw_init(struct amdgpu_ip_block *ip_block);
>  static int mes_v11_0_hw_fini(struct amdgpu_ip_block *ip_block);
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc21.c 
> b/drivers/gpu/drm/amd/amdgpu/soc21.c
> index 93c002e511c7..963659deeaff 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc21.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc21.c
> @@ -833,6 +833,11 @@ static int soc21_common_early_init(struct 
> amdgpu_ip_block *ip_block)
>                         AMD_PG_SUPPORT_GFX_PG;
>                 adev->external_rev_id = adev->rev_id + 0x1;
>                 break;
> +       case IP_VERSION(11, 5, 6):
> +               adev->cg_flags = 0;
> +               adev->pg_flags = 0;
> +               adev->external_rev_id = adev->rev_id + 0xd0;
> +               break;
>         default:
>                 /* FIXME: not supported yet */
>                 return -EINVAL;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> index cf7b1b038d5f..af2ae144f508 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> @@ -1706,6 +1706,7 @@ int kfd_get_gpu_cache_info(struct kfd_node *kdev, 
> struct kfd_gpu_cache_info **pc
>                 case IP_VERSION(11, 5, 2):
>                 case IP_VERSION(11, 5, 3):
>                 case IP_VERSION(11, 5, 4):
> +               case IP_VERSION(11, 5, 6):
>                         /* Cacheline size not available in IP discovery for 
> gc11.
>                          * kfd_fill_gpu_cache_info_from_gfx_config to hard 
> code it
>                          */
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> index 9e77c4a842ef..69facc5a544a 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
> @@ -167,6 +167,7 @@ static void 
> kfd_device_info_set_event_interrupt_class(struct kfd_dev *kfd)
>         case IP_VERSION(11, 5, 2):
>         case IP_VERSION(11, 5, 3):
>         case IP_VERSION(11, 5, 4):
> +       case IP_VERSION(11, 5, 6):
>                 kfd->device_info.event_interrupt_class = 
> &event_interrupt_class_v11;
>                 break;
>         case IP_VERSION(12, 0, 0):
> @@ -448,6 +449,10 @@ struct kfd_dev *kgd2kfd_probe(struct amdgpu_device 
> *adev, bool vf)
>                          gfx_target_version = 110504;
>                          f2g = &gfx_v11_kfd2kgd;
>                          break;
> +               case IP_VERSION(11, 5, 6):
> +                       gfx_target_version = 110504;
> +                       f2g = &gfx_v11_kfd2kgd;
> +                       break;

This could be merged with the case above.  With that fixed:
Reviewed-by: Alex Deucher <[email protected]>

>                 case IP_VERSION(12, 0, 0):
>                         gfx_target_version = 120000;
>                         f2g = &gfx_v12_kfd2kgd;
> --
> 2.43.0
>

Reply via email to