summaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2015-05-27 11:09:38 +0930
committerRusty Russell <rusty@rustcorp.com.au>2015-05-28 11:32:09 +0930
commit4f666546d047752c17265f4641cc9470c1cbaed4 (patch)
tree119d2a7a325eccf18eedbc309a0cad7190c0a969 /drivers/input
parentb7df4d1b23bfca830f1076412d21524686c5a441 (diff)
downloadlinux-stable-4f666546d047752c17265f4641cc9470c1cbaed4.tar.gz
linux-stable-4f666546d047752c17265f4641cc9470c1cbaed4.tar.bz2
linux-stable-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/input')
0 files changed, 0 insertions, 0 deletions