Files
lkl_linux/include/linux
Mark Rutland f74445b6dd atomics/treewide: Remove atomic_inc_not_zero_hint()
While documentation suggests atomic_inc_not_zero_hint() will perform better
than atomic_inc_not_zero(), this is unlikely to be the case. No architectures
implement atomic_inc_not_zero_hint() directly, and thus it either falls back to
atomic_inc_not_zero(), or a loop using atomic_cmpxchg().

Whenever the hint does not match the value in memory, the repeated use of
atomic_cmpxchg() will be more expensive than the read that
atomic_inc_not_zero_hint() attempts to avoid. For architectures with LL/SC
atomics, a read cannot be avoided, and it would always be better to use
atomic_inc_not_zero() directly. For other architectures, their own
atomic_inc_not_zero() is likely to be more optimal than an atomic_cmpxchg()
loop regardless.

Generally, atomic_inc_not_zero_hint() is liable to perform worse than
atomic_inc_not_zero(). Further, atomic_inc_not_zero_hint() only exists
for atomic_t, and not atomic64_t or atomic_long_t, and there is only one
user in the kernel tree.

Given all this, let's remove atomic_inc_not_zero_hint(), and migrate the
existing user over to atomic_inc_not_zero().

There should be no functional change as a result of this patch.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/lkml/20180621121321.4761-4-mark.rutland@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2018-06-21 14:22:33 +02:00
..
2018-05-25 18:23:56 +02:00
2018-05-23 14:01:03 +02:00
2018-06-05 10:48:09 -04:00
2018-06-07 14:23:08 +01:00
2018-06-07 17:34:35 -07:00
2018-05-26 09:16:44 +02:00
2018-06-15 18:10:01 -03:00
2018-04-20 17:18:35 -07:00
2018-04-30 13:25:14 +01:00
2018-06-14 17:01:45 +02:00
2018-05-28 17:41:02 +02:00
2018-05-09 17:25:13 +02:00
2018-06-15 18:10:01 -03:00
2018-04-27 14:34:51 +02:00
2018-06-01 07:38:16 -06:00
2018-06-15 18:10:01 -03:00
2018-04-26 09:02:01 -06:00
2018-06-07 17:34:37 -07:00
2018-05-22 13:42:16 +02:00
2018-05-09 12:21:46 -05:00
2018-04-11 10:28:38 -07:00
2018-04-12 09:41:19 -07:00
2018-06-05 08:50:16 -04:00
2018-06-15 07:55:25 +09:00
2018-06-07 17:34:35 -07:00
2018-04-11 10:28:32 -07:00
2018-06-07 17:34:37 -07:00
2018-06-12 16:19:22 -07:00
2018-06-07 17:34:39 -07:00
2018-06-01 14:37:35 +02:00
2018-06-07 17:34:36 -07:00
2018-04-11 10:28:39 -07:00
2018-06-06 16:10:45 -05:00
2018-05-15 15:51:38 +01:00
2018-06-07 17:34:35 -07:00
2018-05-31 00:13:56 +08:00
2018-05-11 17:28:45 -07:00
2018-05-11 17:28:45 -07:00
2018-06-04 17:28:20 -04:00
2018-05-04 12:48:54 -07:00
2018-04-30 05:14:55 -07:00
2018-06-07 17:34:35 -07:00
2018-06-07 17:34:37 -07:00
2018-05-03 15:55:23 -07:00
2018-04-16 14:25:08 -06:00
2018-05-18 11:40:27 -04:00
2018-05-19 13:57:31 +02:00
2018-05-19 13:57:31 +02:00
2018-04-26 15:08:04 -04:00
2018-05-14 09:51:34 -04:00