Re: [thiscpuops upgrade 05/10] x86: Use this_cpu_inc_return for nmicounter

From: Tejun Heo
Date: Fri Nov 26 2010 - 11:36:06 EST


On 11/24/2010 12:51 AM, Christoph Lameter wrote:
> this_cpu_inc_return() saves us a memory access there.
>
> Signed-off-by: Christoph Lameter <cl@xxxxxxxxx>
>
> ---
> arch/x86/kernel/apic/nmi.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> Index: linux-2.6/arch/x86/kernel/apic/nmi.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/apic/nmi.c 2010-11-23 16:35:19.000000000 -0600
> +++ linux-2.6/arch/x86/kernel/apic/nmi.c 2010-11-23 16:38:29.000000000 -0600
> @@ -432,8 +432,7 @@ nmi_watchdog_tick(struct pt_regs *regs,
> * Ayiee, looks like this CPU is stuck ...
> * wait a few IRQs (5 seconds) before doing the oops ...
> */
> - __this_cpu_inc(alert_counter);
> - if (__this_cpu_read(alert_counter) == 5 * nmi_hz)
> + if (__this_cpu_inc_return(alert_counter) == 5 * nmi_hz)

Hmmm... one worry I have is that xadd, being not a very popular
operation, might be slower than add and read. Using it for atomicity
would probably be beneficial in most cases but have you checked this
actually is cheaper?

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/