Thread (28 messages) 28 messages, 3 authors, 2021-02-25

RE: [PATCH 08/10] clocksource/drivers/hyper-v: Handle sched_clock differences inline

From: Michael Kelley <hidden>
Date: 2021-02-04 16:31:15
Also in: linux-hyperv, lkml

From: Wei Liu <wei.liu@kernel.org> Sent: Monday, February 1, 2021 10:55 AM
On Wed, Jan 27, 2021 at 12:23:43PM -0800, Michael Kelley wrote:
[...]
quoted
+/*
+ * 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
quoted
+{
+#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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help