]> git.proxmox.com Git - mirror_edk2.git/commit - MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
MdeModulePkg XhciDxe: Fix Map and Unmap inconsistency
authorStar Zeng <star.zeng@intel.com>
Thu, 24 Aug 2017 09:42:49 +0000 (17:42 +0800)
committerStar Zeng <star.zeng@intel.com>
Fri, 25 Aug 2017 09:09:23 +0000 (17:09 +0800)
commit0b9c0c65400262ee41eb8f4f4d9079fab4777437
treee8dbad561b0652ead2b1ccf3986616341d89e81f
parent9d5dfe9d74fba521011236fb4b0c8c8547e03dda
MdeModulePkg XhciDxe: Fix Map and Unmap inconsistency

We found there are loops of *2* Maps and only *1* Unmap and
the DMA buffer address is decreasing.

It is caused by the below code flow.
XhcAsyncInterruptTransfer ->
  XhcCreateUrb ->
    XhcCreateTransferTrb ->
      Map Urb->DataMap           (1)

Timer: loops of *2* Maps and only *1* Unmap
XhcMonitorAsyncRequests ->
  XhcFlushAsyncIntMap ->
    Unmap and Map Urb->DataMap   (2)
  XhcUpdateAsyncRequest ->
    XhcCreateTransferTrb ->
      Map Urb->DataMap           (3)

This patch is to eliminate (3).

Cc: Ruiyu Ni <ruiyu.ni@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>
MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c