REF:https://bugzilla.tianocore.org/show_bug.cgi?id=2948 XhciDxe uses the timer functionality provided by the boot services table to detect timeout conditions. This breaks the driver's ExitBootServices call back, as CoreExitBootServices halts the timer before signaling the ExitBootServices event. If the host controller fails to halt in the call back, the timeout condition will never occur and the boot gets stuck in an indefinite spin loop. Use the free running timer provided by TimerLib to calculate timeouts, avoiding the potential hang. Cc: Hao A Wu <hao.a.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Signed-off-by: Patrick Henz <patrick.henz@hpe.com> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
73 lines
1.9 KiB
INI
73 lines
1.9 KiB
INI
## @file
|
|
# The XhciDxe driver is responsible for managing the behavior of XHCI controller.
|
|
# It implements the interfaces of monitoring the status of all ports and transferring
|
|
# Control, Bulk, Interrupt and Isochronous requests to those attached usb LS/FS/HS/SS devices.
|
|
#
|
|
# (C) Copyright 2023 Hewlett Packard Enterprise Development LP<BR>
|
|
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
#
|
|
#
|
|
##
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010005
|
|
BASE_NAME = XhciDxe
|
|
MODULE_UNI_FILE = XhciDxe.uni
|
|
FILE_GUID = B7F50E91-A759-412c-ADE4-DCD03E7F7C28
|
|
MODULE_TYPE = UEFI_DRIVER
|
|
VERSION_STRING = 1.0
|
|
|
|
ENTRY_POINT = XhcDriverEntryPoint
|
|
|
|
#
|
|
# The following information is for reference only and not required by the build tools.
|
|
#
|
|
# VALID_ARCHITECTURES = IA32 X64 EBC ARM AARCH64
|
|
#
|
|
# DRIVER_BINDING = gXhciDriverBinding
|
|
# COMPONENT_NAME = gXhciComponentName
|
|
# COMPONENT_NAME2 = gXhciComponentName2
|
|
#
|
|
|
|
[Sources]
|
|
Xhci.c
|
|
XhciReg.c
|
|
XhciSched.c
|
|
UsbHcMem.c
|
|
UsbHcMem.h
|
|
ComponentName.c
|
|
ComponentName.h
|
|
Xhci.h
|
|
XhciReg.h
|
|
XhciSched.h
|
|
|
|
[Packages]
|
|
MdePkg/MdePkg.dec
|
|
|
|
[LibraryClasses]
|
|
MemoryAllocationLib
|
|
BaseLib
|
|
UefiLib
|
|
UefiBootServicesTableLib
|
|
UefiDriverEntryPoint
|
|
BaseMemoryLib
|
|
DebugLib
|
|
ReportStatusCodeLib
|
|
TimerLib
|
|
|
|
[Guids]
|
|
gEfiEventExitBootServicesGuid ## SOMETIMES_CONSUMES ## Event
|
|
|
|
[Protocols]
|
|
gEfiPciIoProtocolGuid ## TO_START
|
|
gEfiUsb2HcProtocolGuid ## BY_START
|
|
|
|
# [Event]
|
|
# EVENT_TYPE_PERIODIC_TIMER ## CONSUMES
|
|
#
|
|
|
|
[UserExtensions.TianoCore."ExtraFiles"]
|
|
XhciDxeExtra.uni
|