130 lines
4.1 KiB
ReStructuredText
130 lines
4.1 KiB
ReStructuredText
.. SPDX-License-Identifier: GPL-2.0
|
|
|
|
=================
|
|
PCI vNTB Function
|
|
=================
|
|
|
|
:Author: Frank Li <Frank.Li@nxp.com>
|
|
|
|
The difference between PCI NTB function and PCI vNTB function is
|
|
|
|
PCI NTB function need at two endpoint instances and connect HOST1
|
|
and HOST2.
|
|
|
|
PCI vNTB function only use one host and one endpoint(EP), use NTB
|
|
connect EP and PCI host
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
+------------+ +---------------------------------------+
|
|
| | | |
|
|
+------------+ | +--------------+
|
|
| NTB | | | NTB |
|
|
| NetDev | | | NetDev |
|
|
+------------+ | +--------------+
|
|
| NTB | | | NTB |
|
|
| Transfer | | | Transfer |
|
|
+------------+ | +--------------+
|
|
| | | | |
|
|
| PCI NTB | | | |
|
|
| EPF | | | |
|
|
| Driver | | | PCI Virtual |
|
|
| | +---------------+ | NTB Driver |
|
|
| | | PCI EP NTB |<------>| |
|
|
| | | FN Driver | | |
|
|
+------------+ +---------------+ +--------------+
|
|
| | | | | |
|
|
| PCI BUS | <-----> | PCI EP BUS | | Virtual PCI |
|
|
| | PCI | | | BUS |
|
|
+------------+ +---------------+--------+--------------+
|
|
PCI RC PCI EP
|
|
|
|
Constructs used for Implementing vNTB
|
|
=====================================
|
|
|
|
1) Config Region
|
|
2) Self Scratchpad Registers
|
|
3) Peer Scratchpad Registers
|
|
4) Doorbell (DB) Registers
|
|
5) Memory Window (MW)
|
|
|
|
|
|
Config Region:
|
|
--------------
|
|
|
|
It is same as PCI NTB Function driver
|
|
|
|
Scratchpad Registers:
|
|
---------------------
|
|
|
|
It is appended after Config region.
|
|
|
|
.. code-block:: text
|
|
|
|
|
|
+--------------------------------------------------+ Base
|
|
| |
|
|
| |
|
|
| |
|
|
| Common Config Register |
|
|
| |
|
|
| |
|
|
| |
|
|
+-----------------------+--------------------------+ Base + span_offset
|
|
| | |
|
|
| Peer Span Space | Span Space |
|
|
| | |
|
|
| | |
|
|
+-----------------------+--------------------------+ Base + span_offset
|
|
| | | + span_count * 4
|
|
| | |
|
|
| Span Space | Peer Span Space |
|
|
| | |
|
|
+-----------------------+--------------------------+
|
|
Virtual PCI Pcie Endpoint
|
|
NTB Driver NTB Driver
|
|
|
|
|
|
Doorbell Registers:
|
|
-------------------
|
|
|
|
Doorbell Registers are used by the hosts to interrupt each other.
|
|
|
|
Memory Window:
|
|
--------------
|
|
|
|
Actual transfer of data between the two hosts will happen using the
|
|
memory window.
|
|
|
|
Modeling Constructs:
|
|
====================
|
|
|
|
32-bit BARs.
|
|
|
|
====== ===============
|
|
BAR NO CONSTRUCTS USED
|
|
====== ===============
|
|
BAR0 Config Region
|
|
BAR1 Doorbell
|
|
BAR2 Memory Window 1
|
|
BAR3 Memory Window 2
|
|
BAR4 Memory Window 3
|
|
BAR5 Memory Window 4
|
|
====== ===============
|
|
|
|
64-bit BARs.
|
|
|
|
====== ===============================
|
|
BAR NO CONSTRUCTS USED
|
|
====== ===============================
|
|
BAR0 Config Region + Scratchpad
|
|
BAR1
|
|
BAR2 Doorbell
|
|
BAR3
|
|
BAR4 Memory Window 1
|
|
BAR5
|
|
====== ===============================
|
|
|
|
|