From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 4EB713CDBC3 for ; Mon, 27 Jul 2026 20:32:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785184333; cv=none; b=SlZ1sHupdLEpO77b2VJVIsCk3BKI+2pT5CwOtR2nX7fu3EHpTq1Cb/n7w3UvLzxaqbgql6R79KH4uK6bIPyq47RCzaQePTbQ7DqhupwEs2gl3Sv7fQ0faVmq/HVCS4oFPTjvppZ0PFNDoQRPEFx5zjLDyvXkHuKWCS8mjEQah2g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785184333; c=relaxed/simple; bh=MV8Avm8ka+YBVXaP/wt8uDAB2cCba2ez37OgcoiN8No=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kDMXDVtK+IZicQd8R3L/WlN9d8G88NqNBfyy1QJot4CYir4YWVeA6VNSPOL9XKqfrR2Mk1YW28CJT0Kq3Y4gyvwY58nbZ0iM5be97QUn0lQypEEhkM50BrVhHs3I0KOYu7IYxq8pz8CwM3CUYtBdu0XSruYLjuq4nL5QqdTYcKQ= 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=VoNsw0Ja; arc=none smtp.client-ip=209.85.214.172 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="VoNsw0Ja" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2d004f135b1so12222525ad.3 for ; Mon, 27 Jul 2026 13:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785184332; x=1785789132; 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=yBrpYduiDtcGvM1Dns+VuoauzKyu+0QgDFkK4uLnQ1Q=; b=VoNsw0JavptuSXlzxddYcWfJTEda5H4307ZsgScBPdL6HKZPAzTCEX4S2+wzySKG04 KLDcs7j/hUyt7S4JLF+eRn1/wXq8iz1xTGcDNJ4WgZEBawmA7I+SFEOWIYQP+l95Xsno SkwAxhChaoGVC4vrLgOH1B9u5s7baFRKrlFhylnRNdqLA7y3o958PUf25e4Qt5KEdl4M ySXlzf6Uv9dbyoeh7SOGXIsqsaqHcIjuVxRDoIVvsE8xunsHjdvo7SfX2vpoxTtjxJId S5M+DFXmgAEAqRhNp95u4UZrO6+mRlReXTwVZSbBNSWBHrIYg3A6vRi8E7OBp/r5FH3j HVgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785184332; x=1785789132; 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=yBrpYduiDtcGvM1Dns+VuoauzKyu+0QgDFkK4uLnQ1Q=; b=DTbGDAO54j4VwQvVZfjYKUWlag4Ec0NsGdGMB7bV4SPKQbAXZc23AjMNeDIbrdE2P+ plttDbjPX1iElWreWLz8Kki1n6Nf714Hq8FKhRz6CygSB1IAj5YKFbN8ebr3wP7n6WNv Z2s9NrtO2GWwqx7j+Di8mK3fzF0zPWyWzUprWRUBiDdUuElXZxSZYLViE8RoUNXLYy3C BAEIriyL2+Kg/NAzFOi3fKOy1wvBP0blruxStakk82g8i0lSbHheAeuj3ANgn7jTo4Rs lBbCcUTQDax0lwCp9NYIEmjbuwNa7ArQGUocjAv4gnVw6XpnuHUvIz605Q76gPxyg9St ER/Q== X-Forwarded-Encrypted: i=1; AHgh+Rr8NkgDpLjP4ZHJFe6Dng98x/hK446Sa043xQQGXKZxLkRz8q4PHlt2WI/Z+ieiOJpyFh2IyR7hhom52fM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/jNJBwHBULrD55KEKpm0XFJDZJk1yy7b6AJ8wIaFCyNYA/3XU raVAaUu2yCwVLez7a4T65dTt6gWHIQZYjHGNtUmGuZ9lAif/4ZJgtO/+ X-Gm-Gg: AR+sD10fjkfPkknhYPGMrNQtQRKTML96nqXXzIeVIGoAKPUGPy3Yck9IAoT6Obr/DMp 9x23nthFlSDD/yfGkMvhqcZxChvRJzAFaammOk01Otwli1t7NnfX6SNGMq4dXkvmjG2pLnGRxkI 0AayuhoyQmt48xkKxRiG3/H4TMdqQJ9QGBfSvoSeWXXeUCvFVwetvtidQxCFM7gTXnmVl6uAmSo 7hlG07B95ttmc0TaK3WNHW8yPJItpBq0QdwzuvqaHQrAVd6euL1yBGOGOg/kZ/Q3/tGQy55qM8r 1iExqDRhZtlTCbo66zleQQ8JtCeyoYCgAyJ0bv6aU5C00CzraLHmf/1cPEL5ufLXb9ZMviuQkvm hd+6kI+gI6mkBMU5pZlifLRHHYo28yAVRqtnvXMwU/vRqWmmNRSqetvCOe/ALOI9RYJqmHYbLQ0 S9N81I X-Received: by 2002:a17:902:d492:b0:2cc:d192:50b5 with SMTP id d9443c01a7336-2d00f570b99mr6417935ad.34.1785184331513; Mon, 27 Jul 2026 13:32:11 -0700 (PDT) Received: from cryptic.lan ([2001:569:7fab:e200:3789:64f9:8855:c0af]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cfde59b768sm41551805ad.4.2026.07.27.13.32.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2026 13:32:10 -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 , Colin Ian King Subject: [PATCH v2 16/64] dmaengine: ppc4xx: replace irq tasklet with dma_chan BH Date: Mon, 27 Jul 2026 13:28:44 -0700 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: <20260108080332.2341725-1-allen.lkml@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Replace the per-channel tasklet with the shared dma_chan BH helper. The handler continues to run in softirq context while dmaengine owns the common scheduling and teardown mechanism. Signed-off-by: Allen Pais --- drivers/dma/ppc4xx/adma.c | 14 +++++++------- drivers/dma/ppc4xx/adma.h | 2 -- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/dma/ppc4xx/adma.c b/drivers/dma/ppc4xx/adma.c index 279a431ccae3..98cfd012ca5b 100644 --- a/drivers/dma/ppc4xx/adma.c +++ b/drivers/dma/ppc4xx/adma.c @@ -1658,9 +1658,9 @@ static void __ppc440spe_adma_slot_cleanup(struct ppc440spe_adma_chan *chan) /** * ppc440spe_adma_tasklet - clean up watch-dog initiator */ -static void ppc440spe_adma_tasklet(struct tasklet_struct *t) +static void ppc440spe_adma_tasklet(struct dma_chan *c) { - struct ppc440spe_adma_chan *chan = from_tasklet(chan, t, irq_tasklet); + struct ppc440spe_adma_chan *chan = to_ppc440spe_adma_chan(c); spin_lock_nested(&chan->lock, SINGLE_DEPTH_NESTING); __ppc440spe_adma_slot_cleanup(chan); @@ -1754,7 +1754,7 @@ static struct ppc440spe_adma_desc_slot *ppc440spe_adma_alloc_slots( goto retry; /* try to free some slots if the allocation fails */ - tasklet_schedule(&chan->irq_tasklet); + dma_chan_schedule_bh(&chan->common); return NULL; } @@ -3595,7 +3595,7 @@ static irqreturn_t ppc440spe_adma_eot_handler(int irq, void *data) dev_dbg(chan->device->common.dev, "ppc440spe adma%d: %s\n", chan->device->id, __func__); - tasklet_schedule(&chan->irq_tasklet); + dma_chan_schedule_bh(&chan->common); ppc440spe_adma_device_clear_eot_status(chan); return IRQ_HANDLED; @@ -3612,7 +3612,7 @@ static irqreturn_t ppc440spe_adma_err_handler(int irq, void *data) dev_dbg(chan->device->common.dev, "ppc440spe adma%d: %s\n", chan->device->id, __func__); - tasklet_schedule(&chan->irq_tasklet); + dma_chan_schedule_bh(&chan->common); ppc440spe_adma_device_clear_eot_status(chan); return IRQ_HANDLED; @@ -4137,7 +4137,7 @@ static int ppc440spe_adma_probe(struct platform_device *ofdev) chan->common.device = &adev->common; dma_cookie_init(&chan->common); list_add_tail(&chan->common.device_node, &adev->common.channels); - tasklet_setup(&chan->irq_tasklet, ppc440spe_adma_tasklet); + dma_chan_init_bh(&chan->common, ppc440spe_adma_tasklet); /* allocate and map helper pages for async validation or * async_mult/async_sum_product operations on DMA0/1. @@ -4247,7 +4247,7 @@ static void ppc440spe_adma_remove(struct platform_device *ofdev) device_node) { ppc440spe_chan = to_ppc440spe_adma_chan(chan); ppc440spe_adma_release_irqs(adev, ppc440spe_chan); - tasklet_kill(&ppc440spe_chan->irq_tasklet); + dma_chan_kill_bh(&ppc440spe_chan->common); if (adev->id != PPC440SPE_XOR_ID) { dma_unmap_page(&ofdev->dev, ppc440spe_chan->pdest, PAGE_SIZE, DMA_BIDIRECTIONAL); diff --git a/drivers/dma/ppc4xx/adma.h b/drivers/dma/ppc4xx/adma.h index f8a5d7c1fb40..9af1feaf0b9a 100644 --- a/drivers/dma/ppc4xx/adma.h +++ b/drivers/dma/ppc4xx/adma.h @@ -80,7 +80,6 @@ struct ppc440spe_adma_device { * @pending: allows batching of hardware operations * @slots_allocated: records the actual size of the descriptor slot pool * @hw_chain_inited: h/w descriptor chain initialization flag - * @irq_tasklet: bottom half where ppc440spe_adma_slot_cleanup runs * @needs_unmap: if buffers should not be unmapped upon final processing * @pdest_page: P destination page for async validate operation * @qdest_page: Q destination page for async validate operation @@ -97,7 +96,6 @@ struct ppc440spe_adma_chan { int pending; int slots_allocated; int hw_chain_inited; - struct tasklet_struct irq_tasklet; u8 needs_unmap; struct page *pdest_page; struct page *qdest_page; -- 2.43.0