GVT对显示引擎的虚拟(2)

引用注明>> 【作者:张佩】【原文:http://www.yiiyee.cn/Blog/

  • 1. GVT对显示中断的模拟
ISR
中断能打断普通线程的执行

显示引擎定义的中断大部分都是通用型的,不同设备厂商开发的不同代产品在工作的时候,都会不断产生这些中断。比如同步中断(v-sync和h-sync)、vblank中断、扫描中断,这些中断和终端显示器对帧囊(FrameBuffer)的处理相关,在数据处理过程中不断地实时产生;以及插拔检测(hot plug detection)中断,当显示器插入或拔出Port的时候产生。显示引擎也可能会定义一些私有类型的中断,因不同的显卡设备而异,比如一些错误检测中断,其实是硬件和软件驱动之间的一种简单的通信机制。

GVT虚拟的显示设备只实现了最基本的功能,所以模拟通用型中断就足够了。实际上,GVT现在的代码只模拟了vblank和flip done两种中断,发现已经能够满足系统驱动和大部分应用软件的需求了。当然这是不够的,已经发现了一些应用软件,依赖于线扫描中断和垂直同步中断,不久的将来,GVT会陆续加入对它们的支持。理想的情况是GVT把所有的通用型显示中断都模拟好,我们不能假设形形色色的应用软件永远不会使用某种通用型中断。 继续阅读“GVT对显示引擎的虚拟(2)”

5,399 total views, 2 views today

GVT对显示引擎的虚拟(1)

引用注明>> 【作者:张佩】【原文:http://www.yiiyee.cn/Blog/

server-virtualization
这是一幅描绘了平台虚拟化的示意图

GVT是Intel针对集成显卡(IGD)设备实现的虚拟化方案,最近已经被成功地Upstream到了Linux内核4.10中了。所以用户只要拥有一份最新的Linux内核代码或镜像文件,就可以尝试这个很酷的显卡虚拟化功能。但GVT只是一个核心模块,剥离了和具体的系统虚拟化方案的耦合性,所以要想通过GVT来虚拟化你的显卡,还必须结合特定虚拟化平台下的适配模块。GVT本身是平台无关的,它通过一套公共的接口来抽象各种虚拟化平台的功能。

KVMGT是一起被Upstream的另一个模块,它就是在KVM(Kernel Virtual Machine)平台下GVT的适配模块。虚拟软件比如QEMU在KVM平台上,可以通过KVMGT暴露的用户层接口,来创建和维护GVT的虚拟GPU实例。将来,GVT在XEN和其它虚拟化平台下的适配模块,也将会被Upstream到Linux内核中去,不过这需要一些时间和持续的努力。 继续阅读“GVT对显示引擎的虚拟(1)”

3,829 total views, 4 views today

浅论Intel GPU虚拟化实现方案GVT

引用注明>> 【作者:张佩】【原文:http://www.yiiyee.cn/Blog/

v0.3 (未完成版,慎勿转载)

kvmgt
KVMGT未upstream前的架构图

在最近的Linux内核4.10的发布中,Intel的GPU虚拟化方案(GVT)完成了代码上传,从此成为Linux内核的一部分。GVT在4.10的发布文档中,作为主要的新特性之一而被发布者隆重地介绍。在过去的两年中,我作为一名开发者,参与到了GVT的开发过程中。对此重大里程碑事件深感欣慰。将陆续写作一些文章,对Inte的GPU驱动和虚拟化实现,进行由粗入细的介绍。

我近来对于一些计算机术语,产生了一点个人趣味上的偏好,细节在此不能备述,容后专文细讲。这里就两个用惯的术语,要在文章中,做很大的习惯上的改变,读者可能会觉得很不适应。无法,我确定了要这样做,只能请读者忍耐。

术语新译
Context:境(一般译作:上下文)
Execution Context:执行境
Hardware Context: 硬境
Logic Context:拟境
buffer:囊(一般译作:缓冲区)
Ring buffer:环形囊

继续阅读“浅论Intel GPU虚拟化实现方案GVT”

8,544 total views, 5 views today