9.4. PCI 測試功能¶
- 作者:
Kishon Vijay Abraham I <kishon@ti.com>
傳統上,PCI RC 總是透過使用標準 PCI 卡(如乙太網 PCI 卡、USB PCI 卡或 SATA PCI 卡)進行驗證。然而,隨著 Linux 核心中 EP-core 的加入,現在可以將一個可在 EP 模式下工作的 PCI 控制器配置為測試裝置。
PCI 端點測試裝置是一個虛擬裝置(在軟體中定義),用於測試端點功能,並作為其他 PCI 端點裝置(使用 EP 框架)的示例驅動程式。
PCI 端點測試裝置具有以下暫存器
PCI_ENDPOINT_TEST_MAGIC
PCI_ENDPOINT_TEST_COMMAND
PCI_ENDPOINT_TEST_STATUS
PCI_ENDPOINT_TEST_SRC_ADDR
PCI_ENDPOINT_TEST_DST_ADDR
PCI_ENDPOINT_TEST_SIZE
PCI_ENDPOINT_TEST_CHECKSUM
PCI_ENDPOINT_TEST_IRQ_TYPE
PCI_ENDPOINT_TEST_IRQ_NUMBER
PCI_ENDPOINT_TEST_MAGIC
該暫存器將用於測試 BAR0。一個已知模式將被寫入 MAGIC 暫存器並從中讀回,以驗證 BAR0。
PCI_ENDPOINT_TEST_COMMAND
該暫存器將由主機驅動程式使用,以指示端點裝置必須執行的功能。
位域 |
描述 |
|---|---|
位 0 |
觸發傳統 IRQ |
位 1 |
觸發 MSI IRQ |
位 2 |
觸發 MSI-X IRQ |
位 3 |
讀取命令(從 RC 緩衝區讀取資料) |
位 4 |
寫入命令(將資料寫入 RC 緩衝區) |
位 5 |
複製命令(將資料從一個 RC 緩衝區複製到另一個 RC 緩衝區) |
PCI_ENDPOINT_TEST_STATUS
該暫存器反映了 PCI 端點裝置的狀態。
位域 |
描述 |
|---|---|
位 0 |
讀取成功 |
位 1 |
讀取失敗 |
位 2 |
寫入成功 |
位 3 |
寫入失敗 |
位 4 |
複製成功 |
位 5 |
複製失敗 |
位 6 |
IRQ 已觸發 |
位 7 |
源地址無效 |
位 8 |
目標地址無效 |
PCI_ENDPOINT_TEST_SRC_ADDR
該暫存器包含 COPY/READ 命令的源地址(RC 緩衝區地址)。
PCI_ENDPOINT_TEST_DST_ADDR
該暫存器包含 COPY/WRITE 命令的目標地址(RC 緩衝區地址)。
PCI_ENDPOINT_TEST_IRQ_TYPE
該暫存器包含 READ/WRITE/COPY 命令和觸發 IRQ(傳統/MSI)命令所觸發的中斷型別(傳統/MSI)。
可能型別
傳統 |
0 |
MSI |
1 |
MSI-X |
2 |
PCI_ENDPOINT_TEST_IRQ_NUMBER
該暫存器包含被觸發的 ID 中斷。
允許值
傳統 |
0 |
MSI |
[1 .. 32] |
MSI-X |
[1 .. 2048] |