Re: [PATCH 1/2] spi: fsl-qsi: Optimize fsl_qspi struct

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 25/03/21 08:40PM, Kevin Hao wrote:
> 
> Reorgize the members of the fsl_qspi struct to:
>   - Reduce a hole in the struct.
>   - Group members required by each op (e.g., iobase, ahb_addr,
>     devtype_data and lock) into the same cacheline.
> 
> Before:
> struct fsl_qspi {
>         [...]
> 
>         /* size: 176, cachelines: 3, members: 11 */
>         /* sum members: 168, holes: 1, sum holes: 4 */
>         /* padding: 4 */
>         /* member types with holes: 1, total: 1 */
>         /* last cacheline: 48 bytes */
> };
> 
> after:
> struct fsl_qspi {
>         void *                     iobase;               /*     0     8 */
>         void *                     ahb_addr;             /*     8     8 */
>         const struct fsl_qspi_devtype_data  * devtype_data; /*    16     8 */
>         struct mutex               lock;                 /*    24    32 */
>         struct completion          c;                    /*    56    32 */
> 
>         /* XXX last struct has 1 hole */
> 
>         /* --- cacheline 1 boundary (64 bytes) was 24 bytes ago --- */
>         struct clk *               clk;                  /*    88     8 */
>         struct clk *               clk_en;               /*    96     8 */
>         struct pm_qos_request      pm_qos_req;           /*   104    48 */
>         /* --- cacheline 2 boundary (128 bytes) was 24 bytes ago --- */
>         struct device *            dev;                  /*   152     8 */
>         int                        selected;             /*   160     4 */
>         u32                        memmap_phy;           /*   164     4 */
> 
>         /* size: 168, cachelines: 3, members: 11 */
>         /* member types with holes: 1, total: 1 */
>         /* last cacheline: 40 bytes */
> };
> 
> Signed-off-by: Kevin Hao <haokexin@xxxxxxxxx>
> ---
>  drivers/spi/spi-fsl-qspi.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c
> index 355e6a39fb41896f460e2474a90b8f0b42068ff3..efd87f44c63a5b12b76538aa459ca8eb203b9dcd 100644
> --- a/drivers/spi/spi-fsl-qspi.c
> +++ b/drivers/spi/spi-fsl-qspi.c
> @@ -264,14 +264,14 @@ static const struct fsl_qspi_devtype_data ls2080a_data = {
>  struct fsl_qspi {
>         void __iomem *iobase;
>         void __iomem *ahb_addr;
> -       u32 memmap_phy;
> -       struct clk *clk, *clk_en;
> -       struct device *dev;
> -       struct completion c;
>         const struct fsl_qspi_devtype_data *devtype_data;
>         struct mutex lock;
> +       struct completion c;
> +       struct clk *clk, *clk_en;
>         struct pm_qos_request pm_qos_req;
> +       struct device *dev;
>         int selected;
> +       u32 memmap_phy;
>  };

Reviewed-by: Han Xu <han.xu@xxxxxxx>

> 
>  static inline int needs_swap_endian(struct fsl_qspi *q)
> 
> --
> 2.48.1
> 




[Index of Archives]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux