From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E8B1F436BE0 for ; Mon, 10 Aug 2026 18:13:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786385585; cv=none; b=c2MLk+dk4dvRAHADFHtnOO62XJyBtkFSndCtXOM0RnV6e9hB7FAieIFTTdVXkGp94QEqY6msg6OJoexQFiE7P0BGTTZOjIPd5hAGX/9TFCU2kdgk4HS2/XXPPULbSxwbakCPQK5y/PqbbX7i/rDOJ+HvHuBBr7p0lRBKlNcsF84= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786385585; c=relaxed/simple; bh=3CFQUipgutG7zGOxIQwj3/4HlpUprdEllsKNk/2j+Aw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IamYFdoi2KSjaym14TGK9CJnM1k6MNtSLTBPfnm9BAoVWYVMiV+MrGN4pwXeSkhwtJXkPtjzjEDGW0qx1C2l0ZWsCKi3HpOP48Jpxe19sGcIu2TfdrLsxtPChImcqJqH2C63DuBza3w1HcM4HEj11PQQ5zKWEEsxfD3nGVmRSeg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ajA01zET; arc=none smtp.client-ip=209.85.216.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ajA01zET" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-39266382df6so2373217a91.3 for ; Mon, 10 Aug 2026 11:13:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786385583; x=1786990383; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JZgKiUZo8rcVQaKfCZHOhgCQwcsfKBYG1i72H4MRQjQ=; b=ajA01zETtrUDFaZPJ0+xYiQDQV+UAt5FoqJLZxTjang0/tLJTHRfkX9ms/Vbnkg90H uNsAv5pxDI+Mxxb/3PRHkc2XscfDEkWD6UqCmGLkhX/niIRTAJiOjRJ8taofEZlIw3x/ nfKELcbiftc08o63R41SCU3FosMwm6K/L/Vd6LrBC9o7qJ9NrYQKSku5826kFtK0R3qY O0M+g3rxF/RDwoNAF4pntCsY3cyfTQQ4vEp561WcEfgZ+Mz2OZLVoFDyfNSWgt7Tkqio ITE5MS4zJWg7DPZx1ZmaHy3Vqb5r1Yt/rdFNahuj3d/cLNa0q92SWoTyEMFWYI66nuvk 56/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786385583; x=1786990383; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=JZgKiUZo8rcVQaKfCZHOhgCQwcsfKBYG1i72H4MRQjQ=; b=cPnraJ6MDLy3bgMi9d4e80u4vtscJzfwZhpq77UNPAPXfaSS31wUJvZQ9ePbbcH9uj B9VPhM5/N/q4MaXzxVhGEkZLOuZlLRE08ZqaUXV7gQgfLzdTgk8Si5y86ey7wVaoO1fn Uq8VIA1PookXIceSkZCm1uTAcEjb/2fZZlHnPNihahZeqFL8+EspE6jSDC3zetjEsTqg O2ASVnGsNj6CW9ySDxQPa7dk0m9JtmeMi/AJrcj8Z18Ra7tlelUVM1Z3frYgPxqg8y1S m/M01+K3JBOrMBvn8rMNDNx2pkO+Jxa8siV9S8kOBNHX+uNR2rusgwCjTkq2gc9teedm lhoQ== X-Forwarded-Encrypted: i=1; AHgh+RqPhTMjHWaT9GilQlKk2gnklsMZGMG4bJ0nmtr40SuYAipaiM7E+S36MvN5FPvv696I0UQk2zL36frH4u8=@vger.kernel.org X-Gm-Message-State: AOJu0YynuLMjOKv4NldruqmLXaAW2u1r37Mrnpyq4ygDBG2888nyjKOE ZH7InaBk9gvq6BvKcxcqscK+TL0ZdEqdkSduwJ/C2sxuPiuk5cL9oEuR X-Gm-Gg: AR+sD1117rMral69Y2imVuEA+bM5QxBstcxSFGtHDazPdMGISUDHE4qMbMtYoaPxV/b jm6P/BwBmB7v5S+gf1EcU40QzJjeYjopv3eEXCwIRc7gE0mLV8esKP8+O5I0yjIrGX3sxANUDd4 hqKmmCF5d74MYxURrGgebJY7HPP0GR1lN/rPaptJP/NxXHTy+zhfj/YwU465tX3+lMH0lyGcska xjiiOzTmDpc/3A1xP2H2qib+wnz1swm5LvkvCaW9zx6Ri8mEt72oqArZ9cEG4HUfJTq4DmFSV0H XCk1p+0vlWt9sXzgaVSCVtJbC392UBlDuugp3DZwyVL9aF73uSy6c6pRXb2d/HQ8roCIfSiw80d vgbtBXeNLGegSwOUeAw0Pz4gwBHA/kdtdxush8b0ATPhWzAh7z5ewpsXptAHbQNBp77a46MItY2 CTR/LW02V3AoCpFFhgmP5PVl9yGegZWkzVSVNrisJ1x49ZAESzlTwWCVszkQ4dfQE= X-Received: by 2002:a17:90b:2d44:b0:38e:63de:730d with SMTP id 98e67ed59e1d1-3903c598974mr46244449a91.3.1786385583218; Mon, 10 Aug 2026 11:13:03 -0700 (PDT) Received: from cryptic.lan ([2001:569:7fa9:fa00:b1a9:6513:83c6:1d23]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-392d53b873asm472795a91.17.2026.08.10.11.13.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Aug 2026 11:13:02 -0700 (PDT) From: Allen Pais To: Vinod Koul , Frank Li Cc: Allen Pais , dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Arnd Bergmann , Kees Cook Subject: [PATCH v3 24/34] dmaengine: txx9dmac: route callbacks via channel BH Date: Mon, 10 Aug 2026 11:09:25 -0700 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Use the per-channel BH helpers for descriptor completion handling and schedule per-channel work from both channel and controller IRQ paths. Signed-off-by: Allen Pais --- drivers/dma/txx9dmac.c | 12 ++++++------ drivers/dma/txx9dmac.h | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/dma/txx9dmac.c b/drivers/dma/txx9dmac.c index 05622b68a936..0547f645b51c 100644 --- a/drivers/dma/txx9dmac.c +++ b/drivers/dma/txx9dmac.c @@ -601,13 +601,13 @@ static void txx9dmac_scan_descriptors(struct txx9dmac_chan *dc) } } -static void txx9dmac_chan_tasklet(struct tasklet_struct *t) +static void txx9dmac_chan_tasklet(struct dma_chan *chan) { int irq; u32 csr; struct txx9dmac_chan *dc; - dc = from_tasklet(dc, t, tasklet); + dc = container_of(chan, struct txx9dmac_chan, chan); csr = channel_readl(dc, CSR); dev_vdbg(chan2dev(&dc->chan), "tasklet: status=%x\n", csr); @@ -628,7 +628,7 @@ static irqreturn_t txx9dmac_chan_interrupt(int irq, void *dev_id) dev_vdbg(chan2dev(&dc->chan), "interrupt: status=%#x\n", channel_readl(dc, CSR)); - tasklet_schedule(&dc->tasklet); + dmaengine_schedule_bh(&dc->chan); /* * Just disable the interrupts. We'll turn them back on in the * softirq handler. @@ -659,7 +659,7 @@ static void txx9dmac_tasklet(struct tasklet_struct *t) spin_lock(&dc->lock); if (csr & (TXX9_DMA_CSR_ABCHC | TXX9_DMA_CSR_NCHNC | TXX9_DMA_CSR_NTRNFC)) - txx9dmac_scan_descriptors(dc); + dmaengine_schedule_bh(&dc->chan); spin_unlock(&dc->lock); } } @@ -1113,7 +1113,7 @@ static int __init txx9dmac_chan_probe(struct platform_device *pdev) irq = platform_get_irq(pdev, 0); if (irq < 0) return irq; - tasklet_setup(&dc->tasklet, txx9dmac_chan_tasklet); + dmaengine_init_bh(&dc->chan, txx9dmac_chan_tasklet); dc->irq = irq; err = devm_request_irq(&pdev->dev, dc->irq, txx9dmac_chan_interrupt, 0, dev_name(&pdev->dev), dc); @@ -1159,7 +1159,7 @@ static void txx9dmac_chan_remove(struct platform_device *pdev) dma_async_device_unregister(&dc->dma); if (dc->irq >= 0) { devm_free_irq(&pdev->dev, dc->irq, dc); - tasklet_kill(&dc->tasklet); + dmaengine_kill_bh(&dc->chan); } dc->ddev->chan[pdev->id % TXX9_DMA_MAX_NR_CHANNELS] = NULL; } diff --git a/drivers/dma/txx9dmac.h b/drivers/dma/txx9dmac.h index aa53eafb1519..f2abedb73d49 100644 --- a/drivers/dma/txx9dmac.h +++ b/drivers/dma/txx9dmac.h @@ -162,7 +162,6 @@ struct txx9dmac_chan { struct dma_device dma; struct txx9dmac_dev *ddev; void __iomem *ch_regs; - struct tasklet_struct tasklet; int irq; u32 ccr; -- 2.43.0