kernel_optimize_test/net/atm
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
..
addr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
addr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atm_misc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
atm_sysfs.c net: Use octal not symbolic permissions 2018-03-26 12:07:48 -04:00
br2684.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
clip.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
common.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
common.h net/atm: convert to ->poll_mask 2018-05-26 09:16:44 +02:00
ioctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig
lec_arpc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
lec.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
lec.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpc.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
mpc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpoa_caches.c atm: mpoa: remove 32-bit timekeeping 2017-11-30 09:26:32 -05:00
mpoa_caches.h atm: mpoa: remove 32-bit timekeeping 2017-11-30 09:26:32 -05:00
mpoa_proc.c net: delete /proc THIS_MODULE references 2018-01-16 15:01:33 -05:00
pppoatm.c atomics/treewide: Remove atomic_inc_not_zero_hint() 2018-06-21 14:22:33 +02:00
proc.c atm: switch to proc_create_seq_private 2018-05-16 07:24:30 +02:00
protocols.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pvc.c net/atm: convert to ->poll_mask 2018-05-26 09:16:44 +02:00
raw.c atm: Preserve value of skb->truesize when accounting to vcc 2018-06-17 08:27:01 +09:00
resources.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
resources.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
signaling.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
signaling.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
svc.c net/atm: convert to ->poll_mask 2018-05-26 09:16:44 +02:00