From: Wei Liu <wei.liu@xxxxxxxxxx> Sent: Monday, February 1, 2021 10:55 AM > > On Wed, Jan 27, 2021 at 12:23:43PM -0800, Michael Kelley wrote: > [...] > > +/* > > + * Reference to pv_ops must be inline so objtool > > + * detection of noinstr violations can work correctly. > > + */ > > +static __always_inline void hv_setup_sched_clock(void *sched_clock) > > sched_clock_register is not trivial. Having __always_inline here is > going to make the compiled object bloated. > > Given this is a static function, I don't think we need to specify any > inline keyword. The compiler should be able to determine whether this > function should be inlined all by itself. > > Wei. There was an explicit request from Peter Zijlstra and Thomas Gleixner to force it inline. See https://lore.kernel.org/patchwork/patch/1283635/ and https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/x86/include/asm/mshyperv.h?id=b9d8cf2eb3ceecdee3434b87763492aee9e28845 Michael > > > +{ > > +#ifdef CONFIG_GENERIC_SCHED_CLOCK > > + /* > > + * We're on an architecture with generic sched clock (not x86/x64). > > + * The Hyper-V sched clock read function returns nanoseconds, not > > + * the normal 100ns units of the Hyper-V synthetic clock. > > + */ > > + sched_clock_register(sched_clock, 64, NSEC_PER_SEC); > > +#else > > +#ifdef CONFIG_PARAVIRT > > + /* We're on x86/x64 *and* using PV ops */ > > + pv_ops.time.sched_clock = sched_clock; > > +#endif > > +#endif > > +} > > + > > static bool __init hv_init_tsc_clocksource(void) > > { > > u64 tsc_msr; > > -- > > 1.8.3.1 > >