Re: [PATCHv8 02/34] lib/vdso: make do_hres and do_coarse as __always_inline
From: Vincenzo Frascino <hidden>
Date: 2020-01-10 12:15:26
Also in:
lkml
On 1/10/20 12:02 PM, Thomas Gleixner wrote:
Vincenzo Frascino [off-list ref] writes:quoted
On 1/10/20 11:42 AM, Thomas Gleixner wrote:quoted
quoted
quoted
+» » /*·goto·allows·to·avoid·extra·inlining·of·do_hres.·*/ +» » goto·out_hres;What is the performance impact of "goto out_hres"?On x86 it's invisible at least in my limited testing.On arm64 as well based on mine as well. Shall we keep the code more readable here (without goto)?The delta patch below makes it readable again and also avoids the double inlining. Quick testing shows no difference.
I tested it on arm64 and it does not show any difference as well. I vote for it :)
quoted hunk ↗ jump to hunk
Thanks, tglx 8<------------------ a/lib/vdso/gettimeofday.c +++ b/lib/vdso/gettimeofday.c@@ -98,17 +98,15 @@ static __maybe_unused int msk = 1U << clock; if (likely(msk & VDSO_HRES)) { vd = &vd[CS_HRES_COARSE]; -out_hres: - return do_hres(vd, clock, ts); } else if (msk & VDSO_COARSE) { do_coarse(&vd[CS_HRES_COARSE], clock, ts); return 0; } else if (msk & VDSO_RAW) { vd = &vd[CS_RAW]; - /* This goto avoids extra inlining of do_hres. */ - goto out_hres; + } else { + return -1; } - return -1; + return do_hres(vd, clock, ts); } static __maybe_unused int
-- Regards, Vincenzo