Re: [PATCH v10 7/7] PCI: endpoint: pci-ep-msi: Add embedded doorbell fallback
Frank Li <[email protected]> Mon, 23 Mar 2026 14:48:10 -0400
| Newsgroups | dev.linux.lists.ntb,org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci |
|---|---|
| Message-ID | <acGK6rUIyuJP6gF7@lizhi-Precision-Tower-5810> |
On Mon, Mar 02, 2026 at 04:14:27PM +0900, Koichiro Den wrote: > 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. > > Signed-off-by: Koichiro Den <[email protected]> > --- ... > + */ > + if (doorbell->bar == NO_BAR) { > + phys_base = addr & PAGE_MASK; > + off = addr - phys_base; > + map_size = PAGE_ALIGN(off + sizeof(u32)); > + > + iova_base = dma_map_resource(epc->dev.parent, phys_base, > + map_size, DMA_FROM_DEVICE, 0); DB should write. Is it DMA_TO_DEVICE? Frank > > /** > -- > 2.51.0 >