VirtIO 设备驱动

目录

简介

VirtIO是一个开放的虚拟化设备通讯接口。旨在降低主客机之间的设备通讯成本,提高虚拟化设备通讯效率。较传统仿真设备而言,基于VirtIO通讯协议的虚拟化设备是一种半虚拟化设备,即客机知晓自己运行于虚拟机中,同时也需要特殊的驱动程序,即本文档描述的VirtIO设备驱动程序。

VirtIO设备通过VirtIO通讯协议规定的方法于主客机中进行通讯。一般来说,VirtIO利用已有的设备接口(如PCI、MMIO Bus等)进行设备间控制信息的交换、利用共享内存进行设备间数据信息的交换。

VirtIO的架构层次如下图所示:

VirtIO架构层次

本文档描述的是在NXOS内核中的前端驱动实现,不涉及后端驱动的实现。如无特殊说明,在本文档中出现的所有驱动均为VirtIO前端驱动,例:GPU驱动VirtIO GPU驱动而并非传统GPU驱动。

NXOS内核中VirtIO设备驱动基于VirtIO 1.2规范,提供且仅提供对Modern设备的支持。在NXOS的VirtIO设备驱动中使用的VirtIO-Ring方案为传统的Split VirtIO-Ring。

目前,VirtIO已实现VirtIO Over PCI Bus及VirtIO Over MMIO两种通讯方法。其中PCI Bus通讯方法已于x86平台上完成测试;MMIO通讯方法已于x86、risc-v平台上完成测试。

需要注意的是,部分设备驱动尚未实现全部功能(如GPU驱动的3D部分、Sound驱动的音频输入部分)。此外,VirtIO Sound于QEMU-8.2中才引入设备支持,使用时请注意QEMU版本。

results matching ""

    No results matching ""