| .. 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 | |
| ====== =============================== | |