david/ipxe
david
/
ipxe
Archived
1
0
Fork 0
This repository has been archived on 2020-12-06. You can view files and clone it, but cannot push or open issues or pull requests.
ipxe/src
Michael Brown b91cc983da [hyperv] Cope with Windows Server 2016 enlightenments
An "enlightened" external bootloader (such as Windows Server 2016's
winload.exe) may take ownership of the Hyper-V connection before all
INT 13 operations have been completed.  When this happens, all VMBus
devices are implicitly closed and we are left with a non-functional
network connection.

Detect when our Hyper-V connection has been lost (by checking the
SynIC message page MSR).  Reclaim ownership of the Hyper-V connection
and reestablish any VMBus devices, without disrupting any existing
iPXE state (such as IPv4 settings attached to the network device).

Windows Server 2016 will not cleanly take ownership of an active
Hyper-V connection.  Experimentation shows that we can quiesce by
resetting only the SynIC message page MSR; this results in a
successful SAN boot (on a Windows 2012 R2 physical host).  Choose to
quiesce by resetting (almost) all MSRs, in the hope that this will be
more robust against corner cases such as a stray synthetic interrupt
occurring during the handover.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2017-04-28 16:20:47 +01:00
..
arch [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
bin Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
config [linux] Use dummy SAN device 2017-03-28 17:34:41 +03:00
core [block] Provide abstraction to allow system to be quiesced 2017-04-26 20:15:39 +01:00
crypto [crypto] Mark permanent certificates as permanent 2016-08-31 17:23:42 +01:00
doc [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
drivers [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
hci [block] Allow use of a non-default EFI SAN boot filename 2017-04-12 15:58:05 +01:00
image [crypto] Free correct pointer on the error path 2017-03-21 14:07:40 +02:00
include [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
interface [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
libgcc [libgcc] Provide __divmoddi4() 2016-05-05 23:42:57 +01:00
net [http] Notify data transfer interface when underlying connection is ready 2017-03-28 23:40:52 +03:00
scripts [efi] Centralise architecture-independent EFI Makefile and linker script 2016-03-12 21:47:13 +00:00
tests [build] Avoid implicit-fallthrough warnings on GCC 7 2017-03-29 10:36:45 +03:00
usr [block] Allow use of a non-default EFI SAN boot filename 2017-04-12 15:58:05 +01:00
util [efi] Fix building elf2efi.c when -fpic is enabled by default 2017-01-25 08:15:21 +00:00
.gitignore [build] Add support for local configuration files 2010-03-26 19:07:22 +00:00
Makefile [sfc] Add driver for Solarflare SFC8XXX adapters 2017-04-10 16:17:08 +01:00
Makefile.efi [efi] Centralise architecture-independent EFI Makefile and linker script 2016-03-12 21:47:13 +00:00
Makefile.housekeeping [profile] Allow profiling to be globally enabled or disabled 2016-07-05 13:49:51 +01:00
doxygen.cfg [build] Remove PACKED macro 2010-05-29 23:49:47 +01:00