audk/MdeModulePkg/Bus/Pci
Star Zeng 0cd6452503 MdeModulePkg EhciDxe: Use common buffer for AsyncInterruptTransfer
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1274

In current code, EhcMonitorAsyncRequests (timer handler) will do
unmap and map operations for AsyncIntTransfers to "Flush data from
PCI controller specific address to mapped system memory address".
EhcMonitorAsyncRequests
  EhcFlushAsyncIntMap
    PciIo->Unmap
      IoMmu->SetAttribute
    PciIo->Map
      IoMmu->SetAttribute

This may impact the boot performance.

Since the data buffer for EhcMonitorAsyncRequests is internal
buffer, we can allocate common buffer by PciIo->AllocateBuffer
and map the buffer with EfiPciIoOperationBusMasterCommonBuffer,
then the unmap and map operations can be removed.

///
/// Provides both read and write access to system memory by
/// both the processor and a bus master. The buffer is coherent
/// from both the processor's and the bus master's point of view.
///
EfiPciIoOperationBusMasterCommonBuffer,

Test done:
USB KB works normally.
USB disk read/write works normally.

Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Hao Wu <hao.a.wu@intel.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Hao Wu <hao.a.wu@intel.com>
2018-10-28 21:20:08 +08:00
..
EhciDxe MdeModulePkg EhciDxe: Use common buffer for AsyncInterruptTransfer 2018-10-28 21:20:08 +08:00
EhciPei MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
IdeBusPei MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
IncompatiblePciDeviceSupportDxe MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
NonDiscoverablePciDeviceDxe MdeModulePkg/NonDiscoverablePciDeviceDxe: expose unique B/D/F identifiers 2018-10-10 11:14:29 +02:00
NvmExpressDxe MdeModulePkg/NvmExpressDxe: Refine PassThru IO queue creation behavior 2018-10-25 12:41:37 +08:00
NvmExpressPei MdeModulePkg: Remove redundant library classes and GUIDs 2018-08-20 14:53:45 +08:00
PciBusDxe MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
PciHostBridgeDxe MdeModulePkg/PciHostBridge: Move declaration of mIoMmu to header file 2018-09-26 12:12:53 +08:00
PciSioSerialDxe MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
SataControllerDxe MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
SdMmcPciHcDxe MdeModulePkg/SdMmcPciHcDxe: Allow additional SDHCI versions 2018-10-12 15:46:10 +08:00
SdMmcPciHcPei MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UfsPciHcDxe MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UfsPciHcPei MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
UhciDxe MdeModulePkg/Usb: Make sure data from HW is no more than expected 2018-10-17 11:03:58 +08:00
UhciPei MdeModulePkg: Removing ipf which is no longer supported from edk2. 2018-09-06 15:25:16 +08:00
XhciDxe MdeModulePkg XhciDxe: Use common buffer for AsyncInterruptTransfer 2018-10-28 21:20:08 +08:00
XhciPei MdeModulePkg Xhci: Handle value 5 in Port Speed field of PORTSC 2018-10-23 11:17:32 +08:00