diff --git a/articles/20230207-riscv-kvm-int-impl-2.md b/articles/20230207-riscv-kvm-int-impl-2.md index 9073e96bafbbcf02354c281c6f1b097c1ab596d3..a7f4f8c1fd4964196ceb60fb9f66527b46446802 100644 --- a/articles/20230207-riscv-kvm-int-impl-2.md +++ b/articles/20230207-riscv-kvm-int-impl-2.md @@ -394,7 +394,6 @@ end ([下载由 Mermaid 生成的 PNG 图片][010]) -([下载由 Mermaid 生成的 PNG 图片][009]) `kvm_arch_vcpu_async_ioctl` 内部实现依据具体的中断类型采取对应的操作: @@ -493,8 +492,6 @@ end ([下载由 Mermaid 生成的 PNG 图片][011]) -([下载由 Mermaid 生成的 PNG 图片][010]) - ### 小结 结合本节和上一节中有关 Linux 以及 KVM 对 RISC-V 中断的分析可知,KVM 内实现了将虚拟机内部 VS-mode 的中断与外部中断处理控制器的绑定,同时实现了特定于 VS-mode 的中断处理功能,从而完成了对于 RISC-V 虚拟化的支持。 @@ -525,7 +522,6 @@ end ([下载由 Mermaid 生成的 PNG 图片][012]) -([下载由 Mermaid 生成的 PNG 图片][011]) mmio 在 Host 一端的注册与销毁如下图所示: @@ -550,8 +546,6 @@ cd-->mf ([下载由 Mermaid 生成的 PNG 图片][013]) -([下载由 Mermaid 生成的 PNG 图片][012]) - KVM 中的 MMIO 的访存操作有如下三个对应处理函数: ```cpp @@ -601,8 +595,6 @@ wr-.->fwr ([下载由 Mermaid 生成的 PNG 图片][014]) -([下载由 Mermaid 生成的 PNG 图片][013]) - ### kvmtool 中断注入及 MMIO 创建 在 kvmtool 中 MMIO 是作为 VIRTIO 设备之一连带着中断处理函数一起被注册的。整个过程可以分为两个部分: @@ -690,8 +682,6 @@ end ([下载由 Mermaid 生成的 PNG 图片][016]) -([下载由 Mermaid 生成的 PNG 图片][014]) - ## 总结 RISC-V 中断通过 PLIC,CLINT 等驱动和控制器来实现,KVM 模块对于虚拟化的支持体现在两方面,一方面是 KVM 实现了与 Guest 外部的中断控制相关联的 VS-mode 的中断处理,另一方面则是通过为用户态程序如 kvmtool 提供接口,支持了虚拟机内部的设备与中断处理函数的注册与绑定,也实现了虚拟机与内核态的绑定,这使得 Guest 的 MMIO 访存等操作顺利进行。