xref: /linux/Documentation/PCI/endpoint/pci-vntb-function.rst (revision 4ac8c8e52cd915c7efbd60f1eab4afe855f2e7c4)
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