9.8. PCI vNTB 功能

作者:

Frank Li <Frank.Li@nxp.com>

PCI NTB 功能和 PCI vNTB 功能之間的區別在於

PCI NTB 功能需要至少兩個端點例項並連線 HOST1 和 HOST2。

PCI vNTB 功能僅使用一個主機和一個端點 (EP),透過 NTB 連線 EP 和 PCI 主機

+------------+         +---------------------------------------+
|            |         |                                       |
+------------+         |                        +--------------+
| 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

9.8.1. 用於實現 vNTB 的構造

  1. 配置區域

  2. 自用暫存器

  3. 對等暫存器

  4. 門鈴 (DB) 暫存器

  5. 記憶體視窗 (MW)

9.8.1.1. 配置區域:

它與 PCI NTB 功能驅動程式相同

9.8.1.2. 暫存器:

它附加在配置區域之後。

+--------------------------------------------------+ 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

9.8.1.3. 門鈴暫存器:

門鈴暫存器用於主機之間互相中斷。

9.8.1.4. 記憶體視窗:

兩個主機之間實際的資料傳輸將透過記憶體視窗進行。

9.8.2. 建模構造:

32 位 BAR。

BAR 編號

使用的構造

BAR0

配置區域

BAR1

門鈴

BAR2

記憶體視窗 1

BAR3

記憶體視窗 2

BAR4

記憶體視窗 3

BAR5

記憶體視窗 4

64 位 BAR。

BAR 編號

使用的構造

BAR0

配置區域 + 暫存器

BAR1

BAR2

門鈴

BAR3

BAR4

記憶體視窗 1

BAR5