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