[hardware]intel VT-D

参考文档:intel vt-d
本文是intel vt-d技术的学习笔记。

一 DMA重映射

1.1 DMA请求的类型

Remapping hardware将DMA请求分成两类:

  • Requests without address-space-identifier:这些是来自设备的正常内存请求。这些请求通常指定访问类型(读/写/原子)、目标DMA地址/大小和发起请求的设备的源id(例如pci的bus/device/function)。
  • Requests with address-space-identifier:这些是带有附加信息的内存请求,这些信息标识来自端点设备的目标地址空间。除了常规请求中的属性之外,这些请求还指定目标进程地址空间标识符(PASID)和可选属性,例如Execute Requested(ER)标志(指示读取是指令获取)和Privileged mode Requested(PR)标志(区分用户和管理器访问)。

为了简单起见,本文将这些类别称为不带PASID的请求和带PASID的请求。使用唯一的PASID标记DMA流的请求可以实现I/O设备的可伸缩和细粒度共享,以及设备与主机应用程序的虚拟内存的操作。
后面的部分将描述使用PASID请求的这些用法。Intel早期仅支持重新映射不带PASID的请求。

1.2 域和地址转换

被抽象地定义为平台中的一个独立环境,其中分配了物理内存的一个子集。DMA设备可以分配给一个域,并称为该域的设备。对于虚拟化应用,软件可以将每个虚拟机视为一个域。硬件保证未分配给某域的设备不允许访问该域的物理内存。通过将所有I/O设备分配给不同域(可能是空域),并确保它们只能访问分配给其域的物理资源。DMA重映射架构有助于将I/O设备灵活分配到任意数量的域。每个域都有一个物理地址空间视图,该视图可能与主机物理地址空间不同。重新映射硬件将请求中的地址视为DMA地址。根据软件使用模式,设备的DMA地址空间(无论是PF、VF还是Intel®Scalable IOV Assignable device Interface(ADI))可以是分配给它的虚拟机的Guest物理地址(GPA)空间,还可以是代表其执行DMA请求的主机应用程序的虚拟地址(VA)空间、在虚拟机内执行的客户端应用程序的Guest虚拟地址(GVA)空间、由主机软件管理的I/O虚拟地址(IOVA)空间或由Guest软件管理的Guest I/O虚拟地址(GIOVA)空间。以上所有情况下,DMA重新映射都会将I/O设备发出的DMA请求中的地址转换为其相应的主机物理地址(HPA)。

1.3 映射设备到域

每一个映射请求都需要一个‘source-id’来标识请求的设备来源。下图以PCIE设备为例:

接下来描述将I/O设备映射到域的数据结构。

1.3.1 传统模式地址转换:

地址转换前通过设备的source-id找到对应的到Domain,转换过程如下。root table和Context table都位于内存中,内存的首地址可以通过寄存器指定。用source-id的bus部分选择root table的entry。root table的entry指向了context table的基地址。再利用source-id的device id加上function id来选择context table的entry。context table的entry指向了域的页表结构体基地址。
可以通过修改context table的entry来达到,不同的设备使用相同域,或者不同域。

1.3.2 可伸缩模式地址转换


可以通过设置寄存器的Scalable Mode Translation(SMTS=1)来使用可伸缩模式地址转换。Scalable Mode Root Table的大小跟传统模式一样;但是entry内容的含义不同。每个entry会指向一个upper context table和一个lower context table。
Context Table的entry指向Scalable Mode PASID Directory。

1.4 地址转换

地址转换过程跟intel的经典分页模式类似。使用多级页表进行转换。

二 中断重映射

2.1 中断映射

软件可以控制和审查所有的外部中断请求,包括来自中断控制器(I/OxAPICs)和MSI/MSI-X中断。重映射硬件自己产生的中断不会再被重映射,例如 Fault Event等。
中断请求在Root-complex中显示为对中断地址范围0xFEEX_XXXXh的upstream内存写请求。中断请求作为写请求到达Root-complex,中断重映射与重映射硬件单元位于同一位置。中断重映射功能通过扩展功能寄存器报告。

2.2 中断提交

中断发布功能是中断重映射硬件的扩展,用于可重映射格式中断请求的扩展处理。中断发布使可重设格式的中断请求能够被发布(记录)在一个一致的主存储器驻留数据结构中,并向CPU复合体发送一个可选的通知事件,以发出挂起的已发布中断信号。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • 进程 创建 创建进程用fork()函数。fork()为子进程创建新的地址空间并且拷贝页表。子进程的虚拟地址空间...
    梅花怒阅读 1,905评论 0 7
  • 一些词汇。 DVM: Distributed Virtual Memory,相互传递广播TLB维护操作的消息的协议...
    杨枫mind阅读 2,718评论 0 0
  • 内存 I/O# 内存管理单元## MMU辅助操作系统进行内存管理,提供虚拟地址和物理地址的映射、内存访问权限保护和...
    henry_zeng阅读 1,817评论 0 2
  • linux 内存是所有从事相关技术人员,需要深入了解的计算机资源管理方法论,合理的使用内存,有助于提升机器的性能和...
    Leon_Geo阅读 1,257评论 0 22
  • 昨天是小悦期待了好久的暑假班的第一天,本来她并不想上暑假班,只因为她的老师说暑假班有很多实验可以做,中午还能不睡觉...
    544767782600阅读 473评论 0 0