mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
4.1 KiB
129 lines
4.1 KiB
.. SPDX-License-Identifier: GPL-2.0 |
|
|
|
================= |
|
PCI vNTB Function |
|
================= |
|
|
|
:Author: Frank Li <[email protected]> |
|
|
|
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 |
|
====== =============================== |
|
|
|
|
|
|