Based on kernel version 6.8
. Page generated on 2024-03-11 21:26 EST
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | .. 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 ====== =============================== |