[dpdk-dev] [PATCH v4 04/18] bus/dpaa: solve inconsistent struct alignment

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Fri May 11 10:26:19 CEST 2018



> -----Original Message-----
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Andy Green
> Sent: Friday, May 11, 2018 2:46 AM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH v4 04/18] bus/dpaa: solve inconsistent struct
> alignment
> 
> The actual descriptor for qm_mr_entry is 64-byte aligned.
> 
> But the original code plays a trick, and puts a u8 common to the three descriptor
> subtypes in the union afterwards outside their structure definitions.
> 
> Unfortunately since they compose a struct qm_fd with alignment 8, this trick
> destroys the ability of the compiler to understand what has happened, resulting
> in this kind of
> problem:
> 
> /home/agreen/projects/dpdk/drivers/bus/dpaa/include/
> fsl_qman.h:354:3: error: alignment 1 of ‘struct <anonymous>’
> is less than 8 [-Werror=packed-not-aligned]
>    } __packed dcern;
> 
> on gcc 8 / Fedora 28 out of the box.
> 
> This patch moves the u8 verb into the structure definitions composed into the
> union, so the alignment of the parent struct containing the alignment 8 object
> can also be seen to be alignment 8 by the compiler.  Uses of .verb are fixed up to
> use .ern.verb (the same offset of +0 inside all the structs in the union).
> 
> The final struct layout should be unchanged.
> 
> Signed-off-by: Andy Green <andy at warmcat.com>
> Acked-by: Hemant Agrawal <hemant.agrawal at nxp.com>
> Tested-by: Hemant Agrawal <hemant.agrawal at nxp.com>

Missing fixes line and CC stable:

Fixes: c47ff048b99a ("bus/dpaa: add QMAN driver core routines")
Fixes: f6fadc3e6310 ("bus/dpaa: add QMAN interface driver")
Cc: stable at dpdk.org



More information about the dev mailing list