Re: [RFC PATCH] clocksource: exynos_mct: use container_of() instead of this_cpu_ptr()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 09/04/2015 01:49 AM, Alexey Klimov wrote:
Since evt structure is embedded in per-CPU mevt structure it's
definitely faster to use container_of() to get access to mevt
if we have evt (for example as incoming function argument) instead
of more expensive approach with this_cpu_ptr(&percpu_mct_tick).
this_cpu_ptr() on per-CPU mevt structure leads to access to cp15
to get cpu id and arithmetic operations.
Container_of() is cheaper since it's just one asm instruction.
This should work if used evt pointer is correct and owned by
local mevt structure.

For example, before this patch set_state_shutdown() looks like:

  4a4:	e92d4010 	push	{r4, lr}
  4a8:	e3004000 	movw	r4, #0
  4ac:	ebfffffe 	bl	0 <debug_smp_processor_id>
  4b0:	e3003000 	movw	r3, #0
  4b4:	e3404000 	movt	r4, #0
  4b8:	e3403000 	movt	r3, #0
  4bc:	e7933100 	ldr	r3, [r3, r0, lsl #2]
  4c0:	e0844003 	add	r4, r4, r3
  4c4:	e59400c0 	ldr	r0, [r4, #192]	; 0xc0
  4c8:	ebffffd4 	bl	420 <exynos4_mct_tick_stop.isra.1>
  4cc:	e3a00000 	mov	r0, #0
  4d0:	e8bd8010 	pop	{r4, pc}

With this patch:

  4a4:	e92d4010 	push	{r4, lr}
  4a8:	e59000c0 	ldr	r0, [r0, #192]	; 0xc0
  4ac:	ebffffdb 	bl	420 <exynos4_mct_tick_stop.isra.1>
  4b0:	e3a00000 	mov	r0, #0
  4b4:	e8bd8010 	pop	{r4, pc}

Also, for me size of exynos_mct.o decreased from 84588 bytes
to 83956.

Signed-off-by: Alexey Klimov <alexey.klimov@xxxxxxxxxx>
---

Despite the RFC I applied the patch as it seems simple enough and it has been reviewed by Krzysztof.

  -- Daniel


--
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux