Smita Koralahalli wrote: > Hi Ira, > > I tested this out. Just one correction below to make it work. > [snip] > > + > > +#define CPER_CXL_DEVICE_ID_VALID BIT(0) > > +#define CPER_CXL_DEVICE_SN_VALID BIT(1) > > +#define CPER_CXL_COMP_EVENT_LOG_VALID BIT(2) > > +struct cper_cxl_event_rec { > > + struct { > > + u32 length; > > + u64 validation_bits; > > + struct cper_cxl_event_devid { > > + u16 vendor_id; > > + u16 device_id; > > + u8 func_num; > > + u8 device_num; > > + u8 bus_num; > > + u16 segment_num; > > + u16 slot_num; /* bits 2:0 reserved */ > > + u8 reserved; > > + } device_id; > > + struct cper_cxl_event_sn { > > + u32 lower_dw; > > + u32 upper_dw; > > + } dev_serial_num; > > + } hdr; > > + > > + union cxl_event event; > > +} __packed; > > __packed attribute just for cper_cxl_event_rec still fails to properly > align structure elements. Looks like, __packed attribute is needed for > all structs (cper_cxl_event_devid and cper_cxl_event_sn) inside > cper_cxl_event_rec. > > Seems easier to use global pragma instead.. I could test and obtain the > output as expected using pragma.. I did not know that was acceptable in the kernel but I see you used it in cper_cxl.h before... Ok I'll do that and spin again. Thanks so much for testing this! I was out last week and still don't have a test environment. Ira