On Fri, Oct 27, 2017 at 03:25:28PM -0700, Mark Salyzyn wrote: > Ensure monotonic and realtime are inline, small price to pay for > high volume common request.
Does this make a noticeable difference on any workload? What does this do to the binary size? Thanks, Mark. > > Signed-off-by: Mark Salyzyn <[email protected]> > Cc: James Morse <[email protected]> > Cc: Russell King <[email protected]> > Cc: Catalin Marinas <[email protected]> > Cc: Will Deacon <[email protected]> > Cc: Andy Lutomirski <[email protected]> > Cc: Dmitry Safonov <[email protected]> > Cc: John Stultz <[email protected]> > Cc: Mark Rutland <[email protected]> > Cc: Laura Abbott <[email protected]> > Cc: Kees Cook <[email protected]> > Cc: Ard Biesheuvel <[email protected]> > Cc: Andy Gross <[email protected]> > Cc: Kevin Brodsky <[email protected]> > Cc: Andrew Pinski <[email protected]> > Cc: [email protected] > Cc: [email protected] > > v2: > - split first CL into 4 of 7 pieces > > v3: > - rebase (unchanged) > > --- > arch/arm/vdso/vgettimeofday.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/vdso/vgettimeofday.c b/arch/arm/vdso/vgettimeofday.c > index 5f596911bd53..71003a1997c4 100644 > --- a/arch/arm/vdso/vgettimeofday.c > +++ b/arch/arm/vdso/vgettimeofday.c > @@ -99,7 +99,7 @@ static notrace int do_monotonic_coarse(const struct > vdso_data *vd, > > #ifdef CONFIG_ARM_ARCH_TIMER > > -static notrace u64 get_ns(const struct vdso_data *vd) > +static __always_inline notrace u64 get_ns(const struct vdso_data *vd) > { > u64 cycle_delta; > u64 cycle_now; > @@ -115,7 +115,9 @@ static notrace u64 get_ns(const struct vdso_data *vd) > return nsec; > } > > -static notrace int do_realtime(const struct vdso_data *vd, struct timespec > *ts) > +/* Code size doesn't matter (vdso is 4k/16k/64k anyway) and this is faster. > */ > +static __always_inline notrace int do_realtime(const struct vdso_data *vd, > + struct timespec *ts) > { > u64 nsecs; > u32 seq; > @@ -137,7 +139,8 @@ static notrace int do_realtime(const struct vdso_data > *vd, struct timespec *ts) > return 0; > } > > -static notrace int do_monotonic(const struct vdso_data *vd, struct timespec > *ts) > +static __always_inline notrace int do_monotonic(const struct vdso_data *vd, > + struct timespec *ts) > { > struct timespec tomono; > u64 nsecs; > -- > 2.15.0.rc2.357.g7e34df9404-goog >

