All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.