Re: [PATCH] USB: HCD: Fix URB giveback issue in tasklet function

From: WeitaoWang-oc@xxxxxxxxxxx
Date: Thu Jul 21 2022 - 22:31:59 EST


On 2022/7/21 21:50, Alan Stern wrote:
On Thu, Jul 21, 2022 at 02:08:33PM +0800, Weitao Wang wrote:
Usb core introduce the mechanism of giveback of URB in tasklet context to
reduce hardware interrupt handling time. On some test situation(such as
FIO with 4KB block size), when tasklet callback function called to
giveback URB, interrupt handler add URB node to the bh->head list also.
If check bh->head list again after finish all URB giveback of local_list,
then it may introduce a "dynamic balance" between giveback URB and add URB
to bh->head list. This tasklet callback function may not exit for a long
time, which will cause other tasklet function calls to be delayed. Some
real-time applications(such as KB and Mouse) will see noticeable lag.

Fix this issue by taking new URBs giveback in next tasklet function call.

The patch also replaces the local high_prio_bh variable with a new
bh->high_prio structure member. This should be mentioned in the patch
description.

Alan Stern
.
Okay,I will take your suggestion and submit a revised version.

Thanks
weitao