Hi Liming,

But we met some issues that system will stuck for 5-7 minutes because of USB 
transaction error with some USB device.
And check the XHCI spec, it shows need reset endpoint when USB transaction.

Thanks,
Xianglei

From: gaoliming <gaolim...@byosoft.com.cn>
Sent: Monday, April 15, 2024 1:23 PM
To: Ni, Ray <ray...@intel.com>
Cc: Huang, Jenny <jenny.hu...@intel.com>; Shih, More <more.s...@intel.com>; 
devel@edk2.groups.io; Lewandowski, Krzysztof <krzysztof.lewandow...@intel.com>; 
Cai, Xianglei <xianglei....@intel.com>; Lewandowski, Krzysztof 
<krzysztof.lewandow...@intel.com>
Subject: 回复: [PATCH 1/1] MdeModulePkg/XhciDxe: Reset endpoint while USB 
Transaction error

Xianglei:
  Now, UEFI spec doesn’t define EFI_USB_ERR_TRANSACTION. So, we can’t update 
UsbIo.h now.

  EFI_USB_ERR_TRANSACTION is only used in XhciDxe for error condition check. I 
suggest to add comments for current code, don’t need code update.

Thanks
Liming
发件人: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>>
发送时间: 2024年4月15日 10:17
收件人: Liming Gao <gaolim...@byosoft.com.cn<mailto:gaolim...@byosoft.com.cn>>
抄送: Huang, Jenny <jenny.hu...@intel.com<mailto:jenny.hu...@intel.com>>; Shih, 
More <more.s...@intel.com<mailto:more.s...@intel.com>>; 
devel@edk2.groups.io<mailto:devel@edk2.groups.io>; Lewandowski, Krzysztof 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>; Cai, 
Xianglei <xianglei....@intel.com<mailto:xianglei....@intel.com>>; Lewandowski, 
Krzysztof 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>
主题: Re: [PATCH 1/1] MdeModulePkg/XhciDxe: Reset endpoint while USB Transaction 
error

Liming,
Can you give a R-B?

Thanks,
Ray
________________________________
From: Cai, Xianglei <xianglei....@intel.com<mailto:xianglei....@intel.com>>
Sent: Friday, April 12, 2024 9:53
To: Lewandowski, Krzysztof 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>; 
devel@edk2.groups.io<mailto:devel@edk2.groups.io> 
<devel@edk2.groups.io<mailto:devel@edk2.groups.io>>; Ni, Ray 
<ray...@intel.com<mailto:ray...@intel.com>>; Liming Gao 
<gaolim...@byosoft.com.cn<mailto:gaolim...@byosoft.com.cn>>
Cc: Huang, Jenny <jenny.hu...@intel.com<mailto:jenny.hu...@intel.com>>; Shih, 
More <more.s...@intel.com<mailto:more.s...@intel.com>>
Subject: RE: [PATCH 1/1] MdeModulePkg/XhciDxe: Reset endpoint while USB 
Transaction error


@Ni, Ray<mailto:ray...@intel.com> @Liming 
Gao<mailto:gaolim...@byosoft.com.cn>Would you like to merge the patch to 
upstream?



Thanks,

Xianglei



From: Lewandowski, Krzysztof 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>
Sent: Thursday, April 11, 2024 9:45 PM
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io>
Cc: Ni, Ray <ray...@intel.com<mailto:ray...@intel.com>>; Liming Gao 
<gaolim...@byosoft.com.cn<mailto:gaolim...@byosoft.com.cn>>; Huang, Jenny 
<jenny.hu...@intel.com<mailto:jenny.hu...@intel.com>>; Shih, More 
<more.s...@intel.com<mailto:more.s...@intel.com>>; Cai, Xianglei 
<xianglei....@intel.com<mailto:xianglei....@intel.com>>
Subject: Re: [PATCH 1/1] MdeModulePkg/XhciDxe: Reset endpoint while USB 
Transaction error



Looks good to me.

Reviewed-by: Krzysztof Lewandowski 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>

________________________________

From: Cai, Xianglei <xianglei....@intel.com<mailto:xianglei....@intel.com>>
Sent: Wednesday, April 10, 2024 09:02
To: devel@edk2.groups.io<mailto:devel@edk2.groups.io> 
<devel@edk2.groups.io<mailto:devel@edk2.groups.io>>
Cc: Cai, Xianglei <xianglei....@intel.com<mailto:xianglei....@intel.com>>; Ni, 
Ray <ray...@intel.com<mailto:ray...@intel.com>>; Liming Gao 
<gaolim...@byosoft.com.cn<mailto:gaolim...@byosoft.com.cn>>; Lewandowski, 
Krzysztof 
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>; 
Huang, Jenny <jenny.hu...@intel.com<mailto:jenny.hu...@intel.com>>; Shih, More 
<more.s...@intel.com<mailto:more.s...@intel.com>>
Subject: [PATCH 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.
Also add the error code for USB Transaction error
since UEFI spec don't have the related definition.

Cc: Ray Ni                                
<ray...@intel.com<mailto:ray...@intel.com>>
Cc: Liming Gao                            
<gaolim...@byosoft.com.cn<mailto:gaolim...@byosoft.com.cn>>
Cc: Krzysztof Lewandowski    
<krzysztof.lewandow...@intel.com<mailto:krzysztof.lewandow...@intel.com>>
Cc: Jenny Huang                           
<jenny.hu...@intel.com<mailto:jenny.hu...@intel.com>>
Cc: More Shih                             
<more.s...@intel.com<mailto:more.s...@intel.com>>

Signed-off-by: Xianglei Cai 
<xianglei....@intel.com<mailto:xianglei....@intel.com>>
---
 MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c      |  2 +-
 MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c |  2 +-
 MdePkg/Include/Protocol/UsbIo.h          | 21 +++++++++++----------
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c 
b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c
index f4e61d223c1b..63cc29b26536 100644
--- a/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c
+++ b/MdeModulePkg/Bus/Pci/XhciDxe/Xhci.c
@@ -825,7 +825,7 @@ XhcTransfer (
   *TransferResult = Urb->Result;
   *DataLength     = Urb->Completed;

-  if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == 
EFI_USB_ERR_BABBLE)) {
+  if ((*TransferResult == EFI_USB_ERR_STALL) || (*TransferResult == 
EFI_USB_ERR_BABBLE) || (*TransferResult == EFI_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 05528a478baf..e77852f62f10 100644
--- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
+++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
@@ -1193,7 +1193,7 @@ XhcCheckUrbResult (
         goto EXIT;

       case TRB_COMPLETION_USB_TRANSACTION_ERROR:
-        CheckedUrb->Result  |= EFI_USB_ERR_TIMEOUT;
+        CheckedUrb->Result  |= EFI_USB_ERR_TRANSACTION;
         CheckedUrb->Finished = TRUE;
         DEBUG ((DEBUG_ERROR, "XhcCheckUrbResult: TRANSACTION_ERROR! 
Completecode = %x\n", EvtTrb->Completecode));
         goto EXIT;
diff --git a/MdePkg/Include/Protocol/UsbIo.h b/MdePkg/Include/Protocol/UsbIo.h
index a780b4e07b44..211ef0c94156 100644
--- a/MdePkg/Include/Protocol/UsbIo.h
+++ b/MdePkg/Include/Protocol/UsbIo.h
@@ -50,16 +50,17 @@ typedef enum {
 //
 // USB Transfer Results
 //
-#define EFI_USB_NOERROR         0x00
-#define EFI_USB_ERR_NOTEXECUTE  0x01
-#define EFI_USB_ERR_STALL       0x02
-#define EFI_USB_ERR_BUFFER      0x04
-#define EFI_USB_ERR_BABBLE      0x08
-#define EFI_USB_ERR_NAK         0x10
-#define EFI_USB_ERR_CRC         0x20
-#define EFI_USB_ERR_TIMEOUT     0x40
-#define EFI_USB_ERR_BITSTUFF    0x80
-#define EFI_USB_ERR_SYSTEM      0x100
+#define EFI_USB_NOERROR          0x00
+#define EFI_USB_ERR_NOTEXECUTE   0x01
+#define EFI_USB_ERR_STALL        0x02
+#define EFI_USB_ERR_BUFFER       0x04
+#define EFI_USB_ERR_BABBLE       0x08
+#define EFI_USB_ERR_NAK          0x10
+#define EFI_USB_ERR_CRC          0x20
+#define EFI_USB_ERR_TIMEOUT      0x40
+#define EFI_USB_ERR_BITSTUFF     0x80
+#define EFI_USB_ERR_SYSTEM       0x100
+#define EFI_USB_ERR_TRANSACTION  0x200

 /**
   Async USB transfer callback routine.
--
2.42.0.windows.2


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#117751): https://edk2.groups.io/g/devel/message/117751
Mute This Topic: https://groups.io/mt/105530326/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to