summaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorHannes Frederic Sowa <hannes@stressinduktion.org>2014-05-11 22:59:30 +0200
committerDavid S. Miller <davem@davemloft.net>2014-05-14 00:37:34 -0400
commit3d4405226d27b3a215e4d03cfa51f536244e5de7 (patch)
treec7b5f491bf08622f82d7abb0591a8ac4c038d4b4 /net/ipv6
parent773cd38f40b8834be991dbfed36683acc1dd41ee (diff)
downloadop-kernel-dev-3d4405226d27b3a215e4d03cfa51f536244e5de7.zip
op-kernel-dev-3d4405226d27b3a215e4d03cfa51f536244e5de7.tar.gz
net: avoid dependency of net_get_random_once on nop patching
net_get_random_once depends on the static keys infrastructure to patch up the branch to the slow path during boot. This was realized by abusing the static keys api and defining a new initializer to not enable the call site while still indicating that the branch point should get patched up. This was needed to have the fast path considered likely by gcc. The static key initialization during boot up normally walks through all the registered keys and either patches in ideal nops or enables the jump site but omitted that step on x86 if ideal nops where already placed at static_key branch points. Thus net_get_random_once branches not always became active. This patch switches net_get_random_once to the ordinary static_key api and thus places the kernel fast path in the - by gcc considered - unlikely path. Microbenchmarks on Intel and AMD x86-64 showed that the unlikely path actually beats the likely path in terms of cycle cost and that different nop patterns did not make much difference, thus this switch should not be noticeable. Fixes: a48e42920ff38b ("net: introduce new macro net_get_random_once") Reported-by: Tuomas Räsänen <tuomasjjrasanen@tjjr.fi> Cc: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud