[PATCH 11/41] clocksource/hyperv: use MSR-based access if running as root

Tim Gardner tim.gardner at canonical.com
Thu Nov 4 12:54:19 UTC 2021


From: Wei Liu <wei.liu at kernel.org>

BugLink: https://bugs.launchpad.net/bugs/1949770

When Linux runs as the root partition, the setup required for TSC page
is different. Luckily Linux also has access to the MSR based
clocksource. We can just disable the TSC page clocksource if Linux is
the root partition.

Signed-off-by: Wei Liu <wei.liu at kernel.org>
Acked-by: Daniel Lezcano <daniel.lezcano at linaro.org>
Reviewed-by: Pavel Tatashin <pasha.tatashin at soleen.com>
Reviewed-by: Michael Kelley <mikelley at microsoft.com>
Link: https://lore.kernel.org/r/20210203150435.27941-5-wei.liu@kernel.org
(cherry picked from commit 7d4163c8315729140ad99d6e1ab10dfc7a685640)
Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
---
 drivers/clocksource/hyperv_timer.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c
index 4c9e6a87c438..10eb5c645141 100644
--- a/drivers/clocksource/hyperv_timer.c
+++ b/drivers/clocksource/hyperv_timer.c
@@ -455,6 +455,9 @@ static bool __init hv_init_tsc_clocksource(void)
 	if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE))
 		return false;
 
+	if (hv_root_partition)
+		return false;
+
 	hv_read_reference_counter = read_hv_clock_tsc;
 	phys_addr = virt_to_phys(hv_get_tsc_page());
 
-- 
2.33.1




More information about the kernel-team mailing list