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]中定义。

    ★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

    ★博文作者未开放评论功能

    参考来源

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