Thread (50 messages) 50 messages, 20 authors, 2024-06-03

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

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2024-03-27 17:55:01
Also in: asahi, dmaengine, imx, linux-arm-msm, linux-hyperv, linux-media, linux-mediatek, linux-mips, linux-mmc, linux-omap, linux-rdma, linux-renesas-soc, linux-riscv, linux-s390, linux-sunxi, linux-tegra, linux-usb, lkml, netdev

On Wed, Mar 27, 2024 at 04:03:09PM +0000, Allen Pais wrote:
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.

Based on the work done by Tejun Heo [off-list ref]
Branch: https://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-6.10

Signed-off-by: Allen Pais <redacted>
---
quoted hunk ↗ jump to hunk
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index c0e005670d67..88d8e1c366cd 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
quoted hunk ↗ jump to hunk
@@ -1662,10 +1663,9 @@ static void __usb_hcd_giveback_urb(struct urb *urb)
 	usb_put_urb(urb);
 }
 
-static void usb_giveback_urb_bh(struct work_struct *work)
+static void usb_giveback_urb_bh(struct work_struct *t)
 {
-	struct giveback_urb_bh *bh =
-		container_of(work, struct giveback_urb_bh, bh);
+	struct giveback_urb_bh *bh = from_work(bh, t, bh);
 	struct list_head local_list;
 
 	spin_lock_irq(&bh->lock);
Is there any reason for this apparently pointless change of a local
variable's name?

Alan Stern
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help