Re: [PATCH] drm/amdgpu/userq: fix struct drm_amdgpu_info_device padding for 32bit compile
"Mohan Marimuthu, Yogesh" <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <CH0PR12MB52681EA03CE63F6935D08047FFA32@CH0PR12MB5268.namprd12.prod.outlook.com> |
AMD General Hi Alex, With 32bit Kernel + patch and older userspace will be broken. It will need userspace to be recompiled. The current situation is "64bit Kernel + 32bit userspace" already broken. It can be said that the current Kernel "struct drm_amdgpu_info_device" is broken. Though "64bit Kernel + 32bit userspace" is already broken but it has not been noticed until now, it was noticed with userq_ip_mask variable retuning zero. I think we have only two options, 1. Probably "32bit Kernel + 32bit UMD" combination is not used and hence picking this patch might not trigger any compatibility issue. 2. Create AMDGPU_INFO_DEV_INFO_2 version 2 for DRM_AMDGPU_INFO ioctl to pass the fixed data structure, but this would keep the older structure that is already broken still broken. Thank you, Yogesh ________________________________ From: Alex Deucher <[email protected]> Sent: Thursday, August 20, 2026 11:00 PM To: Mohan Marimuthu, Yogesh <[email protected]> Cc: [email protected] <[email protected]>; Deucher, Alexander <[email protected]>; Koenig, Christian <[email protected]>; Khatri, Sunil <[email protected]> Subject: Re: [PATCH] drm/amdgpu/userq: fix struct drm_amdgpu_info_device padding for 32bit compile On Thu, Aug 20, 2026 at 11:28 AM Mohan Marimuthu, Yogesh <[email protected]> wrote: > > AMD General > > Hi Alex, > > I am not changing the layout. > > For 64 bit gcc, default alignment for __u64 is 8bytes. > For 32 bit gcc, default alignment for __u64 is 4bytes. > > For 32 bit gcc, I have manually padded 4bytes so that it is 8bytes aligned for __u64. This will make 64bit kernel compatible with 32bit mesa compiled using gcc. > Won't this break 32 bit kernels? Alex > Thank you, > Yogesh > > ________________________________ > From: Alex Deucher <[email protected]> > Sent: Thursday, August 20, 2026 8:51 PM > To: Mohan Marimuthu, Yogesh <[email protected]> > Cc: [email protected] <[email protected]>; Deucher, Alexander <[email protected]>; Koenig, Christian <[email protected]>; Khatri, Sunil <[email protected]> > Subject: Re: [PATCH] drm/amdgpu/userq: fix struct drm_amdgpu_info_device padding for 32bit compile > > On Thu, Aug 20, 2026 at 11:18 AM Mohan Marimuthu, Yogesh > <[email protected]> wrote: > > > > AMD General > > > > Hi Alex, > > > > In 32bit mesa, I did not get the correct userq_ip_mask value. > > I checked for variable alignment and tcc_disabled_mask was not on 8 byte alignment. This patch fixes it. > > > > Can you please tell how it would break UAPI. What did I miss. > > You are changing the layout of the structure that existing apps expect. > > Alex > > > > > Thank you, > > Yogesh > > > > ________________________________ > > From: Alex Deucher <[email protected]> > > Sent: Thursday, August 20, 2026 7:23 PM > > To: Mohan Marimuthu, Yogesh <[email protected]> > > Cc: [email protected] <[email protected]>; Deucher, Alexander <[email protected]>; Koenig, Christian <[email protected]>; Khatri, Sunil <[email protected]> > > Subject: Re: [PATCH] drm/amdgpu/userq: fix struct drm_amdgpu_info_device padding for 32bit compile > > > > On Thu, Aug 20, 2026 at 12:55 AM Yogesh Mohan Marimuthu > > <[email protected]> wrote: > > > > > > need to pad before __u64 tcc_disabled_mask variable. > > > > > > Signed-off-by: Yogesh Mohan Marimuthu <[email protected]> > > > > This will break UAPI. > > > > Alex > > > > > --- > > > include/uapi/drm/amdgpu_drm.h | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/include/uapi/drm/amdgpu_drm.h b/include/uapi/drm/amdgpu_drm.h > > > index 0a113529b..5beef3eaa 100644 > > > --- a/include/uapi/drm/amdgpu_drm.h > > > +++ b/include/uapi/drm/amdgpu_drm.h > > > @@ -1517,6 +1517,7 @@ struct drm_amdgpu_info_device { > > > __u64 high_va_max; > > > /* gfx10 pa_sc_tile_steering_override */ > > > __u32 pa_sc_tile_steering_override; > > > + __u32 pad; > > > /* disabled TCCs */ > > > __u64 tcc_disabled_mask; > > > __u64 min_engine_clock; > > > @@ -1541,7 +1542,6 @@ struct drm_amdgpu_info_device { > > > __u32 csa_alignment; > > > /* Userq IP mask (1 << AMDGPU_HW_IP_*) */ > > > __u32 userq_ip_mask; > > > - __u32 pad; > > > }; > > > > > > struct drm_amdgpu_info_hw_ip { > > > -- > > > 2.43.0 > > >