Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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
61It is appended after Config region.
62
63.. code-block:: text
64
65
66 +--------------------------------------------------+ Base
67 | |
68 | |
69 | |
70 | Common Config Register |
71 | |
72 | |
73 | |
74 +-----------------------+--------------------------+ Base + span_offset
75 | | |
76 | Peer Span Space | Span Space |
77 | | |
78 | | |
79 +-----------------------+--------------------------+ Base + span_offset
80 | | | + span_count * 4
81 | | |
82 | Span Space | Peer Span Space |
83 | | |
84 +-----------------------+--------------------------+
85 Virtual PCI Pcie Endpoint
86 NTB Driver NTB Driver
87
88
89Doorbell Registers:
90-------------------
91
92 Doorbell Registers are used by the hosts to interrupt each other.
93
94Memory Window:
95--------------
96
97 Actual transfer of data between the two hosts will happen using the
98 memory window.
99
100Modeling Constructs:
101====================
102
10332-bit BARs.
104
105====== ===============
106BAR NO CONSTRUCTS USED
107====== ===============
108BAR0 Config Region
109BAR1 Doorbell
110BAR2 Memory Window 1
111BAR3 Memory Window 2
112BAR4 Memory Window 3
113BAR5 Memory Window 4
114====== ===============
115
11664-bit BARs.
117
118====== ===============================
119BAR NO CONSTRUCTS USED
120====== ===============================
121BAR0 Config Region + Scratchpad
122BAR1
123BAR2 Doorbell
124BAR3
125BAR4 Memory Window 1
126BAR5
127====== ===============================
128
129