From: Kevin Hao Date: Fri, 11 Apr 2025 07:06:41 +0000 (+0800) Subject: spi: fsl-qspi: Optimize fsl_qspi struct X-Git-Tag: v6.16-rc1~23^2~44 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=279b418f477fd6c1c21b1cf212837622c774f15f;p=linux-block.git spi: fsl-qspi: Optimize fsl_qspi struct 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 */ }; Reviewed-by: Han Xu Signed-off-by: Kevin Hao Link: https://patch.msgid.link/20250411-spi-v1-1-8d6dfb1a9262@gmail.com Signed-off-by: Mark Brown --- diff --git a/drivers/spi/spi-fsl-qspi.c b/drivers/spi/spi-fsl-qspi.c index f879533535e8..c887abb028d7 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; }; static inline int needs_swap_endian(struct fsl_qspi *q)