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