Hi David, On Tue, Apr 13, 2021 at 07:40:12AM +0000, David Laight wrote: > From: Mitali Borkar > > Sent: 12 April 2021 00:09 > > > > This patch fixes the warning identified by checkpatch.pl by replacing > > __attribute__aligned(size) with __aligned(size) > > > > Signed-off-by: Mitali Borkar <mitaliborkar810@xxxxxxxxx> > > --- > > .../staging/media/ipu3/include/intel-ipu3.h | 74 +++++++++---------- > > 1 file changed, 37 insertions(+), 37 deletions(-) > > > > diff --git a/drivers/staging/media/ipu3/include/intel-ipu3.h > > b/drivers/staging/media/ipu3/include/intel-ipu3.h > > index 589d5ccee3a7..d95ca9ebfafb 100644 > > --- a/drivers/staging/media/ipu3/include/intel-ipu3.h > > +++ b/drivers/staging/media/ipu3/include/intel-ipu3.h > > @@ -84,7 +84,7 @@ struct ipu3_uapi_grid_config { > > */ > > struct ipu3_uapi_awb_raw_buffer { > > __u8 meta_data[IPU3_UAPI_AWB_MAX_BUFFER_SIZE] > > - __attribute__((aligned(32))); > > + __aligned(32); > > } __packed; > > WTF? > > It either has 1-byte alignment because it is just __u8, > 32-byte because of the aligned(32), > or 1 byte because of the outer packed. > > What alignment does this (and all the other) structures > actually need? 32 as noted above. Here packed makes no difference though. Some of these structs are used embedded in other structs or alone. I haven't checked this one. It's also possible to have __packed and __aligned() conflict (in which case a decent compiler would give you a warning) --- which does not happen currently AFAIK. > > Specifying 'packed' isn't free. It may be free if the packed alignment of the fields corresponds to architecture's packing. Here __aligned() is used to satisfy hardware alignment requirements and __packed is used to ensure the same memory layout independently of ABI rules. -- Regards, Sakari Ailus