mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/Usb: Adjust TPL to not block async transfer during usb enum.
EDKII usb stack is using a TPL_CALLBACK timer to monitor async transfer request and signal event if it's done. As usb enumeration and usb mass storage block i/o read/write runs on TPL_CALLBACK and TPL_NOTIFY level respectively, It blocks usb async transfer requests, usually usb mouse /use kb, getting time to run. Without this change, user couldn't get usb mouse/kb state in time (will show a little lag from UI view) when there is other usb transactions, such as a new usb device inserted. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18169 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ea0f431cec
commit
3cf6450eb5
|
@ -1615,7 +1615,7 @@ EhcCreateUsb2Hc (
|
|||
//
|
||||
Status = gBS->CreateEvent (
|
||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||
TPL_CALLBACK,
|
||||
TPL_NOTIFY,
|
||||
EhcMonitorAsyncRequests,
|
||||
Ehc,
|
||||
&Ehc->PollTimer
|
||||
|
|
|
@ -1482,7 +1482,7 @@ UhciAllocateDev (
|
|||
|
||||
Status = gBS->CreateEvent (
|
||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||
TPL_CALLBACK,
|
||||
TPL_NOTIFY,
|
||||
UhciMonitorAsyncReqList,
|
||||
Uhc,
|
||||
&Uhc->AsyncIntMonitor
|
||||
|
|
|
@ -1822,7 +1822,7 @@ XhcCreateUsbHc (
|
|||
//
|
||||
Status = gBS->CreateEvent (
|
||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||
TPL_CALLBACK,
|
||||
TPL_NOTIFY,
|
||||
XhcMonitorAsyncRequests,
|
||||
Xhc,
|
||||
&Xhc->PollTimer
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
USB Mass Storage Driver that manages USB Mass Storage Device and produces Block I/O Protocol.
|
||||
|
||||
Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
|
@ -63,7 +63,7 @@ UsbMassReset (
|
|||
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||
// to protect shared data structures.
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
|
||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||
Status = UsbMass->Transport->Reset (UsbMass->Context, ExtendedVerification);
|
||||
|
@ -117,7 +117,7 @@ UsbMassReadBlocks (
|
|||
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||
// to protect shared data structures.
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||
Media = &UsbMass->BlockIoMedia;
|
||||
|
||||
|
@ -233,7 +233,7 @@ UsbMassWriteBlocks (
|
|||
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||
// to protect shared data structures.
|
||||
//
|
||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
||||
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||
Media = &UsbMass->BlockIoMedia;
|
||||
|
||||
|
|
Loading…
Reference in New Issue