From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C14AC43461 for ; Tue, 15 Sep 2020 04:21:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F69320771 for ; Tue, 15 Sep 2020 04:21:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="LIBUtfCg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726091AbgIOEVj (ORCPT ); Tue, 15 Sep 2020 00:21:39 -0400 Received: from fllv0015.ext.ti.com ([198.47.19.141]:42492 "EHLO fllv0015.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726082AbgIOEVh (ORCPT ); Tue, 15 Sep 2020 00:21:37 -0400 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 08F4LKPB017202; Mon, 14 Sep 2020 23:21:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1600143680; bh=MP+rLSwocP91ovcyYhzwFYA2V0wYIwd9JxwMXQlCyK4=; h=From:To:CC:Subject:Date; b=LIBUtfCgMKkKCe1+igSARJbwdmFxQY5xXHaxv60vIp9EN3UZmATW5wQtjK6BrAZSA Rvf3xbypTlBPoiSaN5cynijjfL/mPYaAR4gk91AD5tPdRhjATerwYhqhahNst1JGUM +LwOsSJKkq2mFLTlos2sRQaEyhSLU+Vl0RHPCTPk= Received: from DFLE102.ent.ti.com (dfle102.ent.ti.com [10.64.6.23]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id 08F4LKtF007760; Mon, 14 Sep 2020 23:21:20 -0500 Received: from DFLE106.ent.ti.com (10.64.6.27) by DFLE102.ent.ti.com (10.64.6.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Mon, 14 Sep 2020 23:21:19 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DFLE106.ent.ti.com (10.64.6.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Mon, 14 Sep 2020 23:21:19 -0500 Received: from a0393678-ssd.dal.design.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 08F4LDMg028615; Mon, 14 Sep 2020 23:21:14 -0500 From: Kishon Vijay Abraham I To: Bjorn Helgaas , Jonathan Corbet , Lorenzo Pieralisi , Jon Mason , Dave Jiang , Allen Hubbe , Rob Herring CC: Arnd Bergmann , Greg Kroah-Hartman , Tom Joseph , , , , , Kishon Vijay Abraham I Subject: [PATCH v4 00/17] Implement NTB Controller using multiple PCI EP Date: Tue, 15 Sep 2020 09:50:53 +0530 Message-ID: <20200915042110.3015-1-kishon@ti.com> X-Mailer: git-send-email 2.17.1 MIME-Version: 1.0 Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org This series is about implementing SW defined NTB using multiple endpoint instances. This series has been tested using 2 endpoint instances in J7 connected to J7 board on one end and DRA7 board on the other end. However there is nothing platform specific for the NTB functionality. This was presented in Linux Plumbers Conference. The presentation can be found @ [1] RFC patch series can be found @ [2] v1 patch series can be found @ [3] v2 patch series can be found @ [4] v3 patch series can be found @ [5] Changes from v3: 1) Fixed Documentation edits suggested by Randy Dunlap Changes from v2: 1) Add support for the user to create sub-directory of 'EPF Device' directory (for endpoint function specific configuration using configfs). 2) Add documentation for NTB specific attributes in configfs 3) Check for PCI_CLASS_MEMORY_RAM (PCIe class) before binding ntb_hw_epf driver 4) Other documentation fixes Changes from v1: 1) As per Rob's comment, removed support for creating NTB function device from DT 2) Add support to create NTB EPF device using configfs (added support in configfs to associate primary and secondary EPC with EPF. Changes from RFC: 1) Converted the DT binding patches to YAML schema and merged the DT binding patches together 2) NTB documentation is converted to .rst 3) One HOST can now interrupt the other HOST using MSI-X interrupts 4) Added support for teardown of memory window and doorbell configuration 5) Add support to provide support 64-bit memory window size from DT [1] -> https://www.linuxplumbersconf.org/event/4/contributions/395/attachments/284/481/Implementing_NTB_Controller_Using_PCIe_Endpoint_-_final.pdf [2] -> http://lore.kernel.org/r/20190926112933.8922-1-kishon@ti.com [3] -> http://lore.kernel.org/r/20200514145927.17555-1-kishon@ti.com [4] -> http://lore.kernel.org/r/20200611130525.22746-1-kishon@ti.com [5] -> http://lore.kernel.org/r/20200904075052.8911-1-kishon@ti.com Kishon Vijay Abraham I (17): Documentation: PCI: Add specification for the *PCI NTB* function device PCI: endpoint: Make *_get_first_free_bar() take into account 64 bit BAR PCI: endpoint: Add helper API to get the 'next' unreserved BAR PCI: endpoint: Make *_free_bar() to return error codes on failure PCI: endpoint: Remove unused pci_epf_match_device() PCI: endpoint: Add support to associate secondary EPC with EPF PCI: endpoint: Add support in configfs to associate two EPCs with EPF PCI: endpoint: Add pci_epc_ops to map MSI irq PCI: endpoint: Add pci_epf_ops for epf drivers to expose function specific attrs PCI: endpoint: Allow user to create sub-directory of 'EPF Device' directory PCI: cadence: Implement ->msi_map_irq() ops PCI: endpoint: Add EP function driver to provide NTB functionality PCI: Add TI J721E device to pci ids NTB: Add support for EPF PCI-Express Non-Transparent Bridge NTB: tool: Enable the NTB/PCIe link on the local or remote side of bridge Documentation: PCI: Add binding documentation for pci-ntb endpoint function Documentation: PCI: Add userguide for PCI endpoint NTB function .../PCI/endpoint/function/binding/pci-ntb.rst | 38 + Documentation/PCI/endpoint/index.rst | 3 + .../PCI/endpoint/pci-endpoint-cfs.rst | 10 + .../PCI/endpoint/pci-ntb-function.rst | 351 +++ Documentation/PCI/endpoint/pci-ntb-howto.rst | 160 ++ drivers/misc/pci_endpoint_test.c | 1 - drivers/ntb/hw/Kconfig | 1 + drivers/ntb/hw/Makefile | 1 + drivers/ntb/hw/epf/Kconfig | 6 + drivers/ntb/hw/epf/Makefile | 1 + drivers/ntb/hw/epf/ntb_hw_epf.c | 751 ++++++ drivers/ntb/test/ntb_tool.c | 1 + .../pci/controller/cadence/pcie-cadence-ep.c | 50 + drivers/pci/endpoint/functions/Kconfig | 12 + drivers/pci/endpoint/functions/Makefile | 1 + drivers/pci/endpoint/functions/pci-epf-ntb.c | 2106 +++++++++++++++++ drivers/pci/endpoint/functions/pci-epf-test.c | 13 +- drivers/pci/endpoint/pci-ep-cfs.c | 176 +- drivers/pci/endpoint/pci-epc-core.c | 131 +- drivers/pci/endpoint/pci-epf-core.c | 105 +- include/linux/pci-epc.h | 38 +- include/linux/pci-epf.h | 28 +- include/linux/pci_ids.h | 1 + 23 files changed, 3918 insertions(+), 67 deletions(-) create mode 100644 Documentation/PCI/endpoint/function/binding/pci-ntb.rst create mode 100644 Documentation/PCI/endpoint/pci-ntb-function.rst create mode 100644 Documentation/PCI/endpoint/pci-ntb-howto.rst create mode 100644 drivers/ntb/hw/epf/Kconfig create mode 100644 drivers/ntb/hw/epf/Makefile create mode 100644 drivers/ntb/hw/epf/ntb_hw_epf.c create mode 100644 drivers/pci/endpoint/functions/pci-epf-ntb.c -- 2.17.1