Re: [PATCH RFC v4 5/6] firmware/efi: Process CXL Component Events

Ira Weiny
2023-11-29T14:29:17Z

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