On Sun, Aug 28, 2022 at 05:19:33PM -0700, Sathyanarayanan Kuppuswamy wrote: > Hi, > > On 8/28/22 1:14 PM, Dave Hansen wrote: > > On 8/26/22 08:06, Kuppuswamy Sathyanarayanan wrote: > >> +struct tdx_report_req { > >> + __u8 subtype; > >> + __u64 reportdata; > >> + __u32 rpd_len; > >> + __u64 tdreport; > >> + __u32 tdr_len; > >> +}; > > > > Please do take a look at how the compiler ends up building that structure. > > > > If you sized things to "save space", the way the compiler treats that > > structure may surprise you. You might also want to look at how a 32-bit > > compile deals with it versus a 64-bit one. > > Since it is only used in user/kernel ABI, I did not consider the size > issue. That is _EXACTLY_ why you need to consider the size issues here. > But I understand your point. The size of this struct in a 64-bit > system is 40 bytes. So we did not gain anything with using different member > sizes. In a 32-bit system, size due to padding is less compared to 64-bit. That's not the issue here, please use a tool like pahole to see the problems with this definition. > I will re-arrange the struct as below. With this change, the size will come > down to 32 bytes. > > struct tdx_report_req { > __u64 reportdata;; > __u64 tdreport; > __u32 rpd_len > __u32 tdr_len; > __u8 subtype; > }; That's better, but again, please use pahole. thanks, greg k-h