Messages in this thread | | | From | Frank Li <> | Subject | [PATCH v2 0/5] Add RC-to-EP doorbell with platform MSI controller | Date | Mon, 11 Sep 2023 18:09:15 -0400 |
| |
┌────────────┐ ┌───────────────────────────────────┐ ┌────────────────┐ │ │ │ │ │ │ │ │ │ PCI Endpoint │ │ PCI Host │ │ │ │ │ │ │ │ │◄──┤ 1.platform_msi_domain_alloc_irqs()│ │ │ │ │ │ │ │ │ │ MSI ├──►│ 2.write_msi_msg() ├──►├─BAR<n> │ │ Controller │ │ update doorbell register address│ │ │ │ │ │ for BAR │ │ │ │ │ │ │ │ 3. Write BAR<n>│ │ │◄──┼───────────────────────────────────┼───┤ │ │ │ │ │ │ │ │ ├──►│ 4.Irq Handle │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └────────────┘ └───────────────────────────────────┘ └────────────────┘
This patches based on old https://lore.kernel.org/imx/20221124055036.1630573-1-Frank.Li@nxp.com/
Original patch only target to vntb driver. But actually it is common method.
This patches add new API to pci-epf-core, so any EP driver can use it.
The key point is comments from Thomas Gleixner, who suggest use new PCI/IMS. But arm platform change still not be merged yet.
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git devmsi-v2-arm
So I still use existed method implement RC to EP doorbell.
If Thomas Gleixner want to continue work on devmsi-v2-arm, I can help test and update this patch.
Change from v1 to v2 - Add missed patch for endpont/pci-epf-test.c - Move alloc and free to epc driver from epf. - Provide general help function for EPC driver to alloc platform msi irq. - Fixed manivannan's comments.
Frank Li (5): PCI: endpoint: Add RC-to-EP doorbell support using platform MSI controller PCI: dwc: add doorbell support by use MSI controller PCI: endpoint: pci-epf-test: add doorbell test misc: pci_endpoint_test: Add doorbell test case tools: PCI: Add 'B' option for test doorbell
drivers/misc/pci_endpoint_test.c | 48 +++++ .../pci/controller/dwc/pcie-designware-ep.c | 2 + drivers/pci/endpoint/functions/pci-epf-test.c | 59 +++++- drivers/pci/endpoint/pci-epc-core.c | 192 ++++++++++++++++++ drivers/pci/endpoint/pci-epf-core.c | 44 ++++ include/linux/pci-epc.h | 6 + include/linux/pci-epf.h | 7 + include/uapi/linux/pcitest.h | 1 + tools/pci/pcitest.c | 16 +- 9 files changed, 373 insertions(+), 2 deletions(-)
-- 2.34.1
| |