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/include
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
..
hci [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00
ipxe [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
readline [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00
sys [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
usr [block] Allow use of a non-default EFI SAN boot filename 2017-04-12 15:58:05 +01:00
valgrind [malloc] Move valgrind headers out of arch/x86 2015-03-03 14:25:51 +00:00
xen [xen] Import selected public headers 2014-07-29 15:20:49 +01:00
alloca.h alloca() can be useful in some (limited) circumstances. 2007-01-11 23:19:31 +00:00
assert.h [libc] Allow assertions to be globally enabled or disabled 2016-07-05 13:28:51 +01:00
byteswap.h [libc] Rewrite byte-swapping code 2015-03-02 16:35:37 +00:00
coff.h Initial revision 2005-03-08 18:53:11 +00:00
compiler.h [build] Avoid confusing sparse in single-argument DBG() macros 2017-03-22 08:25:04 +02:00
cpu.h Initial revision 2005-03-08 18:53:11 +00:00
ctype.h [libc] Rewrite unrelicensable portions of ctype.h 2015-03-02 16:35:37 +00:00
curses.h [libc] Add stdbool.h standard header 2017-04-10 16:12:53 +01:00
elf.h [elf] Rewrite ELF header 2015-03-02 19:42:48 +00:00
endian.h [libc] Rewrite byte-swapping code 2015-03-02 16:35:37 +00:00
errno.h [build] Allow assembler section type character to vary by architecture 2016-03-13 11:20:53 +00:00
etherboot.h [console] Move putchar() and getchar() declarations to stdio.h 2012-03-26 14:43:52 +01:00
fs.h Initial revision 2005-03-08 18:53:11 +00:00
getopt.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
i82365.h [legal] Add FILE_LICENCE macro to some GPL-v2 files 2010-12-03 23:23:35 +00:00
libgen.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
linux_api.h [af_packet] Add new AF_PACKET driver for Linux 2017-01-22 14:02:54 +00:00
mii.h [mii] Synchronise constants with current Linux include/linux/mii.h 2012-04-18 16:32:57 +01:00
nic.h [legacy] Fix building with GCC 6 2016-05-04 16:01:33 +01:00
old_tcp.h Moved old tcp.h to old_tcp.h, to avoid name clash with new (uIP-based) 2006-03-23 20:34:08 +00:00
pc_kbd.h Initial revision 2005-03-08 18:53:11 +00:00
pcmcia-opts.h Initial revision 2005-03-08 18:53:11 +00:00
pcmcia.h Dead code removal. 2007-07-14 15:42:26 +01:00
stdarg.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
stdbool.h [libc] Add stdbool.h standard header 2017-04-10 16:12:53 +01:00
stddef.h [libc] Allow container_of() to be used on volatile pointers 2016-03-18 08:18:31 +00:00
stdint.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00
stdio.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
stdlib.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00
string.h [libc] Allow CPU architectures to use unoptimised string functions 2016-04-19 16:30:49 +01:00
strings.h [libc] Add ffs(), ffsl(), and ffsll() 2015-03-16 15:40:53 +00:00
sys_info.h Initial revision 2005-03-08 18:53:11 +00:00
syslog.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
time.h [time] Allow system clock to be adjusted at runtime 2016-06-13 15:29:05 +01:00
unistd.h [time] Allow timer to be selected at runtime 2017-01-26 08:17:37 +00:00
wchar.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 16:35:29 +00:00