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/drivers/net
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
..
ath [build] Avoid implicit-fallthrough warnings on GCC 7 2017-03-29 10:36:45 +03:00
efi [efi] Skip cable detection at initialisation where possible 2017-03-19 13:30:27 +00:00
igbvf [build] Avoid implicit-fallthrough warnings on GCC 7 2017-03-29 10:36:45 +03:00
phantom [pci] Support systems with multiple PCI root bridges 2016-06-09 09:36:28 +01:00
rtl818x [rtl818x] Fix resource leak on error path 2017-03-23 11:40:36 +02:00
sfc [sfc] Add driver for Solarflare SFC8XXX adapters 2017-04-10 16:17:08 +01:00
tg3 [build] Avoid implicit-fallthrough warnings on GCC 7 2017-03-29 10:36:45 +03:00
vxge [vxge] Fix use of stale I/O buffer on error path 2017-03-23 21:10:25 +02:00
3c5x9.c [3c5x9] Avoid use of sleep() in driver code 2016-03-22 15:14:07 +00:00
3c90x.c [3c90x] Fix High-MTU packet reception 2013-08-20 14:38:33 +01:00
3c90x.h [3c90x] Don't round up transmit packet length 2013-08-20 14:37:05 +01:00
3c503.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
3c509-eisa.c [console] Move putchar() and getchar() declarations to stdio.h 2012-03-26 14:43:52 +01:00
3c509.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
3c509.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
3c515.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
3c515.txt Initial revision 2005-03-08 18:53:11 +00:00
3c529.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
3c595.c [3c595] Fix compilation when "char" is unsigned by default 2016-03-12 18:06:47 +00:00
3c595.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
acm.c [usb] Allow USB endpoints to specify a reserved header length for refills 2016-01-19 00:01:11 +00:00
acm.h [acm] Add support for CDC-ACM (aka USB RNDIS) devices 2015-12-07 13:16:53 +00:00
amd8111e.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
amd8111e.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
atl1e.c [pci] Rewrite unrelicensable portions of pci.h 2015-03-03 00:08:41 +00:00
atl1e.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
axge.c [axge] Add driver for ASIX 10/100/1000 USB Ethernet NICs 2016-05-26 12:52:06 +01:00
axge.h [axge] Add driver for ASIX 10/100/1000 USB Ethernet NICs 2016-05-26 12:52:06 +01:00
b44.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
b44.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
bnx2.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
bnx2.h [ethernet] Update mii.h and use it in drivers that had a private copy 2009-05-26 11:30:31 +01:00
bnx2_fw.h Ported bnx2 driver from Etherboot 5.4. 2007-03-13 23:03:50 +00:00
cs89x0.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
cs89x0.h [cs89x0] Remove conflicting macro definitions 2013-03-25 22:23:04 +00:00
cs89x0.txt ]Drivers] Update licensing for cs89x0.[ch] and cs89x0.txt 2008-03-18 22:31:26 -04:00
davicom.c [pci] Remove outdated and mostly-unused pci_ids.h file 2015-03-02 21:37:45 +00:00
depca.c [console] Move putchar() and getchar() declarations to stdio.h 2012-03-26 14:43:52 +01:00
dm96xx.c [usb] Allow USB endpoints to specify a reserved header length for refills 2016-01-19 00:01:11 +00:00
dm96xx.h [legal] Relicense Davicom DM96xx drivers 2015-03-10 00:12:39 +00:00
dmfe.c [pci] Rewrite unrelicensable portions of pci.h 2015-03-03 00:08:41 +00:00
ecm.c [usb] Allow USB endpoints to specify a reserved header length for refills 2016-01-19 00:01:11 +00:00
ecm.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
eepro.c [libc] Rewrite byte-swapping code 2015-03-02 16:35:37 +00:00
eepro100.c [eepro100] Remove duplicate PCI_ROM() line 2015-04-15 11:38:10 +01:00
eepro100.h [pci] Make driver PCI ID a property of the PCI device 2011-02-17 01:25:12 +00:00
eoib.c [infiniband] Return status code from ib_create_cq() and ib_create_qp() 2017-03-22 11:18:02 +02:00
epic100.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
epic100.h [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
etherfabric.c [etherfabric] Avoid use of sleep() in driver code 2016-03-22 15:19:25 +00:00
etherfabric.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
etherfabric_nic.h [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
forcedeth.c [time] Allow timer to be selected at runtime 2017-01-26 08:17:37 +00:00
forcedeth.h [build] Provide common ARRAY_SIZE() definition 2017-03-10 15:44:11 +00:00
hfa384x.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00
intel.c [intel] Do not enable ASDE on i350 backplane NIC 2017-04-16 21:37:41 +01:00
intel.h [intel] Do not enable ASDE on i350 backplane NIC 2017-04-16 21:37:41 +01:00
intelvf.c [intel] Remove duplicate intelvf_mbox_queues() function 2016-07-14 13:51:07 +01:00
intelvf.h [intel] Strip spurious VLAN tags received by virtual function NICs 2016-07-12 09:14:41 +01:00
intelx.c [intel] Allow for the use of advanced TX descriptors 2015-05-16 14:54:31 +01:00
intelx.h [intel] Strip spurious VLAN tags received by virtual function NICs 2016-07-12 09:14:41 +01:00
intelxvf.c [intel] Reset all virtual function settings 2017-03-09 13:56:22 +00:00
intelxvf.h [intel] Reset all virtual function settings 2017-03-09 13:56:22 +00:00
ipoib.c [infiniband] Return status code from ib_create_cq() and ib_create_qp() 2017-03-22 11:18:02 +02:00
jme.c [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
jme.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
legacy.c [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
mii.c [mii] Add generic mii_check_link() function 2015-03-10 21:31:07 +00:00
myri10ge.c [src] Fix spelling in comments, debug messages and local variable names 2013-01-03 15:18:48 +00:00
myri10ge_mcp.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
myson.c [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
myson.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
natsemi.c [natsemi] Check for ioremap() failures 2014-07-16 15:54:49 +01:00
natsemi.h [natsemi] Fix test for addresses below 4GB 2012-04-27 01:22:02 +01:00
ncm.c [usb] Allow USB endpoints to specify a reserved header length for refills 2016-01-19 00:01:11 +00:00
ncm.h [ncm] Support setting MAC address 2015-09-14 22:45:56 +01:00
ne.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
ne2k_isa.c [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
netfront.c [base16] Add buffer size parameter to base16_encode() and base16_decode() 2015-04-24 14:41:32 +01:00
netfront.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
netvsc.c [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
netvsc.h [hyperv] Cope with Windows Server 2016 enlightenments 2017-04-28 16:20:47 +01:00
ns8390.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
ns8390.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
p80211hdr.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00
pcnet32.c [pcnet32] Eliminate redundant register read 2017-03-23 17:43:13 +02:00
pcnet32.h [build] Provide common ARRAY_SIZE() definition 2017-03-10 15:44:11 +00:00
pnic.c [legal] Include full licence text for all GPL2_OR_LATER files 2015-02-26 17:59:53 +00:00
pnic_api.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
prism2.c [legal] Include full licence text for all GPL2_OR_LATER files 2015-02-26 17:59:53 +00:00
prism2_pci.c [prism2] Remove duplicate PCI_ROM() lines 2015-04-15 11:38:10 +01:00
prism2_plx.c [pci] Rewrite unrelicensable portions of pci.h 2015-03-03 00:08:41 +00:00
realtek.c [realtek] Do not attempt to access EEPROM on RTL8169 chips 2015-04-21 17:42:36 +01:00
realtek.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
rhine.c [rhine] Rewrite VIA Rhine driver 2013-07-14 18:09:01 +02:00
rhine.h [rhine] Rewrite VIA Rhine driver 2013-07-14 18:09:01 +02:00
sis190.c [sis190] Avoid NULL pointer dereference 2017-03-22 16:12:56 +02:00
sis190.h [sis190] Fix building with GCC 6 2016-05-04 16:01:32 +01:00
sis900.c [sis900] Remove extraneous memset() with incorrect length 2017-03-21 13:55:04 +02:00
sis900.h [legal] Add a selection of FILE_LICENCE declarations 2009-05-18 08:33:25 +01:00
skeleton.c [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
skeleton.h [legal] Relicense files under GPL2_OR_LATER_OR_UBDL 2015-03-02 14:17:31 +00:00
skge.c [skge] Fix building with GCC 6 2016-05-04 16:01:32 +01:00
skge.h [build] Provide common ARRAY_SIZE() definition 2017-03-10 15:44:11 +00:00
sky2.c [sky2] Use 32-bit read to read Y2_VAUX_AVAIL 2017-03-23 17:54:03 +02:00
sky2.h [sky2] Use 32-bit read to read Y2_VAUX_AVAIL 2017-03-23 17:54:03 +02:00
smc9000.c [smc9000] Avoid using CONFIG as a preprocessor macro 2014-08-19 14:38:27 +01:00
smc9000.h [smc9000] Avoid using CONFIG as a preprocessor macro 2014-08-19 14:38:27 +01:00
smsc75xx.c [smsc75xx] Allow up to 100ms for reset to complete 2016-06-20 14:26:37 +01:00
smsc75xx.h [smsc75xx] Allow up to 100ms for reset to complete 2016-06-20 14:26:37 +01:00
smsc95xx.c [smsc95xx] Reserve headroom in received packets 2016-01-19 00:23:06 +00:00
smsc95xx.h [smsc95xx] Enable LEDs 2016-01-18 21:46:09 +00:00
sundance.c [pci] Rewrite unrelicensable portions of pci.h 2015-03-03 00:08:41 +00:00
thunderx.c [thunderx] Use ThunderxConfigProtocol to obtain board configuration 2017-03-31 09:08:13 +03:00
thunderx.h [thunderx] Add driver for Cavium ThunderX SoC NICs 2016-06-13 18:41:26 +01:00
thunderxcfg.h [thunderx] Use ThunderxConfigProtocol to obtain board configuration 2017-03-31 09:08:13 +03:00
tlan.c [tlan] Guard against failure to identify chip 2017-03-22 15:28:58 +02:00
tlan.h [legal] Update FSF mailing address in GPL licence texts 2012-07-20 19:55:45 +01:00
tulip.c [build] Fix uses of literal 0 as a NULL pointer 2013-04-28 17:13:44 +01:00
tulip.txt Update email addresses in drivers 2007-06-09 15:23:17 -04:00
velocity.c [velocity] Rewrite VIA Velocity driver 2013-07-15 11:25:51 +02:00
velocity.h [velocity] Rewrite VIA Velocity driver 2013-07-15 11:25:51 +02:00
virtio-net.c [virtio] Use host-specified MTU when available 2017-01-23 16:32:54 +00:00
virtio-net.h [virtio] Use host-specified MTU when available 2017-01-23 16:32:54 +00:00
vmxnet3.c [vmxnet3] Avoid completely filling the TX descriptor ring 2015-09-16 11:10:30 +01:00
vmxnet3.h [vmxnet3] Avoid completely filling the TX descriptor ring 2015-09-16 11:10:30 +01:00
w89c840.c [w89c840] Avoid potential array overrun 2017-03-22 15:59:27 +02:00
wd.c [ns8390] Use stub files instead of src/Config 2008-06-30 12:26:12 -07:00
wlan_compat.h [prism2] Use standard type names 2013-03-27 15:16:52 +00:00