VFIO 虛擬裝置¶
支援的裝置型別
KVM_DEV_TYPE_VFIO
每個虛擬機器只能建立一個 VFIO 例項。建立的裝置會跟蹤虛擬機器正在使用的 VFIO 檔案(組或裝置),以及這些組/裝置對虛擬機器的正確性和加速至關重要的特性。當組/裝置被虛擬機器啟用和停用時,KVM 應該更新其存在狀態。當在 KVM 中註冊時,KVM 會持有 VFIO 檔案的一個引用。
- 組
- KVM_DEV_VFIO_FILE
別名:KVM_DEV_VFIO_GROUP
- KVM_DEV_VFIO_FILE 屬性
- KVM_DEV_VFIO_FILE_ADD: 將 VFIO 檔案(組/裝置)新增到 VFIO-KVM 裝置
跟蹤中
kvm_device_attr.addr 指向 VFIO 檔案的 int32_t 檔案描述符。
- KVM_DEV_VFIO_FILE_DEL: 從 VFIO-KVM 裝置跟蹤中移除 VFIO 檔案(組/裝置)
裝置跟蹤
kvm_device_attr.addr 指向 VFIO 檔案的 int32_t 檔案描述符。
- KVM_DEV_VFIO_GROUP (舊版 KVM 裝置組,僅限於處理 VFIO 組檔案描述符)
KVM_DEV_VFIO_GROUP_ADD: 與 KVM_DEV_VFIO_FILE_ADD 相同,僅適用於組檔案描述符
KVM_DEV_VFIO_GROUP_DEL: 與 KVM_DEV_VFIO_FILE_DEL 相同,僅適用於組檔案描述符
- KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE: 附加一個客戶機可見的 TCE 表
由 sPAPR KVM 分配。kvm_device_attr.addr 指向一個結構體
struct kvm_vfio_spapr_tce { __s32 groupfd; __s32 tablefd; };其中
@groupfd 是一個 VFIO 組的檔案描述符;
@tablefd 是透過 KVM_CREATE_SPAPR_TCE 分配的 TCE 表的檔案描述符。
上述 FILE/GROUP_ADD 操作應在透過 VFIO_GROUP_GET_DEVICE_FD 訪問裝置檔案描述符之前呼叫,以支援那些要求在其 .open_device() 回撥中設定 KVM 指標的驅動程式。透過字元裝置開啟獲取裝置訪問許可權(透過 VFIO_DEVICE_BIND_IOMMUFD)的裝置檔案描述符也是如此。對於此類檔案描述符,FILE_ADD 也應在 VFIO_DEVICE_BIND_IOMMUFD 之前呼叫,以支援前一句中提到的驅動程式。