From: Niklas Cassel <cassel@kernel.org>
To: Koichiro Den <den@valinux.co.jp>
Cc: mani@kernel.org, vkoul@kernel.org, Frank.Li@kernel.org,
dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/2] dmaengine: dw-edma: Interrupt-emulation doorbell support
Date: Wed, 18 Feb 2026 17:50:40 +0100 [thread overview]
Message-ID: <aZXt23tgJWyzTOOT@ryzen> (raw)
In-Reply-To: <2p7rmtp7aak6czf2yinbdqa6w3c2j55pw7dxahsmzeiuceg2pk@4rzpd772kcbq>
Hello Koichiro,
On Thu, Feb 19, 2026 at 01:19:02AM +0900, Koichiro Den wrote:
> On Mon, Feb 16, 2026 at 12:22:14AM +0900, Koichiro Den wrote:
> > Hi,
> >
> > Some DesignWare eDMA instances support "interrupt emulation", where a
> > software write can assert the IRQ line without setting the normal
> > DONE/ABORT status bits.
> >
> > In the current mainline, on implementations that support interrupt
> > emulation, writing once to DMA_{WRITE,READ}_INT_STATUS_OFF is sufficient
> > to leave the level-triggered IRQ line asserted. Since the shared dw-edma
> > IRQ handlers only look at DONE/ABORT bits and do not perform any
> > deassertion sequence for interrupt emulation, the IRQ remains asserted
> > and is eventually disabled by the generic IRQ layer:
> >
> > $ sudo devmem2 0xe65d50a0 w 0
> >
> > [ 47.189557] irq 48: nobody cared (try booting with the "irqpoll" option)
> > ...
> > [ 47.190383] handlers:
> > [ 47.199837] [<00000000a5ecb36e>] dw_edma_interrupt_common
> > [ 47.200214] Disabling IRQ #48
> >
> > In other words, a single interrupt-emulation write can leave the IRQ
> > line stuck asserted and render the DMA engine unusable until reboot.
> >
> > This series fixes the problem by:
> >
> > - adding a core hook to deassert an emulated interrupt
> > - wiring a requestable Linux virtual IRQ whose .irq_ack performs the
> > deassert sequence
> > - raising that virtual IRQ from the dw-edma IRQ path to ensure the
> > deassert sequence is always executed
> >
> > This makes interrupt emulation safe and also enables platform users to
> > expose it as a doorbell via the exported db_irq and db_offset.
> >
> > This is a spin-off from:
> > https://lore.kernel.org/linux-pci/20260209125316.2132589-1-den@valinux.co.jp/
> >
> > Based on dmaengine.git next branch latest:
> > Commit ab736ed52e34 ("dmaengine: add Frank Li as reviewer")
> >
> > Thanks for reviewing,
> >
> >
> > Koichiro Den (2):
> > dmaengine: dw-edma: Add interrupt-emulation hooks
> > dmaengine: dw-edma: Add virtual IRQ for interrupt-emulation doorbells
> >
> > drivers/dma/dw-edma/dw-edma-core.c | 127 +++++++++++++++++++++++++-
> > drivers/dma/dw-edma/dw-edma-core.h | 17 ++++
> > drivers/dma/dw-edma/dw-edma-v0-core.c | 21 +++++
> > drivers/dma/dw-edma/dw-hdma-v0-core.c | 7 ++
> > include/linux/dma/edma.h | 6 ++
> > 5 files changed, 173 insertions(+), 5 deletions(-)
>
> +CC: Niklas
>
> Niklas provided valuable feedback in the previous iterations and also helped
> test the earlier (non-split) series mentioned above. During testing, he
> identified that on platforms where chip->nr_irqs > 1, the interrupt emulation
> IRQ could be randomly delivered to one of the shared channel IRQs [1]. That
> observation was the main motivation for the rework.
>
> I missed Niklas in CC earlier, sorry about that. I had naively relied on
> get_maintainers.pl. I'll be more careful.
Thank you for CC:ing me.
I'm happy to help with testing.
For reviewing, I will limit myself to drivers/pci/endpoint.
(I don't really have spare cycles to also review drivers/dma/dw-edma patches.)
Kind regards,
Niklas
next prev parent reply other threads:[~2026-02-18 16:51 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-15 15:22 [PATCH 0/2] dmaengine: dw-edma: Interrupt-emulation doorbell support Koichiro Den
2026-02-15 15:22 ` [PATCH 1/2] dmaengine: dw-edma: Add interrupt-emulation hooks Koichiro Den
2026-02-16 16:38 ` Frank Li
2026-03-24 2:10 ` Koichiro Den
2026-02-15 15:22 ` [PATCH 2/2] dmaengine: dw-edma: Add virtual IRQ for interrupt-emulation doorbells Koichiro Den
2026-02-16 16:38 ` Frank Li
2026-02-18 16:19 ` [PATCH 0/2] dmaengine: dw-edma: Interrupt-emulation doorbell support Koichiro Den
2026-02-18 16:50 ` Niklas Cassel [this message]
2026-02-25 11:24 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZXt23tgJWyzTOOT@ryzen \
--to=cassel@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=den@valinux.co.jp \
--cc=dmaengine@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mani@kernel.org \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox