[efi] Do not attempt EFI_USB_IO_PROTOCOL transfers during shutdown
authorMichael Brown <mcb30@ipxe.org>
Sun, 15 Sep 2019 09:40:23 +0000 (10:40 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sun, 15 Sep 2019 09:40:23 +0000 (10:40 +0100)
commit41a9a5c7b3674f0fac6d8fa3b633cde17c2df78f
tree0626878d6100aa2a3e322f4e5200b14b3a1751aa
parent4c8721331d8d658f37acf08b3596c14c0599ea52
[efi] Do not attempt EFI_USB_IO_PROTOCOL transfers during shutdown

On at least some platforms (observed with a Raspberry Pi), any attempt
to perform USB transfers via EFI_USB_IO_PROTOCOL during EFI shutdown
will lock up the system.  This is quite probably due to the already
documented failure of all EFI timers when ExitBootServices() is
called: see e.g. commit 5cf5ffea2 "[efi] Work around temporal anomaly
encountered during ExitBootServices()".

Work around this problem by refusing to poll endpoints if shutdown is
in progress, and by immediately failing any attempts to enqueue new
transfers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/usb/usbio.c