All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH][next] drm/amdgpu/amdkfd: Avoid a couple hundred -Wflex-array-member-not-at-end warnings
@ 2025-08-29  9:58 Gustavo A. R. Silva
  2025-09-02 15:11 ` Kuehling, Felix
  0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2025-08-29  9:58 UTC (permalink / raw)
  To: Alex Deucher, Christian König, David Airlie, Simona Vetter,
	Felix Kuehling
  Cc: amd-gfx, dri-devel, linux-kernel, Gustavo A. R. Silva,
	linux-hardening

-Wflex-array-member-not-at-end was introduced in GCC-14, and we are
getting ready to enable it, globally.

Move the conflicting declarations to the end of the corresponding
structures. Notice that `struct dev_pagemap` is a flexible structure,
this is a structure that contains a flexible-array member.

Fix 283 of the following type of warnings:
    283 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h:111:28: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]

Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h        | 8 +++++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 8 +++++---
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index ddd472e56f69..24f3e5cfbe5d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -1155,9 +1155,6 @@ struct amdgpu_device {
 	/* for userq and VM fences */
 	struct amdgpu_seq64		seq64;
 
-	/* KFD */
-	struct amdgpu_kfd_dev		kfd;
-
 	/* UMC */
 	struct amdgpu_umc		umc;
 
@@ -1320,6 +1317,11 @@ struct amdgpu_device {
 	struct mutex                    userq_mutex;
 	bool                            userq_halt_for_enforce_isolation;
 	struct amdgpu_uid *uid_info;
+
+	/* KFD
+	 * Must be last --ends in a flexible-array member.
+	 */
+	struct amdgpu_kfd_dev		kfd;
 };
 
 static inline uint32_t amdgpu_ip_version(const struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
index 33eb4826b58b..127927b16ee2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
@@ -107,11 +107,13 @@ struct amdgpu_kfd_dev {
 	bool init_complete;
 	struct work_struct reset_work;
 
-	/* HMM page migration MEMORY_DEVICE_PRIVATE mapping */
-	struct dev_pagemap pgmap;
-
 	/* Client for KFD BO GEM handle allocations */
 	struct drm_client_dev client;
+
+	/* HMM page migration MEMORY_DEVICE_PRIVATE mapping
+	 * Must be last --ends in a flexible-array member.
+	 */
+	struct dev_pagemap pgmap;
 };
 
 enum kgd_engine_type {
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH][next] drm/amdgpu/amdkfd: Avoid a couple hundred -Wflex-array-member-not-at-end warnings
  2025-08-29  9:58 [PATCH][next] drm/amdgpu/amdkfd: Avoid a couple hundred -Wflex-array-member-not-at-end warnings Gustavo A. R. Silva
@ 2025-09-02 15:11 ` Kuehling, Felix
  2025-09-03  8:36   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 3+ messages in thread
From: Kuehling, Felix @ 2025-09-02 15:11 UTC (permalink / raw)
  To: Gustavo A. R. Silva, Alex Deucher, Christian König,
	David Airlie, Simona Vetter
  Cc: amd-gfx, dri-devel, linux-kernel, linux-hardening

On 2025-08-29 5:58 a.m., Gustavo A. R. Silva wrote:
> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
> getting ready to enable it, globally.
>
> Move the conflicting declarations to the end of the corresponding
> structures. Notice that `struct dev_pagemap` is a flexible structure,
> this is a structure that contains a flexible-array member.
>
> Fix 283 of the following type of warnings:
>      283 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h:111:28: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
>
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>

Thank you. I'll apply this to amd-staging-drm-next. I'll also add a note 
to the commit description that struct dev_pagemap always has space for 
at least one range, and that amdgpu only uses a single range. Therefore 
no changes are needed in the way struct amdgpu_device is allocated.

Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>


> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu.h        | 8 +++++---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 8 +++++---
>   2 files changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index ddd472e56f69..24f3e5cfbe5d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -1155,9 +1155,6 @@ struct amdgpu_device {
>   	/* for userq and VM fences */
>   	struct amdgpu_seq64		seq64;
>   
> -	/* KFD */
> -	struct amdgpu_kfd_dev		kfd;
> -
>   	/* UMC */
>   	struct amdgpu_umc		umc;
>   
> @@ -1320,6 +1317,11 @@ struct amdgpu_device {
>   	struct mutex                    userq_mutex;
>   	bool                            userq_halt_for_enforce_isolation;
>   	struct amdgpu_uid *uid_info;
> +
> +	/* KFD
> +	 * Must be last --ends in a flexible-array member.
> +	 */
> +	struct amdgpu_kfd_dev		kfd;
>   };
>   
>   static inline uint32_t amdgpu_ip_version(const struct amdgpu_device *adev,
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> index 33eb4826b58b..127927b16ee2 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
> @@ -107,11 +107,13 @@ struct amdgpu_kfd_dev {
>   	bool init_complete;
>   	struct work_struct reset_work;
>   
> -	/* HMM page migration MEMORY_DEVICE_PRIVATE mapping */
> -	struct dev_pagemap pgmap;
> -
>   	/* Client for KFD BO GEM handle allocations */
>   	struct drm_client_dev client;
> +
> +	/* HMM page migration MEMORY_DEVICE_PRIVATE mapping
> +	 * Must be last --ends in a flexible-array member.
> +	 */
> +	struct dev_pagemap pgmap;
>   };
>   
>   enum kgd_engine_type {

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH][next] drm/amdgpu/amdkfd: Avoid a couple hundred -Wflex-array-member-not-at-end warnings
  2025-09-02 15:11 ` Kuehling, Felix
@ 2025-09-03  8:36   ` Gustavo A. R. Silva
  0 siblings, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2025-09-03  8:36 UTC (permalink / raw)
  To: Kuehling, Felix, Gustavo A. R. Silva, Alex Deucher,
	Christian König, David Airlie, Simona Vetter
  Cc: amd-gfx, dri-devel, linux-kernel, linux-hardening



On 9/2/25 17:11, Kuehling, Felix wrote:
> On 2025-08-29 5:58 a.m., Gustavo A. R. Silva wrote:
>> -Wflex-array-member-not-at-end was introduced in GCC-14, and we are
>> getting ready to enable it, globally.
>>
>> Move the conflicting declarations to the end of the corresponding
>> structures. Notice that `struct dev_pagemap` is a flexible structure,
>> this is a structure that contains a flexible-array member.
>>
>> Fix 283 of the following type of warnings:
>>      283 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h:111:28: warning: structure containing a flexible array member is not at the end of another structure [- 
>> Wflex-array-member-not-at-end]
>>
>> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
> 
> Thank you. I'll apply this to amd-staging-drm-next. I'll also add a note to the commit description that struct dev_pagemap always has space for at least one 
> range, and that amdgpu only uses a single range. Therefore no changes are needed in the way struct amdgpu_device is allocated.

Yep, that's correct. Thank you! :)

-Gustavo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-09-03 13:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-29  9:58 [PATCH][next] drm/amdgpu/amdkfd: Avoid a couple hundred -Wflex-array-member-not-at-end warnings Gustavo A. R. Silva
2025-09-02 15:11 ` Kuehling, Felix
2025-09-03  8:36   ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.