On Thu, Mar 12, 2026 at 10:54 PM Jesse.Zhang <[email protected]> wrote:
>
> In C90 (which the kernel uses with -std=gnu89), declarations must
> appear at the beginning of a block and cannot follow a label. The
> switch cases in amdgpu_discovery.c and gmc_v12_1.c contained variable
> declarations immediately after case labels, causing the compiler to
> error:
>
> drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c:560:3: error: a label can
> only be part of a statement and a declaration is not a statement
> drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c:533:3: error: a label can only be
> part of a statement and a declaration is not a statement
>
> Signed-off-by: Jesse Zhang <[email protected]>

Reviewed-by: Alex Deucher <[email protected]>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 15 ++++++++++-----
>  drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c        |  3 ++-
>  drivers/gpu/drm/amd/amdkfd/kfd_svm.c          |  5 +++--
>  3 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> index f77a03ea4d90..f3d0640d800e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
> @@ -548,6 +548,11 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>         struct table_info *info;
>         bool check_table = true;
>         char *table_name;
> +       struct ip_discovery_header *ihdr;
> +       struct gpu_info_header *ghdr;
> +       struct harvest_info_header *hhdr;
> +       struct vcn_info_header *vhdr;
> +       struct mall_info_header *mhdr;
>
>         r = amdgpu_discovery_get_table_info(adev, &info, table_id);
>         if (r)
> @@ -557,7 +562,7 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>
>         switch (table_id) {
>         case IP_DISCOVERY:
> -               struct ip_discovery_header *ihdr =
> +               ihdr =
>                         (struct ip_discovery_header *)(discovery_bin + 
> offset);
>                 act_val = le32_to_cpu(ihdr->signature);
>                 exp_val = DISCOVERY_TABLE_SIGNATURE;
> @@ -565,7 +570,7 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>                 table_name = "data table";
>                 break;
>         case GC:
> -               struct gpu_info_header *ghdr =
> +               ghdr =
>                         (struct gpu_info_header *)(discovery_bin + offset);
>                 act_val = le32_to_cpu(ghdr->table_id);
>                 exp_val = GC_TABLE_ID;
> @@ -573,7 +578,7 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>                 table_name = "gc table";
>                 break;
>         case HARVEST_INFO:
> -               struct harvest_info_header *hhdr =
> +               hhdr =
>                         (struct harvest_info_header *)(discovery_bin + 
> offset);
>                 act_val = le32_to_cpu(hhdr->signature);
>                 exp_val = HARVEST_TABLE_SIGNATURE;
> @@ -581,7 +586,7 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>                 table_name = "harvest table";
>                 break;
>         case VCN_INFO:
> -               struct vcn_info_header *vhdr =
> +               vhdr =
>                         (struct vcn_info_header *)(discovery_bin + offset);
>                 act_val = le32_to_cpu(vhdr->table_id);
>                 exp_val = VCN_INFO_TABLE_ID;
> @@ -589,7 +594,7 @@ static int amdgpu_discovery_table_check(struct 
> amdgpu_device *adev,
>                 table_name = "vcn table";
>                 break;
>         case MALL_INFO:
> -               struct mall_info_header *mhdr =
> +               mhdr =
>                         (struct mall_info_header *)(discovery_bin + offset);
>                 act_val = le32_to_cpu(mhdr->table_id);
>                 exp_val = MALL_INFO_TABLE_ID;
> diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c 
> b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> index 38c366b9a88b..7ea7b9c30bca 100644
> --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
> @@ -527,10 +527,11 @@ static void gmc_v12_1_get_coherence_flags(struct 
> amdgpu_device *adev,
>         unsigned int mtype, mtype_local, mtype_remote;
>         bool snoop = false;
>         bool is_local = false;
> +       bool is_aid_a1;
>
>         switch (gc_ip_version) {
>         case IP_VERSION(12, 1, 0):
> -               bool is_aid_a1 = (adev->rev_id & 0x10);
> +               is_aid_a1 = (adev->rev_id & 0x10);
>
>                 mtype_local = is_aid_a1 ? MTYPE_RW : MTYPE_NC;
>                 mtype_remote = is_aid_a1 ? MTYPE_NC : MTYPE_UC;
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c 
> b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> index 8167fe642341..9b4143328371 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
> @@ -1220,6 +1220,7 @@ svm_range_get_pte_flags(struct kfd_node *node, struct 
> amdgpu_vm *vm,
>         bool coherent = flags & (KFD_IOCTL_SVM_FLAG_COHERENT | 
> KFD_IOCTL_SVM_FLAG_EXT_COHERENT);
>         bool ext_coherent = flags & KFD_IOCTL_SVM_FLAG_EXT_COHERENT;
>         unsigned int mtype_local, mtype_remote;
> +       bool is_aid_a1, is_local;
>
>         if (domain == SVM_RANGE_VRAM_DOMAIN)
>                 bo_node = prange->svm_bo->node;
> @@ -1307,8 +1308,8 @@ svm_range_get_pte_flags(struct kfd_node *node, struct 
> amdgpu_vm *vm,
>                 mapping_flags |= AMDGPU_VM_MTYPE_NC;
>                 break;
>         case IP_VERSION(12, 1, 0):
> -               bool is_aid_a1 = (node->adev->rev_id & 0x10);
> -               bool is_local = (domain == SVM_RANGE_VRAM_DOMAIN) &&
> +               is_aid_a1 = (node->adev->rev_id & 0x10);
> +               is_local = (domain == SVM_RANGE_VRAM_DOMAIN) &&
>                                 (bo_node->adev == node->adev);
>
>                 mtype_local = amdgpu_mtype_local == 0 ? AMDGPU_VM_MTYPE_RW :
> --
> 2.49.0
>

Reply via email to