mirror of https://github.com/ipxe/ipxe.git
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> |
||
---|---|---|
.. | ||
arch | ||
bin | ||
config | ||
core | ||
crypto | ||
doc | ||
drivers | ||
hci | ||
image | ||
include | ||
interface | ||
libgcc | ||
net | ||
scripts | ||
tests | ||
usr | ||
util | ||
.gitignore | ||
Makefile | ||
Makefile.efi | ||
Makefile.housekeeping | ||
doxygen.cfg |