Reviewed-by: Liming Gao <gaolim...@byosoft.com.cn> > -----邮件原件----- > 发件人: devel@edk2.groups.io <devel@edk2.groups.io> 代表 Xianglei Cai > 发送时间: 2024年4月15日 14:55 > 收件人: devel@edk2.groups.io > 抄送: Xianglei Cai <xianglei....@intel.com>; Ray Ni <ray...@intel.com>; > Liming Gao <gaolim...@byosoft.com.cn>; Krzysztof Lewandowski > <krzysztof.lewandow...@intel.com>; Jenny Huang <jenny.hu...@intel.com>; > More Shih <more.s...@intel.com> > 主题: [edk2-devel] [PATCH V2 1/1] MdeModulePkg/XhciDxe: Reset endpoint > while USB Transaction error > > https://bugzilla.tianocore.org/show_bug.cgi?id=4556 > > Based on XHCI spec 4.8.3, software should do the > reset endpoint while USB Transaction occur. > Add the error code for USB Transaction error > since UEFI spec don't have the related definition. > > Cc: Ray Ni <ray...@intel.com> > Cc: Liming Gao <gaolim...@byosoft.com.cn> > Cc: Krzysztof Lewandowski <krzysztof.lewandow...@intel.com> > Cc: Jenny Huang <jenny.hu...@intel.com> > Cc: More Shih <more.s...@intel.com> > Signed-off-by: Xianglei Cai <xianglei....@intel.com> > Reviewed-by: Krzysztof Lewandowski <krzysztof.lewandow...@intel.com> > --- > MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c | 5 ++++- > MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 5 ++++- > MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.h | 7 +++++++ > 3 files changed, 15 insertions(+), 2 deletions(-) > > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c > b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c > index f4e61d223c1b..cf6b32959e68 100644 > --- a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c > @@ -825,7 +825,10 @@ XhcTransfer ( > *TransferResult = Urb->Result; > *DataLength = Urb->Completed; > > - if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == > EFI_USB_ERR_BABBLE)) { > + // > + // Based on XHCI spec 4.8.3, software should do the reset endpoint while > USB Transaction occur. > + // > + if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == > EFI_USB_ERR_BABBLE) || (*TransferResult == > EDKII_USB_ERR_TRANSACTION)) { > ASSERT (Status == EFI_DEVICE_ERROR); > RecoveryStatus = XhcRecoverHaltedEndpoint (Xhc, Urb); > if (EFI_ERROR (RecoveryStatus)) { > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > index 5d735008ba31..a97ed44dbfc3 100644 > --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c > @@ -1192,8 +1192,11 @@ XhcCheckUrbResult ( > DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: ERR_BUFFER! > Completecode = %x\n", EvtTrb->Completecode)); > goto EXIT; > > + // > + // Based on XHCI spec 4.8.3, software should do the reset endpoint > while USB Transaction occur. > + // > case TRB_COMPLETION_USB_TRANSACTION_ERROR: > - CheckedUrb->Result |= EFI_USB_ERR_TIMEOUT; > + CheckedUrb->Result |= EDKII_USB_ERR_TRANSACTION; > CheckedUrb->Finished = TRUE; > DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: > TRANSACTION_ERROR! Completecode = %x\n", EvtTrb->Completecode)); > goto EXIT; > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.h > b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.h > index 7c85f7993b5c..e606e212a1d3 100644 > --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.h > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.h > @@ -78,6 +78,13 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #define TRB_COMPLETION_STOPPED 26 > #define TRB_COMPLETION_STOPPED_LENGTH_INVALID 27 > > +// > +// USB Transfer Results Internal Definition > +// Based on XHCI spec 4.8.3, software should do the reset endpoint while > USB Transaction occur. > +// Add the error code for USB Transaction error since UEFI spec don't have > the related definition. > +// > +#define EDKII_USB_ERR_TRANSACTION 0x200 > + > // > // The topology string used to present usb device location > // > -- > 2.42.0.windows.2 > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#117771): https://edk2.groups.io/g/devel/message/117771 Mute This Topic: https://groups.io/mt/105532714/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-