zoukankan      html  css  js  c++  java
  • Intel vt-d技术资料收集

    Intel的vt-d specification:http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf

    下面这个关于IOMMU的讲解还挺好懂:

    from:http://bbs.chinaunix.net/thread-2072818-1-1.html

    在没有IOMMU的情况下,设备(指32bit或64bit设备,老的16bit的不提)的DMA操作可以访问整个物理地址空间,所以理论上设备可以向操作系统的代码段、数据段等内存区域做DMA,从而破坏整个系统。当然,通常来说不会有这样的设备。IOMMU的出现,可以实现地址空间上的隔离,使设备只能访问规定的内存区域。下面简要说一下intel的IOMMU怎么做到这点的:
    目前PC架构最多有256PCI总线,于是IOMMU用一个称为root entry的数据结构描述PCI总线,总共256个root entry构成一张表。每条PCI总线最多允许256个设备,IOMMU用context entry描述一个PCI设备(或者是PCI桥),256个context entry构成一张表。所以就有了如图的关系。我们知道,PCI设备用 {BUS:DEV:FUNC}(当然,还有个segment,不过似乎PC架构都只有一个segment,这个暂时忽略)描述一个设备。所以对于一个特定设备,用bus号做索引root entry表,用dev号索引context entry表可以找到描述该设备的的context entry。context entry中有一个指针指向一章I/O页表,当设备发起DMA操作时,IOMMU会根据该页表把设备的DMA地址转换成该设备可以访问内存区域的地址。
    所以只要为设备建一张I/O页表,就可以使设备只能访问规定的内存区域了。当然,也可以把该页表当成跳板,让只能寻址32bit地址空间的设备访问到64bit地址空间中去

    百度文库上的一个PPT,应该是specification的一个简介:http://wenku.baidu.com/link?url=ZGUa8vIe6YWkzypQGFlr_s6kRwn2ZHZHqO3IwCJk40_OJqiGSXLK5pRiWJSzBMxKVpBo5Z1JRZXZlDJ8DiOSGN4xrev7lse_tApa20gP8CO

    NOVA中的intel vt-d技术:

  • 相关阅读:
    线程状态
    线程的两种实现方式
    设计模式
    移动端适配总结(补充一个移动端touch案例)
    echart.js组件编写
    vuex,文件夹整理
    rem初始化
    PC初始化
    移动端初始化
    三角形实现原理
  • 原文地址:https://www.cnblogs.com/parapax/p/3644816.html
Copyright © 2011-2022 走看看