[edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure

Heng Luo posted 1 patch 3 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/edk2 tags/patchew/20201023012611.4808-1-heng.luo@intel.com
MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
[edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Heng Luo 3 years, 6 months ago
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007

Currently UsbDevContext is not cleaned up if USB slot initialization is
failed, the wrong context data will affect next USB devices and
the USB devices can not be enumerated.
Need to disable slot if USB slot initialization is failed.

Below test cases are passed on UpXtreme:
a. USB 3.0 thumb drives can be recognized in UEFI shell
b. SUT can boot to Puppylinux  from USB3.0 mass storage,
 the storage can be recognized in linux
c. Plug in a USB  keyboard (hot plug) and enumeration is OK
 in UEFI shell and linux
d. Plug in a USB mouse(hot plug) and enumeration is OK in linux.

Cc: Ray Ni <ray.ni@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Signed-off-by: Heng Luo <heng.luo@intel.com>
---
 MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
index 9cb115363c..00e9cc63d6 100644
--- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
+++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
@@ -2,7 +2,7 @@
 
   XHCI transfer scheduling routines.
 
-Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2011 - 2020, Intel Corporation. All rights reserved.<BR>
 Copyright (c) Microsoft Corporation.<BR>
 SPDX-License-Identifier: BSD-2-Clause-Patent
 
@@ -2279,6 +2279,9 @@ XhcInitializeDeviceSlot (
     DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)->Slot.DeviceAddress;
     DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));
     Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;
+  } else {
+    DEBUG ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));
+    XhcDisableSlotCmd (Xhc, SlotId);
   }
 
   return Status;
@@ -2489,7 +2492,11 @@ XhcInitializeDeviceSlot64 (
     DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)->Slot.DeviceAddress;
     DEBUG ((EFI_D_INFO, "    Address %d assigned successfully\n", DeviceAddress));
     Xhc->UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;
+  } else {
+    DEBUG ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));
+    XhcDisableSlotCmd64 (Xhc, SlotId);
   }
+
   return Status;
 }
 
-- 
2.24.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66550): https://edk2.groups.io/g/devel/message/66550
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Wu, Hao A 3 years, 6 months ago
> -----Original Message-----
> From: Luo, Heng <heng.luo@intel.com>
> Sent: Friday, October 23, 2020 9:26 AM
> To: devel@edk2.groups.io
> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> initialization failure
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
> 
> Currently UsbDevContext is not cleaned up if USB slot initialization is failed, the
> wrong context data will affect next USB devices and the USB devices can not be
> enumerated.
> Need to disable slot if USB slot initialization is failed.
> 
> Below test cases are passed on UpXtreme:
> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can boot to
> Puppylinux  from USB3.0 mass storage,  the storage can be recognized in linux c.
> Plug in a USB  keyboard (hot plug) and enumeration is OK  in UEFI shell and linux
> d. Plug in a USB mouse(hot plug) and enumeration is OK in linux.


Reviewed-by: Hao A Wu <hao.a.wu@intel.com>

Best Regards,
Hao Wu


> 
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Signed-off-by: Heng Luo <heng.luo@intel.com>
> ---
>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> index 9cb115363c..00e9cc63d6 100644
> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> @@ -2,7 +2,7 @@
>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018, Intel
> Corporation. All rights reserved.<BR>+Copyright (c) 2011 - 2020, Intel
> Corporation. All rights reserved.<BR> Copyright (c) Microsoft Corporation.<BR>
> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2279,6 +2279,9 @@
> XhcInitializeDeviceSlot (
>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
> >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> successfully\n", DeviceAddress));     Xhc->UsbDevContext[SlotId].XhciDevAddr =
> DeviceAddress;+  } else {+    DEBUG ((DEBUG_INFO, "    Address %d assigned
> unsuccessfully\n"));+    XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -
> 2489,7 +2492,11 @@ XhcInitializeDeviceSlot64 (
>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
> >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> successfully\n", DeviceAddress));     Xhc->UsbDevContext[SlotId].XhciDevAddr =
> DeviceAddress;+  } else {+    DEBUG ((DEBUG_INFO, "    Address %d assigned
> unsuccessfully\n"));+    XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
> 2.24.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66570): https://edk2.groups.io/g/devel/message/66570
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Wu, Hao A 3 years, 6 months ago
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Friday, October 23, 2020 8:46 PM
> To: Luo, Heng <heng.luo@intel.com>; devel@edk2.groups.io
> Cc: Ni, Ray <ray.ni@intel.com>
> Subject: Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle
> for USB slot initialization failure
> 
> > -----Original Message-----
> > From: Luo, Heng <heng.luo@intel.com>
> > Sent: Friday, October 23, 2020 9:26 AM
> > To: devel@edk2.groups.io
> > Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
> > Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> > initialization failure
> >
> > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
> >
> > Currently UsbDevContext is not cleaned up if USB slot initialization
> > is failed, the wrong context data will affect next USB devices and the
> > USB devices can not be enumerated.
> > Need to disable slot if USB slot initialization is failed.
> >
> > Below test cases are passed on UpXtreme:
> > a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can
> > boot to Puppylinux  from USB3.0 mass storage,  the storage can be
> recognized in linux c.
> > Plug in a USB  keyboard (hot plug) and enumeration is OK  in UEFI
> > shell and linux d. Plug in a USB mouse(hot plug) and enumeration is OK in
> linux.
> 
> 
> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>


Pushed via:
PR: https://github.com/tianocore/edk2/pull/1049
Commit: https://github.com/tianocore/edk2/commit/a3212009d95bbcba7d08076aba2eee51eb1f8e7c

Best Regards,
Hao Wu

> 
> Best Regards,
> Hao Wu
> 
> 
> >
> > Cc: Ray Ni <ray.ni@intel.com>
> > Cc: Hao A Wu <hao.a.wu@intel.com>
> > Signed-off-by: Heng Luo <heng.luo@intel.com>
> > ---
> >  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
> >  1 file changed, 8 insertions(+), 1 deletion(-)
> >
> > diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> > b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> > index 9cb115363c..00e9cc63d6 100644
> > --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> > +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> > @@ -2,7 +2,7 @@
> >     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018,
> > Intel Corporation. All rights reserved.<BR>+Copyright (c) 2011 - 2020,
> > Intel Corporation. All rights reserved.<BR> Copyright (c) Microsoft
> > Corporation.<BR>
> > SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2279,6 +2279,9 @@
> > XhcInitializeDeviceSlot (
> >      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
> > >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> > successfully\n", DeviceAddress));     Xhc-
> >UsbDevContext[SlotId].XhciDevAddr =
> > DeviceAddress;+  } else {+    DEBUG ((DEBUG_INFO, "    Address %d
> assigned
> > unsuccessfully\n"));+    XhcDisableSlotCmd (Xhc, SlotId);   }    return
> Status;@@ -
> > 2489,7 +2492,11 @@ XhcInitializeDeviceSlot64 (
> >      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
> > >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> > successfully\n", DeviceAddress));     Xhc-
> >UsbDevContext[SlotId].XhciDevAddr =
> > DeviceAddress;+  } else {+    DEBUG ((DEBUG_INFO, "    Address %d
> assigned
> > unsuccessfully\n"));+    XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return
> Status; } --
> > 2.24.0.windows.2
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66615): https://edk2.groups.io/g/devel/message/66615
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Wu, Hao A 3 years, 6 months ago
Hello Jon,

Could you help to check of this version will co-work with your patch?
Thanks in advance.

Best Regards,
Hao Wu

> -----Original Message-----
> From: Luo, Heng <heng.luo@intel.com>
> Sent: Friday, October 23, 2020 9:26 AM
> To: devel@edk2.groups.io
> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> initialization failure
> 
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
> 
> Currently UsbDevContext is not cleaned up if USB slot initialization is failed,
> the wrong context data will affect next USB devices and the USB devices can
> not be enumerated.
> Need to disable slot if USB slot initialization is failed.
> 
> Below test cases are passed on UpXtreme:
> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can boot to
> Puppylinux  from USB3.0 mass storage,  the storage can be recognized in
> linux c. Plug in a USB  keyboard (hot plug) and enumeration is OK  in UEFI
> shell and linux d. Plug in a USB mouse(hot plug) and enumeration is OK in
> linux.
> 
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Signed-off-by: Heng Luo <heng.luo@intel.com>
> ---
>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> index 9cb115363c..00e9cc63d6 100644
> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> @@ -2,7 +2,7 @@
>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018, Intel
> Corporation. All rights reserved.<BR>+Copyright (c) 2011 - 2020, Intel
> Corporation. All rights reserved.<BR> Copyright (c) Microsoft
> Corporation.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2279,6
> +2279,9 @@ XhcInitializeDeviceSlot (
>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
> >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> successfully\n", DeviceAddress));     Xhc-
> >UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -2489,7 +2492,11 @@
> XhcInitializeDeviceSlot64 (
>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
> >Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> successfully\n", DeviceAddress));     Xhc-
> >UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
> 2.24.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66552): https://edk2.groups.io/g/devel/message/66552
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Jon Hunter 3 years, 6 months ago
Hi Hao,

Thanks. Yes this works with my patch. I will send out a V2 for my patch
shortly. For this patch you can add my ...

Tested-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>

Cheers
Jon

On 23/10/2020 03:52, Wu, Hao A wrote:
> Hello Jon,
> 
> Could you help to check of this version will co-work with your patch?
> Thanks in advance.
> 
> Best Regards,
> Hao Wu
> 
>> -----Original Message-----
>> From: Luo, Heng <heng.luo@intel.com>
>> Sent: Friday, October 23, 2020 9:26 AM
>> To: devel@edk2.groups.io
>> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
>> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
>> initialization failure
>>
>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
>>
>> Currently UsbDevContext is not cleaned up if USB slot initialization is failed,
>> the wrong context data will affect next USB devices and the USB devices can
>> not be enumerated.
>> Need to disable slot if USB slot initialization is failed.
>>
>> Below test cases are passed on UpXtreme:
>> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can boot to
>> Puppylinux  from USB3.0 mass storage,  the storage can be recognized in
>> linux c. Plug in a USB  keyboard (hot plug) and enumeration is OK  in UEFI
>> shell and linux d. Plug in a USB mouse(hot plug) and enumeration is OK in
>> linux.
>>
>> Cc: Ray Ni <ray.ni@intel.com>
>> Cc: Hao A Wu <hao.a.wu@intel.com>
>> Signed-off-by: Heng Luo <heng.luo@intel.com>
>> ---
>>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>> index 9cb115363c..00e9cc63d6 100644
>> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>> @@ -2,7 +2,7 @@
>>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018, Intel
>> Corporation. All rights reserved.<BR>+Copyright (c) 2011 - 2020, Intel
>> Corporation. All rights reserved.<BR> Copyright (c) Microsoft
>> Corporation.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent @@ -2279,6
>> +2279,9 @@ XhcInitializeDeviceSlot (
>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
>> successfully\n", DeviceAddress));     Xhc-
>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
>> XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -2489,7 +2492,11 @@
>> XhcInitializeDeviceSlot64 (
>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
>> successfully\n", DeviceAddress));     Xhc-
>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
>> XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
>> 2.24.0.windows.2
> 

-- 
nvpublic


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66564): https://edk2.groups.io/g/devel/message/66564
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Wu, Hao A 3 years, 6 months ago
Hello Jon,

Thanks for the testing effort.
If you patch is not urgent, could you hold your v2 patch until I merge Heng's
patch into the codebase?

I will do it early next week and will inform you as soon as it is done.
Does it sound good to you? Sorry for the inconvenience.

Best Regards,
Hao Wu

> -----Original Message-----
> From: Jon Hunter <jonathanh@nvidia.com>
> Sent: Friday, October 23, 2020 5:50 PM
> To: Wu, Hao A <hao.a.wu@intel.com>; Luo, Heng <heng.luo@intel.com>;
> devel@edk2.groups.io; jbrasen@nvidia.com
> Cc: Ni, Ray <ray.ni@intel.com>
> Subject: Re: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> initialization failure
> 
> Hi Hao,
> 
> Thanks. Yes this works with my patch. I will send out a V2 for my patch shortly.
> For this patch you can add my ...
> 
> Tested-by: Jon Hunter <jonathanh@nvidia.com>
> Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
> 
> Cheers
> Jon
> 
> On 23/10/2020 03:52, Wu, Hao A wrote:
> > Hello Jon,
> >
> > Could you help to check of this version will co-work with your patch?
> > Thanks in advance.
> >
> > Best Regards,
> > Hao Wu
> >
> >> -----Original Message-----
> >> From: Luo, Heng <heng.luo@intel.com>
> >> Sent: Friday, October 23, 2020 9:26 AM
> >> To: devel@edk2.groups.io
> >> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
> >> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> >> initialization failure
> >>
> >> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
> >>
> >> Currently UsbDevContext is not cleaned up if USB slot initialization
> >> is failed, the wrong context data will affect next USB devices and
> >> the USB devices can not be enumerated.
> >> Need to disable slot if USB slot initialization is failed.
> >>
> >> Below test cases are passed on UpXtreme:
> >> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can
> >> boot to Puppylinux  from USB3.0 mass storage,  the storage can be
> >> recognized in linux c. Plug in a USB  keyboard (hot plug) and
> >> enumeration is OK  in UEFI shell and linux d. Plug in a USB mouse(hot
> >> plug) and enumeration is OK in linux.
> >>
> >> Cc: Ray Ni <ray.ni@intel.com>
> >> Cc: Hao A Wu <hao.a.wu@intel.com>
> >> Signed-off-by: Heng Luo <heng.luo@intel.com>
> >> ---
> >>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
> >>  1 file changed, 8 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >> index 9cb115363c..00e9cc63d6 100644
> >> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >> @@ -2,7 +2,7 @@
> >>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018,
> >> Intel Corporation. All rights reserved.<BR>+Copyright (c) 2011 -
> >> 2020, Intel Corporation. All rights reserved.<BR> Copyright (c)
> >> Microsoft Corporation.<BR> SPDX-License-Identifier:
> >> BSD-2-Clause-Patent @@ -2279,6
> >> +2279,9 @@ XhcInitializeDeviceSlot (
> >>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
> >>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> >> successfully\n", DeviceAddress));     Xhc-
> >>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
> >> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> >> XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -2489,7 +2492,11
> @@
> >> XhcInitializeDeviceSlot64 (
> >>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
> >>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> >> successfully\n", DeviceAddress));     Xhc-
> >>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
> >> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> >> XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
> >> 2.24.0.windows.2
> >
> 
> --
> nvpublic


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66569): https://edk2.groups.io/g/devel/message/66569
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Jon Hunter 3 years, 6 months ago
Hi Hao,

No problem, next week is fine.

Thanks
Jon

On 23/10/2020 13:44, Wu, Hao A wrote:
> Hello Jon,
> 
> Thanks for the testing effort.
> If you patch is not urgent, could you hold your v2 patch until I merge Heng's
> patch into the codebase?
> 
> I will do it early next week and will inform you as soon as it is done.
> Does it sound good to you? Sorry for the inconvenience.
> 
> Best Regards,
> Hao Wu
> 
>> -----Original Message-----
>> From: Jon Hunter <jonathanh@nvidia.com>
>> Sent: Friday, October 23, 2020 5:50 PM
>> To: Wu, Hao A <hao.a.wu@intel.com>; Luo, Heng <heng.luo@intel.com>;
>> devel@edk2.groups.io; jbrasen@nvidia.com
>> Cc: Ni, Ray <ray.ni@intel.com>
>> Subject: Re: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
>> initialization failure
>>
>> Hi Hao,
>>
>> Thanks. Yes this works with my patch. I will send out a V2 for my patch shortly.
>> For this patch you can add my ...
>>
>> Tested-by: Jon Hunter <jonathanh@nvidia.com>
>> Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
>>
>> Cheers
>> Jon
>>
>> On 23/10/2020 03:52, Wu, Hao A wrote:
>>> Hello Jon,
>>>
>>> Could you help to check of this version will co-work with your patch?
>>> Thanks in advance.
>>>
>>> Best Regards,
>>> Hao Wu
>>>
>>>> -----Original Message-----
>>>> From: Luo, Heng <heng.luo@intel.com>
>>>> Sent: Friday, October 23, 2020 9:26 AM
>>>> To: devel@edk2.groups.io
>>>> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
>>>> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
>>>> initialization failure
>>>>
>>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
>>>>
>>>> Currently UsbDevContext is not cleaned up if USB slot initialization
>>>> is failed, the wrong context data will affect next USB devices and
>>>> the USB devices can not be enumerated.
>>>> Need to disable slot if USB slot initialization is failed.
>>>>
>>>> Below test cases are passed on UpXtreme:
>>>> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can
>>>> boot to Puppylinux  from USB3.0 mass storage,  the storage can be
>>>> recognized in linux c. Plug in a USB  keyboard (hot plug) and
>>>> enumeration is OK  in UEFI shell and linux d. Plug in a USB mouse(hot
>>>> plug) and enumeration is OK in linux.
>>>>
>>>> Cc: Ray Ni <ray.ni@intel.com>
>>>> Cc: Hao A Wu <hao.a.wu@intel.com>
>>>> Signed-off-by: Heng Luo <heng.luo@intel.com>
>>>> ---
>>>>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
>>>>  1 file changed, 8 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>>>> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>>>> index 9cb115363c..00e9cc63d6 100644
>>>> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>>>> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
>>>> @@ -2,7 +2,7 @@
>>>>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018,
>>>> Intel Corporation. All rights reserved.<BR>+Copyright (c) 2011 -
>>>> 2020, Intel Corporation. All rights reserved.<BR> Copyright (c)
>>>> Microsoft Corporation.<BR> SPDX-License-Identifier:
>>>> BSD-2-Clause-Patent @@ -2279,6
>>>> +2279,9 @@ XhcInitializeDeviceSlot (
>>>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
>>>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
>>>> successfully\n", DeviceAddress));     Xhc-
>>>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
>>>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
>>>> XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -2489,7 +2492,11
>> @@
>>>> XhcInitializeDeviceSlot64 (
>>>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
>>>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
>>>> successfully\n", DeviceAddress));     Xhc-
>>>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+    DEBUG
>>>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
>>>> XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
>>>> 2.24.0.windows.2
>>>
>>
>> --
>> nvpublic

-- 
nvpublic


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66593): https://edk2.groups.io/g/devel/message/66593
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot initialization failure
Posted by Wu, Hao A 3 years, 6 months ago
Hello Jon,

I have merged Heng's patch into the edk2 repository.
Could you help to rebase your patch onto the latest codebase?

Thanks in advance.

Best Regards,
Hao Wu

> -----Original Message-----
> From: Jon Hunter <jonathanh@nvidia.com>
> Sent: Friday, October 23, 2020 9:04 PM
> To: Wu, Hao A <hao.a.wu@intel.com>; Luo, Heng <heng.luo@intel.com>;
> devel@edk2.groups.io; jbrasen@nvidia.com
> Cc: Ni, Ray <ray.ni@intel.com>
> Subject: Re: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> initialization failure
> 
> Hi Hao,
> 
> No problem, next week is fine.
> 
> Thanks
> Jon
> 
> On 23/10/2020 13:44, Wu, Hao A wrote:
> > Hello Jon,
> >
> > Thanks for the testing effort.
> > If you patch is not urgent, could you hold your v2 patch until I merge
> > Heng's patch into the codebase?
> >
> > I will do it early next week and will inform you as soon as it is done.
> > Does it sound good to you? Sorry for the inconvenience.
> >
> > Best Regards,
> > Hao Wu
> >
> >> -----Original Message-----
> >> From: Jon Hunter <jonathanh@nvidia.com>
> >> Sent: Friday, October 23, 2020 5:50 PM
> >> To: Wu, Hao A <hao.a.wu@intel.com>; Luo, Heng <heng.luo@intel.com>;
> >> devel@edk2.groups.io; jbrasen@nvidia.com
> >> Cc: Ni, Ray <ray.ni@intel.com>
> >> Subject: Re: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB
> >> slot initialization failure
> >>
> >> Hi Hao,
> >>
> >> Thanks. Yes this works with my patch. I will send out a V2 for my patch
> shortly.
> >> For this patch you can add my ...
> >>
> >> Tested-by: Jon Hunter <jonathanh@nvidia.com>
> >> Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
> >>
> >> Cheers
> >> Jon
> >>
> >> On 23/10/2020 03:52, Wu, Hao A wrote:
> >>> Hello Jon,
> >>>
> >>> Could you help to check of this version will co-work with your patch?
> >>> Thanks in advance.
> >>>
> >>> Best Regards,
> >>> Hao Wu
> >>>
> >>>> -----Original Message-----
> >>>> From: Luo, Heng <heng.luo@intel.com>
> >>>> Sent: Friday, October 23, 2020 9:26 AM
> >>>> To: devel@edk2.groups.io
> >>>> Cc: Ni, Ray <ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
> >>>> Subject: [Patch V4] MdeModulePkg/XhciDxe: Error handle for USB slot
> >>>> initialization failure
> >>>>
> >>>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3007
> >>>>
> >>>> Currently UsbDevContext is not cleaned up if USB slot
> >>>> initialization is failed, the wrong context data will affect next
> >>>> USB devices and the USB devices can not be enumerated.
> >>>> Need to disable slot if USB slot initialization is failed.
> >>>>
> >>>> Below test cases are passed on UpXtreme:
> >>>> a. USB 3.0 thumb drives can be recognized in UEFI shell b. SUT can
> >>>> boot to Puppylinux  from USB3.0 mass storage,  the storage can be
> >>>> recognized in linux c. Plug in a USB  keyboard (hot plug) and
> >>>> enumeration is OK  in UEFI shell and linux d. Plug in a USB
> >>>> mouse(hot
> >>>> plug) and enumeration is OK in linux.
> >>>>
> >>>> Cc: Ray Ni <ray.ni@intel.com>
> >>>> Cc: Hao A Wu <hao.a.wu@intel.com>
> >>>> Signed-off-by: Heng Luo <heng.luo@intel.com>
> >>>> ---
> >>>>  MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 9 ++++++++-
> >>>>  1 file changed, 8 insertions(+), 1 deletion(-)
> >>>>
> >>>> diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >>>> b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >>>> index 9cb115363c..00e9cc63d6 100644
> >>>> --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >>>> +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c
> >>>> @@ -2,7 +2,7 @@
> >>>>     XHCI transfer scheduling routines. -Copyright (c) 2011 - 2018,
> >>>> Intel Corporation. All rights reserved.<BR>+Copyright (c) 2011 -
> >>>> 2020, Intel Corporation. All rights reserved.<BR> Copyright (c)
> >>>> Microsoft Corporation.<BR> SPDX-License-Identifier:
> >>>> BSD-2-Clause-Patent @@ -2279,6
> >>>> +2279,9 @@ XhcInitializeDeviceSlot (
> >>>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT *) OutputContext)-
> >>>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> >>>> successfully\n", DeviceAddress));     Xhc-
> >>>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+
> DEBUG
> >>>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> >>>> XhcDisableSlotCmd (Xhc, SlotId);   }    return Status;@@ -2489,7
> +2492,11
> >> @@
> >>>> XhcInitializeDeviceSlot64 (
> >>>>      DeviceAddress = (UINT8) ((DEVICE_CONTEXT_64 *) OutputContext)-
> >>>>> Slot.DeviceAddress;     DEBUG ((EFI_D_INFO, "    Address %d assigned
> >>>> successfully\n", DeviceAddress));     Xhc-
> >>>>> UsbDevContext[SlotId].XhciDevAddr = DeviceAddress;+  } else {+
> DEBUG
> >>>> ((DEBUG_INFO, "    Address %d assigned unsuccessfully\n"));+
> >>>> XhcDisableSlotCmd64 (Xhc, SlotId);   }+   return Status; } --
> >>>> 2.24.0.windows.2
> >>>
> >>
> >> --
> >> nvpublic
> 
> --
> nvpublic


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66616): https://edk2.groups.io/g/devel/message/66616
Mute This Topic: https://groups.io/mt/77744149/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-