On Tue, Mar 23, 2021 at 8:17 AM Arnd Bergmann <a...@kernel.org> wrote: > > From: Arnd Bergmann <a...@arndb.de> > > When building with W=1, gcc points out that the __packed attribute > on struct qm_eqcr_entry conflicts with the 8-byte alignment > attribute on struct qm_fd inside it: > > drivers/soc/fsl/qbman/qman.c:189:1: error: alignment 1 of 'struct > qm_eqcr_entry' is less than 8 [-Werror=packed-not-aligned] > > I assume that the alignment attribute is the correct one, and > that qm_eqcr_entry cannot actually be unaligned in memory, > so add the same alignment on the outer struct. > > Fixes: c535e923bb97 ("soc/fsl: Introduce DPAA 1.x QMan device driver") > Signed-off-by: Arnd Bergmann <a...@arndb.de> > --- > drivers/soc/fsl/qbman/qman.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/soc/fsl/qbman/qman.c b/drivers/soc/fsl/qbman/qman.c > index a1b9be1d105a..fde4edd83c14 100644 > --- a/drivers/soc/fsl/qbman/qman.c > +++ b/drivers/soc/fsl/qbman/qman.c > @@ -186,7 +186,7 @@ struct qm_eqcr_entry { > __be32 tag; > struct qm_fd fd; > u8 __reserved3[32]; > -} __packed; > +} __packed __aligned(8);
The EQCR structure is actually aligned on 64-byte from the manual. But probably 8 is enough to let the compiler not complain. > #define QM_EQCR_VERB_VBIT 0x80 > #define QM_EQCR_VERB_CMD_MASK 0x61 /* but only one value; */ > #define QM_EQCR_VERB_CMD_ENQUEUE 0x01 > -- > 2.29.2 >