mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-17 02:15:02 +00:00
efi_selftest: keep devices in ExitBootServices()
When calling ExitBootServices during out unit tests we should not detach
devices as we need console output for runtime tests.
Fixes: 529441ca89
("efi_loader: Disable devices before handing over control")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
832bfad745
commit
fccd3d9c42
3 changed files with 15 additions and 4 deletions
|
@ -59,6 +59,9 @@ extern efi_handle_t efi_root;
|
||||||
/* Set to EFI_SUCCESS when initialized */
|
/* Set to EFI_SUCCESS when initialized */
|
||||||
extern efi_status_t efi_obj_list_initialized;
|
extern efi_status_t efi_obj_list_initialized;
|
||||||
|
|
||||||
|
/* Flag used by the selftest to avoid detaching devices in ExitBootServices() */
|
||||||
|
extern bool efi_st_keep_devices;
|
||||||
|
|
||||||
/* EFI system partition */
|
/* EFI system partition */
|
||||||
extern struct efi_system_partition {
|
extern struct efi_system_partition {
|
||||||
enum if_type if_type;
|
enum if_type if_type;
|
||||||
|
|
|
@ -38,6 +38,9 @@ LIST_HEAD(efi_event_queue);
|
||||||
/* Flag to disable timer activity in ExitBootServices() */
|
/* Flag to disable timer activity in ExitBootServices() */
|
||||||
static bool timers_enabled = true;
|
static bool timers_enabled = true;
|
||||||
|
|
||||||
|
/* Flag used by the selftest to avoid detaching devices in ExitBootServices() */
|
||||||
|
bool efi_st_keep_devices;
|
||||||
|
|
||||||
/* List of all events registered by RegisterProtocolNotify() */
|
/* List of all events registered by RegisterProtocolNotify() */
|
||||||
LIST_HEAD(efi_register_notify_events);
|
LIST_HEAD(efi_register_notify_events);
|
||||||
|
|
||||||
|
@ -1996,10 +1999,12 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
|
||||||
list_del(&evt->link);
|
list_del(&evt->link);
|
||||||
}
|
}
|
||||||
|
|
||||||
if IS_ENABLED(CONFIG_USB_DEVICE)
|
if (!efi_st_keep_devices) {
|
||||||
udc_disconnect();
|
if IS_ENABLED(CONFIG_USB_DEVICE)
|
||||||
board_quiesce_devices();
|
udc_disconnect();
|
||||||
dm_remove_devices_flags(DM_REMOVE_ACTIVE_ALL);
|
board_quiesce_devices();
|
||||||
|
dm_remove_devices_flags(DM_REMOVE_ACTIVE_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
/* Patch out unsupported runtime function */
|
/* Patch out unsupported runtime function */
|
||||||
efi_runtime_detach();
|
efi_runtime_detach();
|
||||||
|
|
|
@ -38,6 +38,9 @@ void efi_st_exit_boot_services(void)
|
||||||
efi_status_t ret;
|
efi_status_t ret;
|
||||||
struct efi_mem_desc *memory_map;
|
struct efi_mem_desc *memory_map;
|
||||||
|
|
||||||
|
/* Do not detach devices in ExitBootServices. We need the console. */
|
||||||
|
efi_st_keep_devices = true;
|
||||||
|
|
||||||
ret = boottime->get_memory_map(&map_size, NULL, &map_key, &desc_size,
|
ret = boottime->get_memory_map(&map_size, NULL, &map_key, &desc_size,
|
||||||
&desc_version);
|
&desc_version);
|
||||||
if (ret != EFI_BUFFER_TOO_SMALL) {
|
if (ret != EFI_BUFFER_TOO_SMALL) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue