]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback
authorKoichiro Den <den@valinux.co.jp>
Tue, 14 Apr 2026 14:15:14 +0000 (23:15 +0900)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 4 May 2026 23:01:33 +0000 (18:01 -0500)
commite4f26243953fd3e87df93786b40293ca3a6a465e
tree349672c5d9edb92cd97e52995e87d8146e53a466
parent8fda2dd209d34396cf49504e2c8dd55d182b14bc
PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback

Some endpoint platforms cannot use platform MSI / GIC ITS to implement
EP-side doorbells. In those cases, EPF drivers cannot provide an
interrupt-driven doorbell and often fall back to polling.

Add an "embedded" doorbell backend that uses a controller-integrated
doorbell target (e.g. DesignWare integrated eDMA interrupt-emulation
doorbell).

The backend locates the doorbell register and a corresponding Linux IRQ
via the EPC aux-resource API. If the doorbell register is already
exposed via a fixed BAR mapping, provide BAR+offset. Otherwise provide
the DMA address returned by dma_map_resource() (which may be an IOVA
when an IOMMU is enabled) so EPF drivers can map it into BAR space.

When MSI doorbell allocation fails with -ENODEV,
pci_epf_alloc_doorbell() falls back to this embedded backend.

Suggested-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Koichiro Den <den@valinux.co.jp>
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20260414141514.1341429-8-den@valinux.co.jp
drivers/pci/endpoint/pci-ep-msi.c
include/linux/pci-epf.h