On 1/7/2025 11:34 PM, Wei Liu wrote:
On Mon, Jan 06, 2025 at 12:24:32PM -0800, Roman Kisel wrote:
On 1/6/2025 9:37 AM, Michael Kelley wrote:
From: Roman Kisel <romank@xxxxxxxxxxxxxxxxxxx> Sent: Monday, December 30, 2024 10:10 AM
[...]
These bit field definitions don't look right. We want to "fill up"
the field size, so that we're explicit about each bit, and not leave
it to the compiler to add padding (which __packed tells the
compiler not to do). So in aggregate, the "u64" bit fields should
account for all 64 bits, but here you account for only 32 bits.
There are two ways to fix this:
u32 interruption_pending : 1;
u32 interruption_type: 1;
u32 reserved : 30;
u32 error_code;
Or
u64 interruption_pending : 1;
u64 interruption_type: 1;
u64 reserved : 30;
u64 error_code : 32;
Nuno -- your thoughts?
Quite a blunder on my side! Thank you very much for your help :)
GDB is my witness:
(gdb) ptype /o union hv_arm64_pending_synthetic_exception_event
/* offset | size */ type = union
hv_arm64_pending_synthetic_exception_event {
/* 16 */ u64 as_uint64[2];
/* 13 */ struct {
/* 0: 0 | 4 */ u32 event_pending : 1;
/* 0: 1 | 4 */ u32 event_type : 3;
/* 0: 4 | 4 */ u32 reserved : 4;
/* 1 | 4 */ u32 exception_type;
/* 5 | 8 */ u64 context;
/* total size (bytes): 13 */
};
/* total size (bytes): 16 */
}
which looks messed up to me to put it mildly. Will fix next time.
We are pretty close to the next merge window (~2 weeks). Can you please
resend a version this week or early next week?
Understood, will do!
Nuno, if you have any comments on this series, now it is the time to
share them.
Thanks,
Wei.
--
Thank you,
Roman