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 <[email protected]>
---

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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to