diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2024-09-05 20:27:09 -0700 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2024-09-12 17:11:24 -0700 |
| commit | 46ae4d0a489741565520195bddebc3414781e603 (patch) | |
| tree | b364bb2c6808d4d1ae4e00c46c123caf7fffe618 /drivers/clocksource/hyperv_timer.c | |
| parent | 3cfb5aa10cb78571e214e48a3a6e42c11d5288a1 (diff) | |
| parent | 5abfdfd402699ce7c1e81d1a25bc37f60f7741ff (diff) | |
| download | lwn-46ae4d0a489741565520195bddebc3414781e603.tar.gz lwn-46ae4d0a489741565520195bddebc3414781e603.zip | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR.
No conflicts (sort of) and no adjacent changes.
This merge reverts commit b3c9e65eb227 ("net: hsr: remove seqnr_lock")
from net, as it was superseded by
commit 430d67bdcb04 ("net: hsr: Use the seqnr lock for frames received via interlink port.")
in net-next.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/clocksource/hyperv_timer.c')
| -rw-r--r-- | drivers/clocksource/hyperv_timer.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/clocksource/hyperv_timer.c b/drivers/clocksource/hyperv_timer.c index b2a080647e41..99177835cade 100644 --- a/drivers/clocksource/hyperv_timer.c +++ b/drivers/clocksource/hyperv_timer.c @@ -137,7 +137,21 @@ static int hv_stimer_init(unsigned int cpu) ce->name = "Hyper-V clockevent"; ce->features = CLOCK_EVT_FEAT_ONESHOT; ce->cpumask = cpumask_of(cpu); - ce->rating = 1000; + + /* + * Lower the rating of the Hyper-V timer in a TDX VM without paravisor, + * so the local APIC timer (lapic_clockevent) is the default timer in + * such a VM. The Hyper-V timer is not preferred in such a VM because + * it depends on the slow VM Reference Counter MSR (the Hyper-V TSC + * page is not enbled in such a VM because the VM uses Invariant TSC + * as a better clocksource and it's challenging to mark the Hyper-V + * TSC page shared in very early boot). + */ + if (!ms_hyperv.paravisor_present && hv_isolation_type_tdx()) + ce->rating = 90; + else + ce->rating = 1000; + ce->set_state_shutdown = hv_ce_shutdown; ce->set_state_oneshot = hv_ce_set_oneshot; ce->set_next_event = hv_ce_set_next_event; |
