> On 22 Feb 2025, at 2:37 PM, Aditya Garg <[email protected]> wrote:
> 
>> 
>> What padding, please? Why TCP UAPI headers do not have these attributes?
>> Think about it, and think about what actually __packed does and how it 
>> affects
>> (badly) the code generation. Otherwise it looks like a cargo cult.
>> 
>>> I tried removing __packed btw and driver no longer works.
>> 
>> So, you need to find a justification why. But definitely not due to padding 
>> in
>> many of them. They can go without __packed as they are naturally aligned.
> 
> Alright, I did some debugging, basically printk sizeof(struct). Did it for 
> both packed and unpacked with the following results:
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_msg_request_header 
> is 16
> Feb 22 13:02:03 MacBook kernel: size of struct 
> appletbdrm_msg_request_header_unpacked is 16
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_msg_response_header 
> is 20
> Feb 22 13:02:03 MacBook kernel: size of struct 
> appletbdrm_msg_response_header_unpacked is 20
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_msg_simple_request 
> is 32
> Feb 22 13:02:03 MacBook kernel: size of struct 
> appletbdrm_msg_simple_request_unpacked is 32
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_msg_information is 
> 65
> Feb 22 13:02:03 MacBook kernel: size of struct 
> appletbdrm_msg_information_unpacked is 68
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_frame is 12
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_frame_unpacked is 12
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_fb_request_footer 
> is 80
> Feb 22 13:02:03 MacBook kernel: size of struct 
> appletbdrm_fb_request_footer_unpacked is 80
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_fb_request is 48
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_fb_request_unpacked 
> is 48
> 
> Feb 22 13:02:03 MacBook kernel: size of struct appletbdrm_fb_request_response 
> is 40
> Feb 22 13:02:04 MacBook kernel: size of struct 
> appletbdrm_fb_request_response_unpacked is 40
> 
> So, the difference in sizeof in unpacked and packed is only in 
> appletbdrm_msg_information. So, I kept this packed, and removed it from 
> others. The Touch Bar still works.
> 
> So maybe keep just this packed?

And for justification why driver was not working, with 
appletbdrm_msg_information not packed is because sizeof(struct 
appletbdrm_msg_information) is being used in kzalloc in the driver. Similar is 
the case for most other __packed structs.

Maybe the author wanted to keep this value consistent across various compiler 
options? I don’t think CPU architecture really matters here though since this 
driver is exclusively for x86_64 Intel Macs.


Reply via email to