spi: Reorder fields in 'struct spi_message'
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Wed, 1 Mar 2023 20:58:52 +0000 (21:58 +0100)
committerMark Brown <broonie@kernel.org>
Sun, 5 Mar 2023 23:41:29 +0000 (23:41 +0000)
Group some variables based on their sizes to reduce hole and avoid padding.
On x86_64, this shrinks the size from 112 to 96 bytes.

This should have no real impact on memory allocation because 'struct
spi_message' is mostly used on stack, but it can save a few cycles
when the structure is initialized with spi_message_init() and co.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Tested-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Reviewed-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
Link: https://lore.kernel.org/r/c112aad16eb47808e1ec10abd87b3d273c969a68.1677704283.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
include/linux/spi/spi.h

index 4fa26b9..bdb35a9 100644 (file)
@@ -1093,6 +1093,9 @@ struct spi_message {
 
        unsigned                is_dma_mapped:1;
 
+       /* spi_prepare_message() was called for this message */
+       bool                    prepared;
+
        /* REVISIT:  we might want a flag affecting the behavior of the
         * last transfer ... allowing things like "read 16 bit length L"
         * immediately followed by "read L bytes".  Basically imposing
@@ -1105,11 +1108,11 @@ struct spi_message {
         */
 
        /* Completion is reported through a callback */
+       int                     status;
        void                    (*complete)(void *context);
        void                    *context;
        unsigned                frame_length;
        unsigned                actual_length;
-       int                     status;
 
        /* For optional use by whatever driver currently owns the
         * spi_message ...  between calls to spi_async and then later
@@ -1120,9 +1123,6 @@ struct spi_message {
 
        /* List of spi_res reources when the spi message is processed */
        struct list_head        resources;
-
-       /* spi_prepare_message() was called for this message */
-       bool                    prepared;
 };
 
 static inline void spi_message_init_no_memset(struct spi_message *m)