opengnsys_ipxe/src
Michael Brown c89a446cf0 [efi] Run at TPL_CALLBACK to protect against UEFI timers
As noted in the comments, UEFI manages to combines the all of the
worst aspects of both a polling design (inefficiency and inability to
sleep until something interesting happens) and of an interrupt-driven
design (the complexity of code that could be preempted at any time,
thanks to UEFI timers).

This causes problems in particular for UEFI USB keyboards: the
keyboard driver calls UsbAsyncInterruptTransfer() to set up a periodic
timer which is used to poll the USB bus.  This poll may interrupt a
critical section within iPXE, typically resulting in list corruption
and either a hang or reboot.

Work around this problem by mirroring the BIOS design, in which we run
with interrupts disabled almost all of the time.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
2018-02-20 10:56:31 +00:00
..
arch [build] Avoid use of "ld --oformat binary" 2018-01-02 21:26:40 +01:00
bin Rename .cvsignore files to .gitignore 2007-06-09 22:57:00 +01:00
config [http] Add support for NTLM authentication 2017-11-12 18:52:04 +00:00
core [http] Allow for domain names within NTLM user names 2018-02-19 11:58:28 +00:00
crypto [ntlm] Add support for NTLM authentication mechanism 2017-11-12 18:52:03 +00:00
doc [build] Rename gPXE to iPXE 2010-04-19 23:43:39 +01:00
drivers [xhci] Consume event TRB before reporting completion to USB core 2018-02-19 18:59:45 +00:00
hci [mucurses] Avoid potential division by zero 2017-07-04 12:51:53 +01:00
image [crypto] Expose pem_asn1() for use with non-image data 2017-06-20 10:14:07 +01:00
include [http] Allow for domain names within NTLM user names 2018-02-19 11:58:28 +00:00
interface [efi] Run at TPL_CALLBACK to protect against UEFI timers 2018-02-20 10:56:31 +00:00
libgcc [libgcc] Provide __divmoddi4() 2016-05-05 23:42:57 +01:00
net [http] Allow for domain names within NTLM user names 2018-02-19 11:58:28 +00:00
scripts [efi] Centralise architecture-independent EFI Makefile and linker script 2016-03-12 21:47:13 +00:00
tests [ntlm] Add support for NTLM authentication mechanism 2017-11-12 18:52:03 +00:00
usr [image] Omit URI query string and fragment from download progress messages 2017-12-28 13:42:44 +00:00
util [efi] Allow for building with older versions of elf.h system header 2017-09-24 19:26:58 +01:00
.gitignore [build] Add support for local configuration files 2010-03-26 19:07:22 +00:00
Makefile [build] Exclude selected directories from Secure Boot builds 2017-09-18 14:38:12 +01:00
Makefile.efi [efi] Centralise architecture-independent EFI Makefile and linker script 2016-03-12 21:47:13 +00:00
Makefile.housekeeping [build] Exclude selected directories from Secure Boot builds 2017-09-18 14:38:12 +01:00
doxygen.cfg [build] Remove PACKED macro 2010-05-29 23:49:47 +01:00