diff options
| author | Koichiro Den <den@valinux.co.jp> | 2026-04-14 23:15:14 +0900 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2026-05-04 18:01:33 -0500 |
| commit | e4f26243953fd3e87df93786b40293ca3a6a465e (patch) | |
| tree | 349672c5d9edb92cd97e52995e87d8146e53a466 /drivers/misc | |
| parent | 8fda2dd209d34396cf49504e2c8dd55d182b14bc (diff) | |
| download | linux-next-e4f26243953fd3e87df93786b40293ca3a6a465e.tar.gz linux-next-e4f26243953fd3e87df93786b40293ca3a6a465e.zip | |
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
Diffstat (limited to 'drivers/misc')
0 files changed, 0 insertions, 0 deletions
