From: Niklas Cassel <cassel@kernel.org>
To: Koichiro Den <den@valinux.co.jp>
Cc: vkoul@kernel.org, mani@kernel.org, Frank.Li@nxp.com,
jingoohan1@gmail.com, lpieralisi@kernel.org,
kwilczynski@kernel.org, robh@kernel.org, bhelgaas@google.com,
kishon@kernel.org, jdmason@kudzu.us, allenbh@gmail.com,
dmaengine@vger.kernel.org, linux-pci@vger.kernel.org,
ntb@lists.linux.dev, linux-kselftest@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 0/8] PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback
Date: Tue, 10 Feb 2026 17:30:10 +0100 [thread overview]
Message-ID: <aYtdEnZM5mnmcgtY@ryzen> (raw)
In-Reply-To: <2lii3hhzie5n2kkoan7hvittid2bo2jgvkb2fndyscc527xglp@dubt3ie7exdq>
On Tue, Feb 10, 2026 at 11:07:16PM +0900, Koichiro Den wrote:
> On Tue, Feb 10, 2026 at 01:24:29PM +0100, Niklas Cassel wrote:
> > On Mon, Feb 09, 2026 at 09:53:08PM +0900, Koichiro Den wrote:
> > > Tested on
> > > =========
> > >
> > > I tested the embedded (DMA) doorbell fallback path (via pci-epf-test) on
> > > R-Car Spider boards:
> > >
> > > $ ./pci_endpoint_test -t DOORBELL_TEST
> > > TAP version 13
> > > 1..1
> > > # Starting 1 tests from 1 test cases.
> > > # RUN pcie_ep_doorbell.DOORBELL_TEST ...
> > > # OK pcie_ep_doorbell.DOORBELL_TEST
> > > ok 1 pcie_ep_doorbell.DOORBELL_TEST
> > > # PASSED: 1 / 1 tests passed.
> > > # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0
> > >
> > > with the following message observed on the EP side:
> > >
> > > [ 80.464653] pci_epf_test pci_epf_test.0: Using embedded (DMA) doorbell fallback
> > >
> > > (Note: for the test to pass on R-Car Spider, one of the following was required:
> > > - echo 1048576 > functions/pci_epf_test/func1/pci_epf_test.0/bar2_size
> > > - apply https://lore.kernel.org/all/20251023072217.901888-1-den@valinux.co.jp/)
> >
> > I applied this series on top of branch pci/controller/dwc
> > on Rock 5B (pcie-dw-rockchip.c).
> >
> > On EP side:
> > [ 39.218533] pci_epf_test pci_epf_test.0: Can't find MSI domain for EPC
> > [ 39.219125] pci_epf_test pci_epf_test.0: Using embedded (DMA) doorbell fallback
> >
> > On RC side:
> > # RUN pcie_ep_doorbell.DOORBELL_TEST ...
> > [ 40.297892] pci-endpoint-test 0000:01:00.0: Failed to trigger doorbell in endpoint
> > # pci_endpoint_test.c:279:DOORBELL_TEST:Expected 0 (0) == ret (-22)
> > # pci_endpoint_test.c:279:DOORBELL_TEST:Test failed for Doorbell
> >
> > # DOORBELL_TEST: Test failed
> > # FAIL pcie_ep_doorbell.DOORBELL_TEST
> > not ok 23 pcie_ep_doorbell.DOORBELL_TEST
> >
> > Any suggestions?
> >
> > (All BARs in pcie-dw-rockchip.c is marked as BAR_RESIZABLE.)
>
> Thank you for testing.
>
> If the failure was observed in a scenario other than a plain
> `./pci_endpoint_test -t DOORBELL_TEST`, could you please try again with [1]
> applied as well?
>
> [1] https://lore.kernel.org/linux-pci/20260202145407.503348-1-den@valinux.co.jp/
I applied that series, but I got the same problem.
I added debug, and the EP side does use the correct address for the eDMA:
[ 26.279457] msg_addr: 0xa403800a0
[ 26.279898] phys_addr: 0xa40300000 offset: 0x800a0
If I write to the msg_addr directly on the EP using devmem, I do see the print
that I added in the IRQ handler:
# devmem 0xa403800a0 32 0
[ 155.861989] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 158.809160] dw_edma_interrupt_emulated:696
[ 158.809543] pci_epf_test_doorbell_primary:729
# [ 158.809986] pci_epf_test_doorbell_handler:703
# devmem 0xa403800a0 32 0
[ 161.241326] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 163.466054] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 167.378662] dw_edma_interrupt_emulated:696
[ 167.379045] pci_epf_test_doorbell_primary:729
# [ 167.379512] pci_epf_test_doorbell_handler:703
# devmem 0xa403800a0 32 0
[ 168.880179] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 170.492176] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 171.729154] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 173.481271] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 174.985787] dw_edma_interrupt_emulated:696
# devmem 0xa403800a0 32 0
[ 176.517131] dw_edma_interrupt_emulated:696
[ 176.517511] pci_epf_test_doorbell_primary:729
# [ 176.517963] pci_epf_test_doorbell_handler:703
But not on every write....
I'm not sure, but could this perhaps be because we are missing this patch:
https://lore.kernel.org/dmaengine/20260105075904.1254012-1-den@valinux.co.jp/
# dmesg | grep eDMA
[ 1.243339] rockchip-dw-pcie a40000000.pcie-ep: eDMA: unroll T, 2 wr, 2 rd
# cat /proc/interrupts | grep edma
53: 8 0 0 0 0 0 0 0 GICv3 303 Level dw-edma-core:a40000000.pcie-ep, pci-ep-test-doorbell
54: 7 0 0 0 0 0 0 0 GICv3 304 Level dw-edma-core:a40000000.pcie-ep
55: 15 0 0 0 0 0 0 0 GICv3 301 Level dw-edma-core:a40000000.pcie-ep
56: 7 0 0 0 0 0 0 0 GICv3 302 Level dw-edma-core:a40000000.pcie-ep
Anyway, I was still curious why this did never worked when writing from the
host side, even when running the test case many, many times.
AFAICT, the inbound translation looks correct.
RK3588 (pcie-dw-rockchip.c) exposes the DMA registers in BAR4 by default.
If I hack pci-epf-test on top of your patch to unconditionally return BAR4 with
offset 0xa0, it works. So my best guess is that the fixed inbound translation
in BAR4 (to the eDMA registers) somehow messes with the inbound translation if
another BAR tries to use an inbound translation to the eDMA registers as well.
Kind regards,
Niklas
next prev parent reply other threads:[~2026-02-10 16:30 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-09 12:53 [PATCH v6 0/8] PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback Koichiro Den
2026-02-09 12:53 ` [PATCH v6 1/8] dmaengine: dw-edma: Deassert emulated interrupts in the IRQ handler Koichiro Den
2026-02-09 16:05 ` Frank Li
2026-02-09 12:53 ` [PATCH v6 2/8] dmaengine: dw-edma: Cache per-channel IRQ and emulation doorbell offset Koichiro Den
2026-02-09 16:13 ` Frank Li
2026-02-10 1:48 ` Koichiro Den
2026-02-09 12:53 ` [PATCH v6 3/8] PCI: endpoint: Add auxiliary resource query API Koichiro Den
2026-02-09 15:59 ` Frank Li
2026-02-09 12:53 ` [PATCH v6 4/8] PCI: dwc: Record integrated eDMA register window Koichiro Den
2026-02-09 12:53 ` [PATCH v6 5/8] PCI: dwc: ep: Report integrated eDMA resources via EPC aux-resource API Koichiro Den
2026-02-09 12:53 ` [PATCH v6 6/8] PCI: endpoint: pci-epf-test: Don't free doorbell IRQ unless requested Koichiro Den
2026-02-09 15:57 ` Frank Li
2026-02-10 1:54 ` Koichiro Den
2026-02-10 12:36 ` Niklas Cassel
2026-02-10 13:54 ` Koichiro Den
2026-02-10 16:38 ` Niklas Cassel
2026-02-11 16:08 ` Koichiro Den
2026-02-09 12:53 ` [PATCH v6 7/8] PCI: endpoint: pci-ep-msi: Fix error unwind and prevent double alloc Koichiro Den
2026-02-09 15:53 ` Frank Li
2026-02-09 12:53 ` [PATCH v6 8/8] PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback Koichiro Den
2026-02-09 15:51 ` Frank Li
2026-02-10 2:10 ` Koichiro Den
2026-02-10 15:16 ` Frank Li
2026-02-10 12:24 ` [PATCH v6 0/8] " Niklas Cassel
2026-02-10 14:07 ` Koichiro Den
2026-02-10 16:30 ` Niklas Cassel [this message]
2026-02-11 15:57 ` Koichiro Den
2026-02-11 16:52 ` Niklas Cassel
2026-02-12 3:26 ` Koichiro Den
2026-02-12 10:26 ` Niklas Cassel
2026-02-12 15:14 ` Koichiro Den
2026-02-12 15:38 ` Niklas Cassel
2026-02-12 16:31 ` Koichiro Den
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=aYtdEnZM5mnmcgtY@ryzen \
--to=cassel@kernel.org \
--cc=Frank.Li@nxp.com \
--cc=allenbh@gmail.com \
--cc=bhelgaas@google.com \
--cc=den@valinux.co.jp \
--cc=dmaengine@vger.kernel.org \
--cc=jdmason@kudzu.us \
--cc=jingoohan1@gmail.com \
--cc=kishon@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=ntb@lists.linux.dev \
--cc=robh@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