On Wed, 29 Nov 2023 06:28:01 -0800 Ira Weiny <ira.weiny@xxxxxxxxx> wrote: > 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. Easy to hack into QEMU :) Hmm. I have a CCIX patch set from years ago somewhere that does similar. Would be easy to repurposed. Looks like I never published them (just told people to ask if they wanted them :( ). Anyhow, if useful I can dig them out. > > Ira