summaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2015-05-27 03:39:38 +0200
committerRusty Russell <rusty@rustcorp.com.au>2015-05-28 04:02:09 +0200
commit4f666546d047752c17265f4641cc9470c1cbaed4 (patch)
tree119d2a7a325eccf18eedbc309a0cad7190c0a969 /drivers/misc
parentmodule: Use __module_address() for module_address_lookup() (diff)
downloadlinux-4f666546d047752c17265f4641cc9470c1cbaed4.tar.xz
linux-4f666546d047752c17265f4641cc9470c1cbaed4.zip
module: Rework module_addr_{min,max}
__module_address() does an initial bound check before doing the {list/tree} iteration to find the actual module. The bound variables are nowhere near the mod_tree cacheline, in fact they're nowhere near one another. module_addr_min lives in .data while module_addr_max lives in .bss (smarty pants GCC thinks the explicit 0 assignment is a mistake). Rectify this by moving the two variables into a structure together with the latch_tree_root to guarantee they all share the same cacheline and avoid hitting two extra cachelines for the lookup. While reworking the bounds code, move the bound update from allocation to insertion time, this avoids updating the bounds for a few error paths. Cc: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/misc')
0 files changed, 0 insertions, 0 deletions