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 (
|
Status = gBS->CreateEvent (
|
||||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||||
TPL_CALLBACK,
|
TPL_NOTIFY,
|
||||||
EhcMonitorAsyncRequests,
|
EhcMonitorAsyncRequests,
|
||||||
Ehc,
|
Ehc,
|
||||||
&Ehc->PollTimer
|
&Ehc->PollTimer
|
||||||
|
|
|
@ -1482,7 +1482,7 @@ UhciAllocateDev (
|
||||||
|
|
||||||
Status = gBS->CreateEvent (
|
Status = gBS->CreateEvent (
|
||||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||||
TPL_CALLBACK,
|
TPL_NOTIFY,
|
||||||
UhciMonitorAsyncReqList,
|
UhciMonitorAsyncReqList,
|
||||||
Uhc,
|
Uhc,
|
||||||
&Uhc->AsyncIntMonitor
|
&Uhc->AsyncIntMonitor
|
||||||
|
|
|
@ -1822,7 +1822,7 @@ XhcCreateUsbHc (
|
||||||
//
|
//
|
||||||
Status = gBS->CreateEvent (
|
Status = gBS->CreateEvent (
|
||||||
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
EVT_TIMER | EVT_NOTIFY_SIGNAL,
|
||||||
TPL_CALLBACK,
|
TPL_NOTIFY,
|
||||||
XhcMonitorAsyncRequests,
|
XhcMonitorAsyncRequests,
|
||||||
Xhc,
|
Xhc,
|
||||||
&Xhc->PollTimer
|
&Xhc->PollTimer
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/** @file
|
/** @file
|
||||||
USB Mass Storage Driver that manages USB Mass Storage Device and produces Block I/O Protocol.
|
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
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
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
|
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||||
// to protect shared data structures.
|
// to protect shared data structures.
|
||||||
//
|
//
|
||||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
|
|
||||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||||
Status = UsbMass->Transport->Reset (UsbMass->Context, ExtendedVerification);
|
Status = UsbMass->Transport->Reset (UsbMass->Context, ExtendedVerification);
|
||||||
|
@ -117,7 +117,7 @@ UsbMassReadBlocks (
|
||||||
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||||
// to protect shared data structures.
|
// to protect shared data structures.
|
||||||
//
|
//
|
||||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||||
Media = &UsbMass->BlockIoMedia;
|
Media = &UsbMass->BlockIoMedia;
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ UsbMassWriteBlocks (
|
||||||
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
// Raise TPL to TPL_NOTIFY to serialize all its operations
|
||||||
// to protect shared data structures.
|
// to protect shared data structures.
|
||||||
//
|
//
|
||||||
OldTpl = gBS->RaiseTPL (TPL_NOTIFY);
|
OldTpl = gBS->RaiseTPL (TPL_CALLBACK);
|
||||||
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
UsbMass = USB_MASS_DEVICE_FROM_BLOCK_IO (This);
|
||||||
Media = &UsbMass->BlockIoMedia;
|
Media = &UsbMass->BlockIoMedia;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue