linux-stable/drivers/base/regmap
Dimitris Papastamos 0c7ed8563a regmap: Cut down on the average # of nodes in the rbtree cache
This patch aims to bring down the average number of nodes
in the rbtree cache and increase the average number of registers
per node.  This should improve general lookup and traversal times.
This is achieved by setting the minimum size of a block within the
rbnode to the size of the rbnode itself.  This will essentially
cache possibly non-existent registers so to combat this scenario,
we keep a separate bitmap in memory which keeps track of which register
exists.  The memory overhead of this change is likely in the order of
~5-10%, possibly less depending on the register file layout.  On my test
system with a bitmap of ~4300 bits and a relatively sparse register
layout, the memory requirements for the entire cache did not increase
(the cutting down of nodes which was about 50% of the original number
compensated the situation).

A second patch that can be built on top of this can look at the
ratio `sizeof(*rbnode) / map->cache_word_size' in order to suitably
adjust the block length of each block.

Signed-off-by: Dimitris Papastamos <dp@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
2013-03-26 21:38:15 +00:00
..
internal.h regmap: core: Make raw write available to regcache 2013-03-26 19:17:32 +00:00
Kconfig regmap: select REGMAP if REGMAP_MMIO and REGMAP_IRQ enabled 2012-10-17 22:09:35 +09:00
Makefile regmap: flat: Add flat cache type 2013-01-02 10:58:53 +00:00
regcache-flat.c regmap: flat: Add flat cache type 2013-01-02 10:58:53 +00:00
regcache-lzo.c regmap: cache: Pass the map rather than the word size when updating values 2013-03-04 10:30:27 +08:00
regcache-rbtree.c regmap: Cut down on the average # of nodes in the rbtree cache 2013-03-26 21:38:15 +00:00
regcache.c regmap: cache: Store caches in native register format where possible 2013-03-04 10:30:28 +08:00
regmap-debugfs.c The sweeping change is to make add_taint() explicitly indicate whether to disable 2013-02-25 15:41:43 -08:00
regmap-i2c.c i2c: Split I2C_M_NOSTART support out of I2C_FUNC_PROTOCOL_MANGLING 2012-05-30 10:55:34 +02:00
regmap-irq.c regmap: irq: Support wake IRQ mask inversion 2013-01-04 20:53:44 +00:00
regmap-mmio.c regmap: mmio: add register clock support 2013-02-14 16:40:28 +00:00
regmap-spi.c regmap: spi: Handle allocation failures gracefully 2013-02-05 14:14:32 +00:00
regmap.c regmap: core: Make raw write available to regcache 2013-03-26 19:17:32 +00:00