mbox series

[v7,00/18] Implement NTB Controller using multiple PCI EP

Message ID 20200930153519.7282-1-kishon@ti.com (mailing list archive)
Headers show
Series Implement NTB Controller using multiple PCI EP | expand

Message

Kishon Vijay Abraham I Sept. 30, 2020, 3:35 p.m. UTC
This series is about implementing SW defined Non-Transparent Bridge (NTB)
using multiple endpoint (EP) 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. Link to presentation
and video 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]
v4 patch series can be found @ [6]
v5 patch series can be found @ [7]
v6 patch series can be found @ [8]

Changes from v6:
1) Fixed issues when multiple NTB devices are creating using multiple
   functions
2) Fixed issue with writing scratchpad register
3) Created a video demo @ [9]

Changes from v5:
1) Fixed a formatting issue in Kconfig pointed out by Randy
2) Checked for Error or Null in pci_epc_add_epf()

Changes from v4:
1) Fixed error condition checks in pci_epc_add_epf()

Changes from v3:
1) Fixed Documentation edits suggested by Randy Dunlap <rdunlap@infradead.org>

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://linuxplumbersconf.org/event/4/contributions/395/
[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
[6] -> http://lore.kernel.org/r/20200915042110.3015-1-kishon@ti.com
[7] -> http://lore.kernel.org/r/20200918064227.1463-1-kishon@ti.com
[8] -> http://lore.kernel.org/r/20200924092519.17082-1-kishon@ti.com
[9] -> https://youtu.be/dLKKxrg5-rY

Kishon Vijay Abraham I (18):
  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: cadence: Configure LM_EP_FUNC_CFG based on epc->function_num_map
  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 configfs 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               |  755 ++++++
 drivers/ntb/test/ntb_tool.c                   |    1 +
 .../pci/controller/cadence/pcie-cadence-ep.c  |   60 +-
 drivers/pci/endpoint/functions/Kconfig        |   12 +
 drivers/pci/endpoint/functions/Makefile       |    1 +
 drivers/pci/endpoint/functions/pci-epf-ntb.c  | 2114 +++++++++++++++++
 drivers/pci/endpoint/functions/pci-epf-test.c |   13 +-
 drivers/pci/endpoint/pci-ep-cfs.c             |  176 +-
 drivers/pci/endpoint/pci-epc-core.c           |  130 +-
 drivers/pci/endpoint/pci-epf-core.c           |  105 +-
 include/linux/pci-epc.h                       |   39 +-
 include/linux/pci-epf.h                       |   28 +-
 include/linux/pci_ids.h                       |    1 +
 23 files changed, 3934 insertions(+), 73 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

Comments

Kishon Vijay Abraham I Oct. 5, 2020, 5:57 a.m. UTC | #1
Hi Jon Mason, Allen Hubbe, Dave Jiang,

On 30/09/20 9:05 pm, Kishon Vijay Abraham I wrote:
> This series is about implementing SW defined Non-Transparent Bridge (NTB)
> using multiple endpoint (EP) 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 series has two patches that adds to drivers/ntb/ directory.
[PATCH v7 15/18] NTB: Add support for EPF PCI-Express Non-Transparent
Bridge and [PATCH v7 16/18] NTB: tool: Enable the NTB/PCIe link on the
local or remote side of bridge.

If you can review and Ack the above patches, Lorenzo can queue it along
with the rest of the series.

Thanks for your help in advance.

Best Regards,
Kishon

> 
> This was presented in Linux Plumbers Conference. Link to presentation
> and video 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]
> v4 patch series can be found @ [6]
> v5 patch series can be found @ [7]
> v6 patch series can be found @ [8]
> 
> Changes from v6:
> 1) Fixed issues when multiple NTB devices are creating using multiple
>    functions
> 2) Fixed issue with writing scratchpad register
> 3) Created a video demo @ [9]
> 
> Changes from v5:
> 1) Fixed a formatting issue in Kconfig pointed out by Randy
> 2) Checked for Error or Null in pci_epc_add_epf()
> 
> Changes from v4:
> 1) Fixed error condition checks in pci_epc_add_epf()
> 
> Changes from v3:
> 1) Fixed Documentation edits suggested by Randy Dunlap <rdunlap@infradead.org>
> 
> 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://linuxplumbersconf.org/event/4/contributions/395/
> [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
> [6] -> http://lore.kernel.org/r/20200915042110.3015-1-kishon@ti.com
> [7] -> http://lore.kernel.org/r/20200918064227.1463-1-kishon@ti.com
> [8] -> http://lore.kernel.org/r/20200924092519.17082-1-kishon@ti.com
> [9] -> https://youtu.be/dLKKxrg5-rY
> 
> Kishon Vijay Abraham I (18):
>   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: cadence: Configure LM_EP_FUNC_CFG based on epc->function_num_map
>   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 configfs 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               |  755 ++++++
>  drivers/ntb/test/ntb_tool.c                   |    1 +
>  .../pci/controller/cadence/pcie-cadence-ep.c  |   60 +-
>  drivers/pci/endpoint/functions/Kconfig        |   12 +
>  drivers/pci/endpoint/functions/Makefile       |    1 +
>  drivers/pci/endpoint/functions/pci-epf-ntb.c  | 2114 +++++++++++++++++
>  drivers/pci/endpoint/functions/pci-epf-test.c |   13 +-
>  drivers/pci/endpoint/pci-ep-cfs.c             |  176 +-
>  drivers/pci/endpoint/pci-epc-core.c           |  130 +-
>  drivers/pci/endpoint/pci-epf-core.c           |  105 +-
>  include/linux/pci-epc.h                       |   39 +-
>  include/linux/pci-epf.h                       |   28 +-
>  include/linux/pci_ids.h                       |    1 +
>  23 files changed, 3934 insertions(+), 73 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
>
Kishon Vijay Abraham I Oct. 20, 2020, 8:15 a.m. UTC | #2
Hi,

On 05/10/20 11:27 am, Kishon Vijay Abraham I wrote:
> Hi Jon Mason, Allen Hubbe, Dave Jiang,
> 
> On 30/09/20 9:05 pm, Kishon Vijay Abraham I wrote:
>> This series is about implementing SW defined Non-Transparent Bridge (NTB)
>> using multiple endpoint (EP) 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 series has two patches that adds to drivers/ntb/ directory.
> [PATCH v7 15/18] NTB: Add support for EPF PCI-Express Non-Transparent
> Bridge and [PATCH v7 16/18] NTB: tool: Enable the NTB/PCIe link on the
> local or remote side of bridge.
> 
> If you can review and Ack the above patches, Lorenzo can queue it along
> with the rest of the series.
> 
> Thanks for your help in advance.

Gentle ping on this series.

Thanks
Kishon
> 
> Best Regards,
> Kishon
> 
>>
>> This was presented in Linux Plumbers Conference. Link to presentation
>> and video 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]
>> v4 patch series can be found @ [6]
>> v5 patch series can be found @ [7]
>> v6 patch series can be found @ [8]
>>
>> Changes from v6:
>> 1) Fixed issues when multiple NTB devices are creating using multiple
>>    functions
>> 2) Fixed issue with writing scratchpad register
>> 3) Created a video demo @ [9]
>>
>> Changes from v5:
>> 1) Fixed a formatting issue in Kconfig pointed out by Randy
>> 2) Checked for Error or Null in pci_epc_add_epf()
>>
>> Changes from v4:
>> 1) Fixed error condition checks in pci_epc_add_epf()
>>
>> Changes from v3:
>> 1) Fixed Documentation edits suggested by Randy Dunlap <rdunlap@infradead.org>
>>
>> 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://linuxplumbersconf.org/event/4/contributions/395/
>> [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
>> [6] -> http://lore.kernel.org/r/20200915042110.3015-1-kishon@ti.com
>> [7] -> http://lore.kernel.org/r/20200918064227.1463-1-kishon@ti.com
>> [8] -> http://lore.kernel.org/r/20200924092519.17082-1-kishon@ti.com
>> [9] -> https://youtu.be/dLKKxrg5-rY
>>
>> Kishon Vijay Abraham I (18):
>>   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: cadence: Configure LM_EP_FUNC_CFG based on epc->function_num_map
>>   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 configfs 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               |  755 ++++++
>>  drivers/ntb/test/ntb_tool.c                   |    1 +
>>  .../pci/controller/cadence/pcie-cadence-ep.c  |   60 +-
>>  drivers/pci/endpoint/functions/Kconfig        |   12 +
>>  drivers/pci/endpoint/functions/Makefile       |    1 +
>>  drivers/pci/endpoint/functions/pci-epf-ntb.c  | 2114 +++++++++++++++++
>>  drivers/pci/endpoint/functions/pci-epf-test.c |   13 +-
>>  drivers/pci/endpoint/pci-ep-cfs.c             |  176 +-
>>  drivers/pci/endpoint/pci-epc-core.c           |  130 +-
>>  drivers/pci/endpoint/pci-epf-core.c           |  105 +-
>>  include/linux/pci-epc.h                       |   39 +-
>>  include/linux/pci-epf.h                       |   28 +-
>>  include/linux/pci_ids.h                       |    1 +
>>  23 files changed, 3934 insertions(+), 73 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
>>
Lorenzo Pieralisi Oct. 20, 2020, 1:18 p.m. UTC | #3
On Tue, Oct 20, 2020 at 01:45:45PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On 05/10/20 11:27 am, Kishon Vijay Abraham I wrote:
> > Hi Jon Mason, Allen Hubbe, Dave Jiang,
> > 
> > On 30/09/20 9:05 pm, Kishon Vijay Abraham I wrote:
> >> This series is about implementing SW defined Non-Transparent Bridge (NTB)
> >> using multiple endpoint (EP) 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 series has two patches that adds to drivers/ntb/ directory.
> > [PATCH v7 15/18] NTB: Add support for EPF PCI-Express Non-Transparent
> > Bridge and [PATCH v7 16/18] NTB: tool: Enable the NTB/PCIe link on the
> > local or remote side of bridge.
> > 
> > If you can review and Ack the above patches, Lorenzo can queue it along
> > with the rest of the series.
> > 
> > Thanks for your help in advance.
> 
> Gentle ping on this series.

I am not queueing any more patches for this merge window - we postpone
this series to v5.11 and in the interim it would be good to define some
possible users.

Thanks,
Lorenzo

> Thanks
> Kishon
> > 
> > Best Regards,
> > Kishon
> > 
> >>
> >> This was presented in Linux Plumbers Conference. Link to presentation
> >> and video 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]
> >> v4 patch series can be found @ [6]
> >> v5 patch series can be found @ [7]
> >> v6 patch series can be found @ [8]
> >>
> >> Changes from v6:
> >> 1) Fixed issues when multiple NTB devices are creating using multiple
> >>    functions
> >> 2) Fixed issue with writing scratchpad register
> >> 3) Created a video demo @ [9]
> >>
> >> Changes from v5:
> >> 1) Fixed a formatting issue in Kconfig pointed out by Randy
> >> 2) Checked for Error or Null in pci_epc_add_epf()
> >>
> >> Changes from v4:
> >> 1) Fixed error condition checks in pci_epc_add_epf()
> >>
> >> Changes from v3:
> >> 1) Fixed Documentation edits suggested by Randy Dunlap <rdunlap@infradead.org>
> >>
> >> 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://linuxplumbersconf.org/event/4/contributions/395/
> >> [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
> >> [6] -> http://lore.kernel.org/r/20200915042110.3015-1-kishon@ti.com
> >> [7] -> http://lore.kernel.org/r/20200918064227.1463-1-kishon@ti.com
> >> [8] -> http://lore.kernel.org/r/20200924092519.17082-1-kishon@ti.com
> >> [9] -> https://youtu.be/dLKKxrg5-rY
> >>
> >> Kishon Vijay Abraham I (18):
> >>   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: cadence: Configure LM_EP_FUNC_CFG based on epc->function_num_map
> >>   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 configfs 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               |  755 ++++++
> >>  drivers/ntb/test/ntb_tool.c                   |    1 +
> >>  .../pci/controller/cadence/pcie-cadence-ep.c  |   60 +-
> >>  drivers/pci/endpoint/functions/Kconfig        |   12 +
> >>  drivers/pci/endpoint/functions/Makefile       |    1 +
> >>  drivers/pci/endpoint/functions/pci-epf-ntb.c  | 2114 +++++++++++++++++
> >>  drivers/pci/endpoint/functions/pci-epf-test.c |   13 +-
> >>  drivers/pci/endpoint/pci-ep-cfs.c             |  176 +-
> >>  drivers/pci/endpoint/pci-epc-core.c           |  130 +-
> >>  drivers/pci/endpoint/pci-epf-core.c           |  105 +-
> >>  include/linux/pci-epc.h                       |   39 +-
> >>  include/linux/pci-epf.h                       |   28 +-
> >>  include/linux/pci_ids.h                       |    1 +
> >>  23 files changed, 3934 insertions(+), 73 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
> >>
Kishon Vijay Abraham I Nov. 3, 2020, 7:58 a.m. UTC | #4
+Alan

Hi Jon Mason, Allen Hubbe, Dave Jiang,

On 20/10/20 6:48 pm, Lorenzo Pieralisi wrote:
> On Tue, Oct 20, 2020 at 01:45:45PM +0530, Kishon Vijay Abraham I wrote:
>> Hi,
>>
>> On 05/10/20 11:27 am, Kishon Vijay Abraham I wrote:
>>> Hi Jon Mason, Allen Hubbe, Dave Jiang,
>>>
>>> On 30/09/20 9:05 pm, Kishon Vijay Abraham I wrote:
>>>> This series is about implementing SW defined Non-Transparent Bridge (NTB)
>>>> using multiple endpoint (EP) 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 series has two patches that adds to drivers/ntb/ directory.
>>> [PATCH v7 15/18] NTB: Add support for EPF PCI-Express Non-Transparent
>>> Bridge and [PATCH v7 16/18] NTB: tool: Enable the NTB/PCIe link on the
>>> local or remote side of bridge.
>>>
>>> If you can review and Ack the above patches, Lorenzo can queue it along
>>> with the rest of the series.

Would you be able to review and Ack the NTB parts of this series?
>>>
>>> Thanks for your help in advance.
>>
>> Gentle ping on this series.
> 
> I am not queueing any more patches for this merge window - we postpone
> this series to v5.11 and in the interim it would be good to define some
> possible users.

Alan, Do you have a system where you can test this series? It only needs
two endpoint instances on a single system.

Thanks
Kishon

> 
> Thanks,
> Lorenzo
> 
>> Thanks
>> Kishon
>>>
>>> Best Regards,
>>> Kishon
>>>
>>>>
>>>> This was presented in Linux Plumbers Conference. Link to presentation
>>>> and video 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]
>>>> v4 patch series can be found @ [6]
>>>> v5 patch series can be found @ [7]
>>>> v6 patch series can be found @ [8]
>>>>
>>>> Changes from v6:
>>>> 1) Fixed issues when multiple NTB devices are creating using multiple
>>>>    functions
>>>> 2) Fixed issue with writing scratchpad register
>>>> 3) Created a video demo @ [9]
>>>>
>>>> Changes from v5:
>>>> 1) Fixed a formatting issue in Kconfig pointed out by Randy
>>>> 2) Checked for Error or Null in pci_epc_add_epf()
>>>>
>>>> Changes from v4:
>>>> 1) Fixed error condition checks in pci_epc_add_epf()
>>>>
>>>> Changes from v3:
>>>> 1) Fixed Documentation edits suggested by Randy Dunlap <rdunlap@infradead.org>
>>>>
>>>> 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://linuxplumbersconf.org/event/4/contributions/395/
>>>> [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
>>>> [6] -> http://lore.kernel.org/r/20200915042110.3015-1-kishon@ti.com
>>>> [7] -> http://lore.kernel.org/r/20200918064227.1463-1-kishon@ti.com
>>>> [8] -> http://lore.kernel.org/r/20200924092519.17082-1-kishon@ti.com
>>>> [9] -> https://youtu.be/dLKKxrg5-rY
>>>>
>>>> Kishon Vijay Abraham I (18):
>>>>   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: cadence: Configure LM_EP_FUNC_CFG based on epc->function_num_map
>>>>   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 configfs 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               |  755 ++++++
>>>>  drivers/ntb/test/ntb_tool.c                   |    1 +
>>>>  .../pci/controller/cadence/pcie-cadence-ep.c  |   60 +-
>>>>  drivers/pci/endpoint/functions/Kconfig        |   12 +
>>>>  drivers/pci/endpoint/functions/Makefile       |    1 +
>>>>  drivers/pci/endpoint/functions/pci-epf-ntb.c  | 2114 +++++++++++++++++
>>>>  drivers/pci/endpoint/functions/pci-epf-test.c |   13 +-
>>>>  drivers/pci/endpoint/pci-ep-cfs.c             |  176 +-
>>>>  drivers/pci/endpoint/pci-epc-core.c           |  130 +-
>>>>  drivers/pci/endpoint/pci-epf-core.c           |  105 +-
>>>>  include/linux/pci-epc.h                       |   39 +-
>>>>  include/linux/pci-epf.h                       |   28 +-
>>>>  include/linux/pci_ids.h                       |    1 +
>>>>  23 files changed, 3934 insertions(+), 73 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
>>>>