On Sat, Jan 26, 2019 at 5:25 PM Oded Gabbay <oded.gab...@gmail.com> wrote: > > On Sat, Jan 26, 2019 at 6:06 PM Arnd Bergmann <a...@arndb.de> wrote: > > > > On Wed, Jan 23, 2019 at 1:01 AM Oded Gabbay <oded.gab...@gmail.com> wrote: > > > > > diff --git a/drivers/misc/habanalabs/include/habanalabs_device_if.h > > > b/drivers/misc/habanalabs/include/habanalabs_device_if.h > > > new file mode 100644 > > > index 000000000000..9dbb7077eabd > > > --- /dev/null > > > +++ b/drivers/misc/habanalabs/include/habanalabs_device_if.h > > > > Since this is a apparently a user space ABI, the file should be in > > include/uapi/linux/, > > not in the driver directory. > > This is not a user space ABI. This is the ABI between the driver and the F/W.
Ah, I see. In that case, you should get rid of all the bitfields and make the struct members all __le32/__le64/... to make it work on big-endian kernels. > > > > > +/* must be aligned to 4 bytes */ > > > +struct armcp_info { > > > + struct armcp_sensor sensors[ARMCP_MAX_SENSORS]; > > > + __u8 kernel_version[VERSION_MAX_LEN]; > > > + __u32 reserved[3]; > > > + __u32 cpld_version; > > > + __u32 infineon_version; > > > + __u8 fuse_version[VERSION_MAX_LEN]; > > > + __u8 thermal_version[VERSION_MAX_LEN]; > > > + __u8 armcp_version[VERSION_MAX_LEN]; > > > + __u64 dram_size; > > > +}; > > > > The compiler will align this to 8 bytes on most architectures, and > > add another padding field before dram_size. Better remove the > > 'reserved' fields, or make them an even number. > I can't do that, because those fields were once used by the F/W and if > I will change the order here, or add/remove those fields then it will > break compatibility with old F/W. Ok, I see. Then you should add an explicit padding field and fix the comment to make the structure match the actual interface. Arnd