Re: [PATCH 4/9] USB: Convert from tasklet to BH workqueue

From: Allen
Date: Wed Mar 27 2024 - 12:58:53 EST


> > The only generic interface to execute asynchronously in the BH context is
> > tasklet; however, it's marked deprecated and has some design flaws. To
> > replace tasklets, BH workqueue support was recently added. A BH workqueue
> > behaves similarly to regular workqueues except that the queued work items
> > are executed in the BH context.
> >
> > This patch converts drivers/infiniband/* from tasklet to BH workqueue.
>
> No it does not, I think your changelog is wrong :(

Whoops, sorry about that. I messed up the commit messages. I will fix it in v2.
>
> >
> > Based on the work done by Tejun Heo <tj@xxxxxxxxxx>
> > Branch: https://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-6.10
> >
> > Signed-off-by: Allen Pais <allen.lkml@xxxxxxxxx>
> > ---
> > drivers/usb/atm/usbatm.c | 55 +++++++++++++++--------------
> > drivers/usb/atm/usbatm.h | 3 +-
> > drivers/usb/core/hcd.c | 22 ++++++------
> > drivers/usb/gadget/udc/fsl_qe_udc.c | 21 +++++------
> > drivers/usb/gadget/udc/fsl_qe_udc.h | 4 +--
> > drivers/usb/host/ehci-sched.c | 2 +-
> > drivers/usb/host/fhci-hcd.c | 3 +-
> > drivers/usb/host/fhci-sched.c | 10 +++---
> > drivers/usb/host/fhci.h | 5 +--
> > drivers/usb/host/xhci-dbgcap.h | 3 +-
> > drivers/usb/host/xhci-dbgtty.c | 15 ++++----
> > include/linux/usb/cdc_ncm.h | 2 +-
> > include/linux/usb/usbnet.h | 2 +-
> > 13 files changed, 76 insertions(+), 71 deletions(-)
> >
> > diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
> > index 2da6615fbb6f..74849f24e52e 100644
> > --- a/drivers/usb/atm/usbatm.c
> > +++ b/drivers/usb/atm/usbatm.c
> > @@ -17,7 +17,7 @@
> > * - Removed the limit on the number of devices
> > * - Module now autoloads on device plugin
> > * - Merged relevant parts of sarlib
> > - * - Replaced the kernel thread with a tasklet
> > + * - Replaced the kernel thread with a work
>
> a "work"?
will fix the comments.

>
> > * - New packet transmission code
> > * - Changed proc file contents
> > * - Fixed all known SMP races
> > @@ -68,6 +68,7 @@
> > #include <linux/wait.h>
> > #include <linux/kthread.h>
> > #include <linux/ratelimit.h>
> > +#include <linux/workqueue.h>
> >
> > #ifdef VERBOSE_DEBUG
> > static int usbatm_print_packet(struct usbatm_data *instance, const unsigned char *data, int len);
> > @@ -249,7 +250,7 @@ static void usbatm_complete(struct urb *urb)
> > /* vdbg("%s: urb 0x%p, status %d, actual_length %d",
> > __func__, urb, status, urb->actual_length); */
> >
> > - /* Can be invoked from task context, protect against interrupts */
> > + /* Can be invoked from work context, protect against interrupts */
>
> "workqueue"? This too seems wrong.
>
> Same for other comment changes in this patch.

Thanks for the quick review, I will fix the comments and send out v2.

- Alle

> thanks,
>
> greg k-h
>