Re: [PATCH 0/1] Fix XhciDxe Timeouts


Wu, Hao A
 

-----Original Message-----
From: Laszlo Ersek <lersek@...>
Sent: Wednesday, September 2, 2020 2:49 PM
To: devel@edk2.groups.io; Wu, Hao A <hao.a.wu@...>;
patrick.henz@...
Cc: Wang, Jian J <jian.j.wang@...>; Ni, Ray <ray.ni@...>; Liming
Gao (Byosoft address) <gaoliming@...>
Subject: Re: [edk2-devel] [PATCH 0/1] Fix XhciDxe Timeouts

On 09/02/20 07:08, Wu, Hao A wrote:
-----Original Message-----
From: patrick.henz@... <patrick.henz@...>
Sent: Wednesday, September 2, 2020 2:55 AM
To: devel@edk2.groups.io
Cc: henz <patrick.henz@...>; Wang, Jian J
<jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Ni, Ray
<ray.ni@...>
Subject: [PATCH 0/1] Fix XhciDxe Timeouts

From: henz <patrick.henz@...>

Timeouts in the XhciDxe driver are taking longer than expected due to
the timeout loops not accounting for code execution time. As en
example, 5 second timeouts have been observed to take around 36 seconds
to complete.
Use SetTimer and Create/CheckEvent from Boot Services to determine
when timeout occurred. This patch was tested using forced timeouts
and print statements with QEmu as well as phycial hardware. The
forced timeouts were implemented in code via static variables that
guaranteed a timeout the first time the function with the broken timeout was
called.

Example:

XhcExecTransfer (
.
.
)
{
.
.
static int do_once = 1; // test line
.
.
do {
Finished = XhcCheckUrbResult (Xhc, Urb);
if (do_once) Finished = 0; // test line
if (Finished) {
break;
}
gBS->Stall (XHC_1_MICROSECOND);
} while (!EFI_ERROR(TimerStatus) && EFI_ERROR(gBS->CheckEvent
(TimeoutEvent)));

do_once = 0; // test line

Using this forced timeout approach the correct timeouts were observed
on both hardware and in QEmu.

Similar broken timeout loops have been found in the Uhci and Ehci
drivers. This patch does not fix those issues.

Hello Patrick,

Besides the comments made by Ray in patch 1, could you help to provide 2
more patches for UHCI and EHCI drivers as well for complete enhancement?
Thanks in advance.
We're very close to the edk2-stable202008 tag deadline.

This patch -- which in v2 is going to be a patch series -- is not aiming at the
stable tag, does it?

Hello Laszlo,

The patch (series) seems more like an enhancement to me. So I think it is not aiming the upcoming tag.

Best Regards,
Hao Wu



Thanks!
Laszlo

Join devel@edk2.groups.io to automatically receive all group messages.