AMD IOMMU規格 (五)

關鍵字 :AMD IOMMUSMI

IOMMU的資料結構

主機軟體必須維護最多八個供IOMMU使用的記憶體資料結構。這些資料結構包括:

  1. Device Table:是一個由DeviceID索引的表。每個設備表條目包含模式欄位、指向I/O頁表的指標、指向中斷重映控制表的指標、一組控制位元和16位的DomainID。DomainID充當地址空間標識符,允許共享相同I/O頁表的多個設備共享IOMMU上的相同轉譯記憶體資源。對於共享相同DomainID的所有設備,其頁表必須相同。
  2. I/O page Table:每個設備表條目可以指定不同的I/O頁表,或者不同的設備表條目可以共享相同的I/O頁表。每次IOMMU處理對記憶體的設備存取時,它都會在其轉譯記憶體和/或適當的I/O頁表中查找設備的虛擬位址(DVA),以確定該設備是否具有權限,以及(如果允許)訪問的系統實體位址。

  3. Command Buffer:IOMMU通過位於系統記憶體中的循環緩衝區接受由處理器排程的命令。

  4. Event Log:IOMMU通過另一個循環緩衝區,即事件日誌,向處理器報告非典型的事件。

  5. Interrupt Remapping Table:每個設備表條目可以指定一個中斷重映表。每次IOMMU處理設備中斷請求時,它都會查找IRTE以將中斷重映到具有轉譯向量的目的地。
  6. Peripheral Page Request Log:IOMMU可以接受來自支援PRI的周邊設備的請求,以處理頁更改請求。這些請求被記錄在一個位於系統記憶體中的循環緩衝區,即PPR日誌
  7. Guest Virtual APIC Table:IOMMU可以更新用戶中斷請求狀態。


  • Guest Virtual APIC Log:IOMMU可以報告發送到未運行的用戶的用戶虛擬中斷。

  • IOMMU的基本功能支持一階的轉譯表,用於地址轉譯和中斷重映。事件日誌是唯一由IOMMU寫入系統內存的數據結構。虛擬地址(GPA)的最大大小在能力偏移10h[VAsize]中定義,實體地址(SPA)的最大大小在能力偏移10h[PAsize]中定義。

    IOMMU可以選擇性地支持一階和二階的轉譯表,以及客戶APIC虛擬化、硬體錯誤暫存器、性能計數器暫存器、週邊設備頁面請求服務、x2APIC和SMI過濾器。IOMMU可以寫入事件日誌、外設頁請求日誌、用戶虛擬APIC表、用戶虛擬APIC日誌和用戶頁表。用戶虛擬地址(GVA)的最大大小在能力偏移10h[GVAsize]中定義。

    ★博文內容參考自 網站,與平台無關,如有違法或侵權,請與網站管理員聯繫。

    ★博文作者未開放評論功能

    參考來源

    AMD: https://www.amd.com/content/dam/amd/en/documents/processor-tech-docs/specifications/48882_IOMMU.pdf