1.. SPDX-License-Identifier: GPL-2.0 2 3================= 4PCI vNTB Function 5================= 6 7:Author: Frank Li <Frank.Li@nxp.com> 8 9The difference between PCI NTB function and PCI vNTB function is 10 11PCI NTB function need at two endpoint instances and connect HOST1 12and HOST2. 13 14PCI vNTB function only use one host and one endpoint(EP), use NTB 15connect EP and PCI host 16 17.. code-block:: text 18 19 20 +------------+ +---------------------------------------+ 21 | | | | 22 +------------+ | +--------------+ 23 | NTB | | | NTB | 24 | NetDev | | | NetDev | 25 +------------+ | +--------------+ 26 | NTB | | | NTB | 27 | Transfer | | | Transfer | 28 +------------+ | +--------------+ 29 | | | | | 30 | PCI NTB | | | | 31 | EPF | | | | 32 | Driver | | | PCI Virtual | 33 | | +---------------+ | NTB Driver | 34 | | | PCI EP NTB |<------>| | 35 | | | FN Driver | | | 36 +------------+ +---------------+ +--------------+ 37 | | | | | | 38 | PCI BUS | <-----> | PCI EP BUS | | Virtual PCI | 39 | | PCI | | | BUS | 40 +------------+ +---------------+--------+--------------+ 41 PCI RC PCI EP 42 43Constructs used for Implementing vNTB 44===================================== 45 46 1) Config Region 47 2) Self Scratchpad Registers 48 3) Peer Scratchpad Registers 49 4) Doorbell (DB) Registers 50 5) Memory Window (MW) 51 52 53Config Region: 54-------------- 55 56It is same as PCI NTB Function driver 57 58Scratchpad Registers: 59--------------------- 60 61 It is appended after Config region. 62 63 +--------------------------------------------------+ Base 64 | | 65 | | 66 | | 67 | Common Config Register | 68 | | 69 | | 70 | | 71 +-----------------------+--------------------------+ Base + span_offset 72 | | | 73 | Peer Span Space | Span Space | 74 | | | 75 | | | 76 +-----------------------+--------------------------+ Base + span_offset 77 | | | + span_count * 4 78 | | | 79 | Span Space | Peer Span Space | 80 | | | 81 +-----------------------+--------------------------+ 82 Virtual PCI Pcie Endpoint 83 NTB Driver NTB Driver 84 85 86Doorbell Registers: 87------------------- 88 89 Doorbell Registers are used by the hosts to interrupt each other. 90 91Memory Window: 92-------------- 93 94 Actual transfer of data between the two hosts will happen using the 95 memory window. 96 97Modeling Constructs: 98==================== 99 10032-bit BARs. 101 102====== =============== 103BAR NO CONSTRUCTS USED 104====== =============== 105BAR0 Config Region 106BAR1 Doorbell 107BAR2 Memory Window 1 108BAR3 Memory Window 2 109BAR4 Memory Window 3 110BAR5 Memory Window 4 111====== =============== 112 11364-bit BARs. 114 115====== =============================== 116BAR NO CONSTRUCTS USED 117====== =============================== 118BAR0 Config Region + Scratchpad 119BAR1 120BAR2 Doorbell 121BAR3 122BAR4 Memory Window 1 123BAR5 124====== =============================== 125 126 127