regmap: Reorder fields in 'struct regmap_bus' to save some memory
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Tue, 14 Feb 2023 08:40:14 +0000 (09:40 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 14 Feb 2023 13:25:22 +0000 (13:25 +0000)
Group some bool variables to reduce hole and avoid padding.
On x86_64, this shrinks the size from 136 to 128 bytes.

As an example:

$ size drivers/base/regmap/regmap-fsi.o (Before)
   text    data     bss     dec     hex filename
   4837     136       0    4973    136d drivers/base/regmap/regmap-fsi.o

$ size drivers/base/regmap/regmap-fsi.o (After)
   text    data     bss     dec     hex filename
   4701     136       0    4837    12e5 drivers/base/regmap/regmap-fsi.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/077ca39622c8870a3ea932298a9cec34f7a8295a.1676363976.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
include/linux/regmap.h

index 029b9e0..f26432d 100644 (file)
@@ -520,6 +520,7 @@ typedef void (*regmap_hw_free_context)(void *context);
  *          to perform locking. This field is ignored if custom lock/unlock
  *          functions are used (see fields lock/unlock of
  *          struct regmap_config).
+ * @free_on_exit: kfree this on exit of regmap
  * @write: Write operation.
  * @gather_write: Write operation with split register/value, return -ENOTSUPP
  *                if not implemented  on a given device.
@@ -548,10 +549,10 @@ typedef void (*regmap_hw_free_context)(void *context);
  *     DEFAULT, BIG is assumed.
  * @max_raw_read: Max raw read size that can be used on the bus.
  * @max_raw_write: Max raw write size that can be used on the bus.
- * @free_on_exit: kfree this on exit of regmap
  */
 struct regmap_bus {
        bool fast_io;
+       bool free_on_exit;
        regmap_hw_write write;
        regmap_hw_gather_write gather_write;
        regmap_hw_async_write async_write;
@@ -568,7 +569,6 @@ struct regmap_bus {
        enum regmap_endian val_format_endian_default;
        size_t max_raw_read;
        size_t max_raw_write;
-       bool free_on_exit;
 };
 
 /*