u-boot/lib/efi_loader
Tom Rini 3f73e79de8 efi: Call bootm_disable_interrupts earlier in efi_exit_boot_services
If we look at the path that bootm/booti take when preparing to boot the
OS, we see that as part of (or prior to calling do_bootm_states,
explicitly) the process, bootm_disable_interrupts() is called prior to
announce_and_cleanup() which is where udc_disconnect() /
board_quiesce_devices() / dm_remove_devices_flags() are called from.  In
the EFI path, these are called afterwards.  In efi_exit_boot_services()
however we have been calling bootm_disable_interrupts() after the above
functions, as part of ensuring that we disable interrupts as required
by the spec.  However, bootm_disable_interrupts() is also where we go
and call usb_stop().  While this has been fine before, on the TI J721E
platform this leads us to an exception.  This exception seems likely to
be the case that we're trying to stop devices that we have already
disabled clocks for.  The most direct way to handle this particular
problem is to make EFI behave like the do_bootm_states() process and
ensure we call bootm_disable_interrupts() prior to ending up in
usb_stop().

Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
Cc: Simon Glass <sjg@chromium.org>
Suggested-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
2021-11-26 21:30:59 +01:00
..
.gitignore efi_loader: git ignore helloworld_efi.S 2020-01-07 18:08:20 +01:00
efi_acpi.c efi_loader: ACPI tables must be in EfiACPIReclaimMemory 2021-02-26 16:17:43 +01:00
efi_bootmgr.c efi_loader: Cleanup get_var duplication 2021-04-10 12:00:24 +02:00
efi_boottime.c efi: Call bootm_disable_interrupts earlier in efi_exit_boot_services 2021-11-26 21:30:59 +01:00
efi_capsule.c efi_loader: capsule: Record capsule result only if capsule is read 2021-11-20 10:53:00 +01:00
efi_console.c efi_loader: missing parentheses in query_console_size 2021-07-02 09:37:01 +02:00
efi_device_path.c efi_loader: add UEFI GPT measurement 2021-10-26 21:32:46 +02:00
efi_device_path_to_text.c efi_loader: use EfiBootServicesData for DP to text 2021-08-17 17:24:08 +02:00
efi_device_path_utilities.c SPDX: Convert a few files that were missed before 2018-05-10 20:38:35 -04:00
efi_disk.c efi_loader: Drop code that doesn't work with driver model 2021-10-21 03:46:03 +02:00
efi_dt_fixup.c efi_loader: fix memory type for memory reservation block 2021-03-25 20:07:18 +01:00
efi_esrt.c efi_loader: esrt: Remove incorrect invocations of EFI_CALL macro 2021-04-17 20:01:31 +02:00
efi_file.c efi_loader: provide file attributes in EFI_FILE_PROTOCOL.Read() 2021-07-12 20:30:48 +02:00
efi_firmware.c efi_loader: capsule: Remove the check for capsule_authentication_enabled environment variable 2021-05-18 12:36:12 +02:00
efi_freestanding.c efi_loader: fix freestanding memmove() 2020-03-22 11:06:23 +01:00
efi_gop.c efi_loader: GOP: Fix 30bpp block transfer support 2021-10-09 18:50:31 +02:00
efi_helper.c efi_loader: efi_dp_from_lo() should skip VenMedia node 2021-10-21 03:46:04 +02:00
efi_hii.c efi_loader: ListPackageLists() return EFI_NOT_FOUND 2019-06-20 22:26:19 +00:00
efi_hii_config.c efi_loader: remove EFI_HII_CONFIG_ROUTING_PROTOCOL 2020-12-10 09:15:32 +01:00
efi_image_loader.c efi_loader: Fix loaded image alignment 2021-10-21 03:46:04 +02:00
efi_load_initrd.c efi_loader: avoid multiple local copies of lf2_initrd_guid 2021-10-21 03:46:04 +02:00
efi_load_options.c efi_loader: move load options to new module 2021-01-19 18:56:08 +01:00
efi_memory.c efi_loader: Fix loaded image alignment 2021-10-21 03:46:04 +02:00
efi_net.c efi_loader: fix use after free in receive path 2020-10-19 22:59:53 +02:00
efi_rng.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
efi_root_node.c efi_loader: remove EFI_UNICODE_COLLATION_PROTOCOL 2021-01-20 08:17:17 +01:00
efi_runtime.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
efi_setup.c efi_loader: clear OsIndications 2021-07-02 09:37:01 +02:00
efi_signature.c efi_loader: simplify efi_sigstore_parse_sigdb() 2021-10-25 21:13:07 +02:00
efi_smbios.c efi_loader: add SMBIOS table measurement 2021-10-26 17:58:14 +02:00
efi_string.c efi_loader: missing include in efi_string.c 2021-04-24 06:53:40 +02:00
efi_tcg2.c efi_loader: startup the tpm device when installing the protocol 2021-11-20 10:53:01 +01:00
efi_unicode_collation.c efi_loader: carve out utf_to_cp() 2021-03-07 17:37:13 +01:00
efi_var_common.c efi_loader: function to get GUID for variable name 2021-10-25 21:13:06 +02:00
efi_var_file.c efi_loader: don't load Shim's MOK database from file 2021-10-21 03:46:04 +02:00
efi_var_mem.c efi_loader: treat UEFI variable name as const 2021-10-25 21:13:06 +02:00
efi_var_seed.S efi_loader: pre-seed UEFI variables 2020-07-16 12:37:02 +02:00
efi_variable.c efi_loader: treat UEFI variable name as const 2021-10-25 21:13:06 +02:00
efi_variable_tee.c efi_loader: treat UEFI variable name as const 2021-10-25 21:13:06 +02:00
efi_watchdog.c efi_loader: simplify efi_watchdog_timer_notify() 2021-09-11 11:02:02 +02:00
helloworld.c efi_loader: typo 'devide path' 2021-03-31 06:34:33 +00:00
Kconfig efi: Create a 64-bit app 2021-11-07 18:36:55 +01:00
Makefile Revert "efi_capsule: Move signature from DTB to .rodata" 2021-09-18 03:47:50 -06:00