[hyperv] Provide timer based on the 10MHz time reference count MSR
authorMichael Brown <mcb30@ipxe.org>
Thu, 26 Jan 2017 08:03:11 +0000 (08:03 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 26 Jan 2017 08:19:26 +0000 (08:19 +0000)
commitf3ba0fb5fdd866961b5dfc0d227af60b25753f0e
treef2473a45a68f0e992b37798b6cef9cb31eb36b87
parent302f1eeb80706fb10067efedb1279fa3f85ddda2
[hyperv] Provide timer based on the 10MHz time reference count MSR

When running on AMD platforms, the legacy hardware emulation is
extremely unreliable.  In particular, the IRQ0 timer interrupt is
likely to simply stop working, resulting in a total failure of any
code that relies on timers (such as DHCP retransmission attempts).

Work around this by using the 10MHz time counter provided by Hyper-V
via an MSR.  (This timer can be tested in KVM via the command-line
option "-cpu host,hv_time".)

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/x86/drivers/hyperv/hyperv.c
src/arch/x86/drivers/hyperv/hyperv.h