From 992bb74416aa42a8abcab0729eb6aa5c6c90da3f Mon Sep 17 00:00:00 2001 From: Zhangjin Wu Date: Fri, 30 Jun 2023 16:47:53 +0800 Subject: [PATCH 1/3] riscv-kvm-int-impl-2.md: commit correct result of tinycorrect-tounix Signed-off-by: Zhangjin Wu --- articles/20230207-riscv-kvm-int-impl-2.md | 1446 ++++++++++----------- 1 file changed, 723 insertions(+), 723 deletions(-) diff --git a/articles/20230207-riscv-kvm-int-impl-2.md b/articles/20230207-riscv-kvm-int-impl-2.md index 7fb7d18..859a697 100644 --- a/articles/20230207-riscv-kvm-int-impl-2.md +++ b/articles/20230207-riscv-kvm-int-impl-2.md @@ -1,723 +1,723 @@ -> Corrector: [TinyCorrect](https://gitee.com/tinylab/tinycorrect) v0.1 - [tounix spaces tables images urls]
-> Author: XiakaiPan <13212017962@163.com>
-> Date: 20230109
-> Revisor: Walimis
-> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux)
-> Proposal: [RISC-V 虚拟化技术调研与分析](https://gitee.com/tinylab/riscv-linux/issues/I5E4VB)
-> Sponsor: PLCT Lab, ISCAS - -# RISC-V KVM 中断处理的实现(二) - -## 前言 - -本文对于 kvmtool 和 KVM 中的中断注入与处理,以及 MMIO 设备的注册与使用,结合代码进行了分析和解读,并主要以流程图的方式呈现其代码实现。 - -## 代码版本 - -| Software | Version | -|-------------------|------------------------------------------| -| [Linux Kernel][1] | 6.0-rc6 | -| [kvmtool][6] | e17d182ad3f797f01947fc234d95c96c050c534b | - -## KVM 异常处理 - -### RISC-V Trap 类型、编码及其关系 - -在 RISC-V 中,CSR `mcause` / `scause` / `vscause` 用于记录引发 Trap 的编码,Interrupt 和 Exception 的区分是通过 CSR 最高位作为标志位来实现的,当标志位为 1 时表示当前 Trap 为 Interrupt,为 0 时则是 Exception。 - -RISC-V 中的中断分为三类:软件中断、计时器中断和外部中断,来自不同特权级的各类中断具有各自的编码。Linux 中对这些中断编码如下: - -```cpp -// arch/riscv/include/asm/csr.h: line 66 -/* Exception cause high bit - is an interrupt if set */ -#define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1)) - -/* Interrupt causes (minus the high bit) */ -#define IRQ_S_SOFT 1 -#define IRQ_VS_SOFT 2 -#define IRQ_M_SOFT 3 -#define IRQ_S_TIMER 5 -#define IRQ_VS_TIMER 6 -#define IRQ_M_TIMER 7 -#define IRQ_S_EXT 9 -#define IRQ_VS_EXT 10 -#define IRQ_M_EXT 11 -#define IRQ_PMU_OVF 13 - -/* Exception causes */ -#define EXC_INST_MISALIGNED 0 -#define EXC_INST_ACCESS 1 -#define EXC_INST_ILLEGAL 2 -#define EXC_BREAKPOINT 3 -#define EXC_LOAD_ACCESS 5 -#define EXC_STORE_ACCESS 7 -#define EXC_SYSCALL 8 -#define EXC_HYPERVISOR_SYSCALL 9 -#define EXC_SUPERVISOR_SYSCALL 10 -#define EXC_INST_PAGE_FAULT 12 -#define EXC_LOAD_PAGE_FAULT 13 -#define EXC_STORE_PAGE_FAULT 15 -#define EXC_INST_GUEST_PAGE_FAULT 20 -#define EXC_LOAD_GUEST_PAGE_FAULT 21 -#define EXC_VIRTUAL_INST_FAULT 22 -#define EXC_STORE_GUEST_PAGE_FAULT 23 -``` - -中断标记前缀为 `IRQ`(Interrupt ReQuest),异常标记前缀为 `EXC`(EXCeption)。 - -### KVM 异常处理 - -KVM 内部处理的是来自于 Guest 的异常,具体来说包括三类: - -- 指令异常:对应 Guest 的虚拟指令异常 -- 内存异常:对应 Guest page-fault -- 环境调用:对应来自于 Guest 在 VS-mode 的 `ecall` 指令 - -详细代码分析参见 [此文][2]。 - -## KVM 虚拟化相关的中断处理 - -在 Linux 内核的 `arch/riscv/kvm` 目录下,实现了对 RISC-V 虚拟化扩展的支持,此节将分析其中有关中断处理的代码实现。据代码可知,KVM 的架构相关的实现中仅包括了 VS-mode 对应的一系列中断的处理,其它中断的处理机制见下一节中断控制器分析。 - -### 全局中断基准 - -如果仅支持 M-Mode,那么默认的中断使能(Interrupt Enable)、Trap 向量、中断请求均以 M-Mode 为基准: - -- CSR 使用 `mstatus`, `mie`, `mtvec`, `mcause` 等 -- 状态寄存器标志以 `mstatus` 的为准:`mstatus.mie`, `mstatus.mpie`, `mstatus.mpp` -- 中断编码均对应 M-Mode:`IRQ_M_SOFT/TIMER/EXT` - -否则,就以 S-Mode 为基准,如下方代码所示。 - -```cpp -// arch/riscv/include/asm/csr.h: line 300 -#ifdef CONFIG_RISCV_M_MODE -/* CSR */ -# define CSR_STATUS CSR_MSTATUS -# define CSR_IE CSR_MIE -# define CSR_TVEC CSR_MTVEC -# define CSR_SCRATCH CSR_MSCRATCH -# define CSR_EPC CSR_MEPC -# define CSR_CAUSE CSR_MCAUSE -# define CSR_TVAL CSR_MTVAL -# define CSR_IP CSR_MIP - -/* Status Register Flags */ -# define SR_IE SR_MIE -# define SR_PIE SR_MPIE -# define SR_PP SR_MPP - -/* Interrupt Cause */ -# define RV_IRQ_SOFT IRQ_M_SOFT -# define RV_IRQ_TIMER IRQ_M_TIMER -# define RV_IRQ_EXT IRQ_M_EXT -#else /* CONFIG_RISCV_M_MODE */ -# define CSR_STATUS CSR_SSTATUS -# define CSR_IE CSR_SIE -# define CSR_TVEC CSR_STVEC -# define CSR_SCRATCH CSR_SSCRATCH -# define CSR_EPC CSR_SEPC -# define CSR_CAUSE CSR_SCAUSE -# define CSR_TVAL CSR_STVAL -# define CSR_IP CSR_SIP - -# define SR_IE SR_SIE -# define SR_PIE SR_SPIE -# define SR_PP SR_SPP - -# define RV_IRQ_SOFT IRQ_S_SOFT -# define RV_IRQ_TIMER IRQ_S_TIMER -# define RV_IRQ_EXT IRQ_S_EXT -# define RV_IRQ_PMU IRQ_PMU_OVF -# define SIP_LCOFIP (_AC(0x1, UL) << IRQ_PMU_OVF) - -#endif /* !CONFIG_RISCV_M_MODE */ - -/* IE/IP (Supervisor/Machine Interrupt Enable/Pending) flags */ -#define IE_SIE (_AC(0x1, UL) << RV_IRQ_SOFT) -#define IE_TIE (_AC(0x1, UL) << RV_IRQ_TIMER) -#define IE_EIE (_AC(0x1, UL) << RV_IRQ_EXT) -``` - -M/S-Mode 的中断做统一处理,Guest 内部的 VS-Mode 中断将由 KVM 单独处理。下面将对三类中断的实现分别进行分析。 - -### VS-Mode 软件中断 - -所谓软件中断也称为 IPI(Inter-Processor Interrupt),即处理器间中断。对于 KVM 虚拟机来说,VS-mode 的软件中断是通过 SBI 进行处理的,如下图所示。 - -具体注入过程如下: -1. 某个发送 vCPU 通过在 VS-mode 调用 ecall,给另外一个接收 vCPU 发送 IPI 中断。 -2. 此时触发发送 vCPU 所在 pCPU 的 HS-mode 异常,退出到 kvm_riscv_vcpu_exit 中,之后处理流程为:`kvm_riscv_vcpu_exit -> kvm_riscv_vcpu_sbi_ecall() -> sbi_ext->handler() -> kvm_sbi_ext_ipi_handler() -> kvm_riscv_vcpu_set_interrupt ()` -3. 最后 `kvm_riscv_vcpu_set_interrupt()` 函数,把 IPI 注入到接收 vCPU 的标志位上,`vcpu->arch.irqs_pending` 和 `vcpu->arch.irqs_pending_mask`,然后调用 `kvm_vcpu_kick()` 函数,提醒接收 vCPU,处理 IPI。实际上就是向接收 vCPU 所在的 pCPU 发送 HS-mode IPI(通过函数 `smp_send_reschedule()` 发送),让接收 vCPU 退出。 -4. 接收 vCPU 退出后,在重新进入运行前,会运行 `kvm_riscv_vcpu_flush_interrupts()` 函数,把 VS-level software interrupt 写入接收 vCPU 的 `vcpu->arch.guest_csr.hvip` 里,然后 `kvm_riscv_update_hvip()` 函数把 `vcpu->arch.guest_csr.hvip` 写入到 CSR_HVIP,即这个 pCPU 的 HVIP CSR 里。 -5. 接收 vCPU 运行到 VS-Mode 后,VS-level software interrupt 触发,由 VS-Mode 的 Guest OS 处理这个 IPI。 - -```mermaid -flowchart - -subgraph arch/riscv/include/asm/csr.h -isft[IRQ_VS_SOFT] -end - -subgraph arch/riscv/kvm/main.c -hwen[kvm_arch_hardware_enable] -end - -subgraph virt/kvm/kvm_main.c -startcpu[kvm_starting_cpu]-->hwennl -hwenall[hardware_enable_all]-->hwennl -mdl_init[module_kvm_init]--> -rv_init[riscv_kvm_init]--> -kvm_init[kvm_init]-->ops -kvm_exit[kvm_exit]-->ops -ops[kvm_syscore_ops]--> -resume[kvm_resume]-->hwennl -hwennl[hardware_enable_nolock]-->hwen - -vcpu[kvm_vcpu_ioctl]-->run - -dev_ioctl[kvm_dev_ioctl]--> -dev_create_vm[kvm_dev_ioctl_create_vm]--> -cvm[kvm_create_vm]-->hwenall -kvm_init-->startcpu - -kvm_compat[kvm_vcpu_compat_ioctl]-->vcpu - -exp_exit[EXPORT_SYMBOL_GPL]-->kvm_exit - -vm[kvm_vm_ioctl]--> -cvcpu[kvm_vm_ioctl_create_vcpu]--> -vcpu_fd[create_vcpu_fd]--> -fops[kvm_vcpu_fops]-->kvm_compat -end - -subgraph arch/riscv/kvm/vcpu_sbi_replace.c -ipi[kvm_sbi_ext_ipi_handler] -sbi_ipi[vcpu_sbi_ext_ipi]-->ipi -end - -subgraph arch/riscv/kvm/vcpu_sbi.c -ecall[kvm_riscv_vcpu_sbi_ecall]--> -sbi[sbi_ext]-->sbi_ipi - -sbi-->sbiv01 -end - -subgraph arch/riscv/kvm/vcpu.c -ustint[kvm_riscv_vcpu_unset_interrupt] -stint[kvm_riscv_vcpu_set_interrupt] -syncint[kvm_riscv_vcpu_sync_interrupts]-->isft -run[kvm_arch_vcpu_ioctl_run]-->syncint -end - -subgraph arch/riscv/kvm/vcpu_sbi_v01.c -sbiv01[vcpu_sbi_ext_v01]--> -v01[kvm_sbi_ext_v01_handler]-->stint -v01-->ustint -end - -ipi-->stint -stint-->isft -ustint-->isft -hwen-->isft - -subgraph arch/riscv/kvm/vcpu_exit.c -exit[kvm_riscv_vcpu_exit]-->ecall -end -``` - -([下载由 Mermaid 生成的 PNG 图片][007]) - -### VS-Mode 计时器中断 - -与 VS-mode 软件中断类似,vCPU 的计时器中断处理接口在 `arch/riscv/kvm/vcpu_timer.c` 中定义,而这些接口则是通过调用 `vcpu.c` 中统一的中断处理函数实现的(`kvm_riscv_vcpu_has/set/unset_interrupts`)。 - -```mermaid -flowchart LR - -subgraph arch/riscv/include/asm/csr.h -itimer[IRQ_VS_TIMER] -end - -subgraph arch/riscv/kvm/vcpu.c -ustint[kvm_riscv_vcpu_unset_interrupt]-->itimer -stint[kvm_riscv_vcpu_set_interrupt]-->itimer -hasint[kvm_riscv_vcpu_has_interrupts]-->itimer -end - -subgraph arch/riscv/kvm/vcpu_timer.c -expired[kvm_riscv_vcpu_hrtimer_expired]-->stint -update[kvm_riscv_vcpu_update_hrtimer]-->ustint -pending[kvm_riscv_vcpu_timer_pending]-->hasint - -init[kvm_riscv_vcpu_timer_init]-->expired -init-->update - -init--> -vstimer_expired[kvm_riscv_vcpu_vstimer_expired] - -init--> -vstimecmp_update[kvm_riscv_vcpu_update_vstimecmp] -end - -subgraph arch/riscv/kvm/vcpu.c -vcpu_create[kvm_arch_vcpu_create]-->init - -vcpu_pending[kvm_cpu_has_pending_timer]-->pending -end - -subgraph virt/kvm/kvm_main.c -check[kvm_vcpu_check_block]-->vcpu_pending -end - -``` - -([下载由 Mermaid 生成的 PNG 图片][008]) - -### VS-Mode 外部中断 - -#### KVM 中的 ioctl - -##### ioctl - -从 Kernel 到 VM:调用 `ioctl` 注册 KVM 虚拟机并为其申请资源。具体实现可以参见 [此文][15] 中有关 kvmtool 创建 VM 的部分。 - -kvmtool 作为用户态程序,对于 VM 的所有访问都是通过 `ioctl` 完成的,例如 `kvm_cpu__arch_init` 初始化 VM、vCPU 和内存: - -```cpp -struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id) -{ - // ... - /* 创建 vCPU */ - vcpu->vcpu_fd = ioctl(kvm->vm_fd, KVM_CREATE_VCPU, cpu_id); - - // ... - /* 获取 VM 的寄存器 */ - if (ioctl(vcpu->vcpu_fd, KVM_GET_ONE_REG, ®) < 0) - - // ... -} -``` - -`ioctl` 函数自身定义如下: - -```cpp -#include - -int ioctl(int fd, unsigned long request, ...); -``` - -##### kvm_*_ioctl - -从 VM 到 Kernel:VM 内部触发 IO 控制,调用 `kvm_*_ioctl` 进行处理 - -```mermaid -flowchart - -subgraph kvm -direction LR -i -e -fops -end - -subgraph i[kvm_*_ioctl] -vcpu/device/vm/dev -end - -i-->e - -subgraph fops[kvm_*_fops] -vcpu/device/vm/chardev -end - -subgraph e[elements_in_fops] -... -ui[unlocked_ioctl] -end - -e-->fops-->vfs - -vfs[vfs_ioctl]--> -ept(EXPORT_SYMBOL) - -vfs-->dvfs[do_vfs_ioctl] - -dvfs-->d3(SYSCALL_DEFINE3) -dvfs-->cd3(COMPAT_SYSCALL_DEFINE3) - -subgraph fs/ioctl -vfs -dvfs -end - -subgraph include/linux - -subgraph syscalls -d3 -cd3 -end - -subgraph export -ept -end - -end -``` - -([下载由 Mermaid 生成的 PNG 图片][009]) - -#### 外部中断 - -`kvm_vcpu_ioctl` 函数作为 `kvm_vcpu_fops.unlocked_ioctl` 在 KVM 初始化之时就已经被注册。当发生对 `/dev/kvm` 的 `ioctl` 调用时,就会通过如上节所述的 `vfs_ioctl` 方法调用 `filp->f_op->unlocked_ioctl` 即 `kvm_vcpu_ioctl` 进行处理。 - -KVM 内部与 VS-Mode 外部中断相关的调用如下图所示: - -```mermaid -flowchart LR - -subgraph arch/riscv/include/asm/csr.h -ext[IRQ_VS_EXT] -end - -subgraph arch/riscv/kvm/vcpu.c - -async[kvm_arch_vcpu_async_ioctl]--> -int[kvm_riscv_vcpu_set/unset_interrupt]-->ext -end - -subgraph virt/kvm/kvm_main.c -vcpu[kvm_vcpu_ioctl]-->async -end - -``` - -([下载由 Mermaid 生成的 PNG 图片][010]) - -([下载由 Mermaid 生成的 PNG 图片][009]) - -`kvm_arch_vcpu_async_ioctl` 内部实现依据具体的中断类型采取对应的操作: - -```cpp -// arch/riscv/kvm/vcpu.c: line 569 - -long kvm_arch_vcpu_async_ioctl(struct file *filp, - unsigned int ioctl, unsigned long arg) -{ - struct kvm_vcpu *vcpu = filp->private_data; - void __user *argp = (void __user *)arg; - - if (ioctl == KVM_INTERRUPT) { - struct kvm_interrupt irq; - - // 将用户态的由 argp 所指向的中断信息复制到 irq 中 - if (copy_from_user(&irq, argp, sizeof(irq))) - return -EFAULT; - - // 根据 irq 的中断操作类型,对指定的 vcpu 进行中断操作(set, unset) - if (irq.irq == KVM_INTERRUPT_SET) - return kvm_riscv_vcpu_set_interrupt(vcpu, IRQ_VS_EXT); - else - return kvm_riscv_vcpu_unset_interrupt(vcpu, IRQ_VS_EXT); - } - - return -ENOIOCTLCMD; -} - -``` - -## RISC-V 中断在 Linux 中的实现 - -### Timer 驱动 - -参考 [此文][3] 对 RISC-V 计时器在 Linux 内核中的实现的分析,Linux Timer 的实现包含两个驱动文件: - -- 无 MMU 的 `drivers/clocksource/timer-riscv.c`:运行于 M-mode 下,可直接读取 `mtime` CSR 获取当前时间、通过 `mtimecmp` CSR 设置中断,考虑到虚拟化对于特权级的需求,该实现并不会在虚拟化系统中被调用。 -- 有 MMU 的 `drivers/clocksource/timer-clint.c`:支持 S-mode (S/HS/VS) 下的时钟访问,但因为权限问题,需要借助于 CSR 读写指令达成。在不支持 SSTC 扩展的情况下,需要通过 SBI 写入 `mtimecmp` 实现计时器中断。 - -在添加了虚拟化扩展之后,VS-mode 的计时器中断操作需要通过 SBI 进入 HS-mode 再进入 M-mode,访问 `htimedelta`,`mtimecmp` 等 CSR,开销较大。后续有望通过添加 [SSTC 扩展][4] 实现对 `vstimecmp` 的直接访问进而简化虚拟情况下的中断开销。 - -### 中断驱动与 PLIC 控制器 - -[这篇文章][5] 基于一个 RTC(Real Time Clock)例程分析了 RISC-V 中断的申请、产生、处理流程。 - -Linux 内核中涉及 RISC-V 中断相关的处理机制如下图所示,从左到右依次为 PLIC、INTC(INTerrupt Controller)和内核中断处理。 - -```mermaid -flowchart - -e[arch/riscv/kernel/entry.S]-->ghai - -subgraph kernel/irq/handle.c -ghai[generic_handle_arch_irq] -shi[set_handle_irq] -end - -subgraph kernel/softirq.c -ghai-->ie[irq_exit] -ghai-.->so[others] -end - -subgraph other -end - -ghai-.->other - -subgraph drivers/irqchip/irq-riscv-intc.c -direction -ii[IRQCHIP_DECLARE:riscv_intc_init]-->shi--> -rii[riscv_intc_irq] -idm[[intc_domain]] -end - -subgraph kernel/irq/irqdesc.c -ghdi[generic_handle_domain_irq] -end - -subgraph include/linux/irqdomain.h -al[irq_domain_add_linear] -end - -ii-->al-.return..->idm - -rii-->ghdi -idm-.arg..->ghdi - -subgraph drivers/irqchip/irq-sifive-plic.c -direction TB -epid[IRQCHIP_DECLARE: plic_edge_init]-->pei[plic_edge_init]-->pi -pid[IRQCHIP_DECLARE: plic_init]--> -tpi[__plic_init]-->pi[plic_init]-->phi[plic_handle_irq] -end -``` - -([下载由 Mermaid 生成的 PNG 图片][011]) - -([下载由 Mermaid 生成的 PNG 图片][010]) - -### 小结 - -结合本节和上一节中有关 Linux 以及 KVM 对 RISC-V 中断的分析可知,KVM 内实现了将虚拟机内部 VS-mode 的中断与外部中断处理控制器的绑定,同时实现了特定于 VS-mode 的中断处理功能,从而完成了对于 RISC-V 虚拟化的支持。 - -## MMIO 虚拟化 - -### KVM - -通过用户态程序(如 kvmtool)创建了 vCPU 之后,vcpu 内部就包含了 MMIO 相关的项,如下图所示。如此,便实现了虚拟机 MMIO 的管理。所以 Guest 的 MMIO 操作都是基于下图所示的数据结构实现的。 - -```mermaid -flowchart BT - -subgraph v[kvm_vcpu] - -subgraph va[kvm_vcpu_arch] -md[kvm_mmio_decode] -vao[other arch states, ...] -end - -subgraph r[kvm_run] -m[mmio] -ro[other run states, ...] -end - -end -``` - -([下载由 Mermaid 生成的 PNG 图片][012]) - -([下载由 Mermaid 生成的 PNG 图片][011]) - -mmio 在 Host 一端的注册与销毁如下图所示: - -```mermaid -flowchart LR -subgraph kvm_main.c -cv[kvm_create_vm] -cd[kvm_destroy_vm] -... -end - -subgraph coalseced_mmio.c -mi[kvm_coalesced_mmio_init] -mf[kvm_coalesced_mmio_free] -..., -end - -cv-->mi -cv-->mf -cd-->mf -``` - -([下载由 Mermaid 生成的 PNG 图片][013]) - -([下载由 Mermaid 生成的 PNG 图片][012]) - -KVM 中的 MMIO 的访存操作有如下三个对应处理函数: - -```cpp -// arch/riscv/include/asm/kvm_vcpu_insn.h: line 40 -int kvm_riscv_vcpu_mmio_load(struct kvm_vcpu *vcpu, struct kvm_run *run, - unsigned long fault_addr, - unsigned long htinst); -int kvm_riscv_vcpu_mmio_store(struct kvm_vcpu *vcpu, struct kvm_run *run, - unsigned long fault_addr, - unsigned long htinst); -int kvm_riscv_vcpu_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run); - -``` - -下图展示了 MMIO 访存操作的具体实现,可以发现 LAOD/STORE 操作最终是通过调用 IO 设备中注册好的读写函数来实现的: - -```mermaid -flowchart LR -subgraph vi[arch/riscv/kvm/vcpu_insn.c] -l[kvm_riscv_vcpu_mmio_load]-->r -s[kvm_riscv_vcpu_mmio_store]-->r -r[kvm_riscv_vcpu_mmio_return] -end - -subgraph m[virt/kvm/kvm_main.c] -rd[kvm_io_bus_read] -wr[kvm_io_bus_write] -end - -l-->rd -s-->wr - -subgraph dv[include/kvm/iodev.h] -subgraph iodev -subgraph ops -frd[*read] -fwr[*write] -end - -end - -end - -rd-.->frd -wr-.->fwr -``` - -([下载由 Mermaid 生成的 PNG 图片][014]) - -([下载由 Mermaid 生成的 PNG 图片][013]) - -### kvmtool 中断注入及 MMIO 创建 - -在 kvmtool 中 MMIO 是作为 VIRTIO 设备之一连带着中断处理函数一起被注册的。整个过程可以分为两个部分: - -- PLIC,设备树初始化 -- MMIO/PCI 等设备与 PLIC 以及中断处理函数的绑定 -- Console/Net 等设备与初始化时与 MMIO/PCI 设备的绑定 - -执行完整个 Console 的创建过程就完成了 Guest 的 PLIC、IRQ 与设备的绑定,即实现了虚拟机的中断注入机制与 MMIO 创建。 - -下图中左上的 `virtio_dev_init:virtio_console__init` 表示以 KVM 指定的方式初始化设备完成绑定。 - -右边 RISC-V 模块左下方的 `late_init:setup_fdt` 则表示包含有 PLIC 的设备树的初始化。 - -```mermaid -flowchart LR - -subgraph riscv -subgraph irq.c -il[kvm__irq_line] -it[kvm__irq_trigger] -end - -subgraph plic.c -pit[plic__irq_trig] -pnd[pci__generate_fdt_nodes] -end -il-->pit -it-->pit -subgraph fdt.c -li[late_init:setup_fdt] -end -li-->pnd -end - -subgraph virtio - -subgraph unified_devices -subgraph console.c -cdi[virtio_dev_init:virtio_console__init] -end -subgraph net.c -bdi[virtio_dev_init:virtio_net__init] -end -udo[other unified_devices, ...] -end - -cdi-->vi -bdi-->vi -udo-.->vi - -subgraph pci.c -pvq[virtio_pci__signal_vq]-->it -pvq-->il -pcfg[virtio_pci__signal_config]-->it -po[other functions, ...] -end - -subgraph mmio.c -vq[virtio_mmio_signal_vq]-->it -cfg[virtio_mmio_signal_config]-->it -mo[other functions, ...] -end - -pm[pci-modern.c]-->il -pl[pci-legacy.c]-->il - -subgraph core.c -vi[virtio_init: case VIRTIO_*] -cm[mmio] -cp[pci] -end - -end - -cm-.->mmio.c -cp-.->pci.c - -subgraph hw -i8[i8042.c]-->il -sr[serial.c]-->il -end - -``` - -([下载由 Mermaid 生成的 PNG 图片][016]) - -([下载由 Mermaid 生成的 PNG 图片][014]) - -## 总结 - -RISC-V 中断通过 PLIC,CLINT 等驱动和控制器来实现,KVM 模块对于虚拟化的支持体现在两方面,一方面是 KVM 实现了与 Guest 外部的中断控制相关联的 VS-mode 的中断处理,另一方面则是通过为用户态程序如 kvmtool 提供接口,支持了虚拟机内部的设备与中断处理函数的注册与绑定,也实现了虚拟机与内核态的绑定,这使得 Guest 的 MMIO 访存等操作顺利进行。 - -## 参考资料 - -- [Linux Kernel][1] -- [RISC-V 异常处理在 KVM 中的实现][2] -- [RISC-V timer 在 Linux 中的实现][3] -- [RISC-V SSTC Extension][4] -- [RISC-V 中断子系统分析——PLIC 中断处理][5] -- [kvmtool][6] - -[1]: https://www.kernel.org/ -[2]: 20221021-riscv-kvm-excp-impl.md -[3]: https://tinylab.org/riscv-timer/#kvm-vcpu_timerc -[4]: https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf -[5]: https://gitee.com/tinylab/riscv-linux/blob/master/articles/20220919-riscv-irq-analysis-part2-interrupt-handling-plic.md -[6]: https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git -[007]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-1.png -[008]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-2.png -[009]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-3.png -[010]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-4.png -[011]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-5.png -[012]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-6.png -[013]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-7.png -[014]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png -[15]: 20220802-kvm-user-app.md#kvmtool -[016]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png +> Corrector: [TinyCorrect](https://gitee.com/tinylab/tinycorrect) v0.2-rc1 - [tounix]
+> Author: XiakaiPan <13212017962@163.com>
+> Date: 20230109
+> Revisor: Walimis
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux)
+> Proposal: [RISC-V 虚拟化技术调研与分析](https://gitee.com/tinylab/riscv-linux/issues/I5E4VB)
+> Sponsor: PLCT Lab, ISCAS + +# RISC-V KVM 中断处理的实现(二) + +## 前言 + +本文对于 kvmtool 和 KVM 中的中断注入与处理,以及 MMIO 设备的注册与使用,结合代码进行了分析和解读,并主要以流程图的方式呈现其代码实现。 + +## 代码版本 + +| Software | Version | +|-------------------|------------------------------------------| +| [Linux Kernel][1] | 6.0-rc6 | +| [kvmtool][6] | e17d182ad3f797f01947fc234d95c96c050c534b | + +## KVM 异常处理 + +### RISC-V Trap 类型、编码及其关系 + +在 RISC-V 中,CSR `mcause` / `scause` / `vscause` 用于记录引发 Trap 的编码,Interrupt 和 Exception 的区分是通过 CSR 最高位作为标志位来实现的,当标志位为 1 时表示当前 Trap 为 Interrupt,为 0 时则是 Exception。 + +RISC-V 中的中断分为三类:软件中断、计时器中断和外部中断,来自不同特权级的各类中断具有各自的编码。Linux 中对这些中断编码如下: + +```cpp +// arch/riscv/include/asm/csr.h: line 66 +/* Exception cause high bit - is an interrupt if set */ +#define CAUSE_IRQ_FLAG (_AC(1, UL) << (__riscv_xlen - 1)) + +/* Interrupt causes (minus the high bit) */ +#define IRQ_S_SOFT 1 +#define IRQ_VS_SOFT 2 +#define IRQ_M_SOFT 3 +#define IRQ_S_TIMER 5 +#define IRQ_VS_TIMER 6 +#define IRQ_M_TIMER 7 +#define IRQ_S_EXT 9 +#define IRQ_VS_EXT 10 +#define IRQ_M_EXT 11 +#define IRQ_PMU_OVF 13 + +/* Exception causes */ +#define EXC_INST_MISALIGNED 0 +#define EXC_INST_ACCESS 1 +#define EXC_INST_ILLEGAL 2 +#define EXC_BREAKPOINT 3 +#define EXC_LOAD_ACCESS 5 +#define EXC_STORE_ACCESS 7 +#define EXC_SYSCALL 8 +#define EXC_HYPERVISOR_SYSCALL 9 +#define EXC_SUPERVISOR_SYSCALL 10 +#define EXC_INST_PAGE_FAULT 12 +#define EXC_LOAD_PAGE_FAULT 13 +#define EXC_STORE_PAGE_FAULT 15 +#define EXC_INST_GUEST_PAGE_FAULT 20 +#define EXC_LOAD_GUEST_PAGE_FAULT 21 +#define EXC_VIRTUAL_INST_FAULT 22 +#define EXC_STORE_GUEST_PAGE_FAULT 23 +``` + +中断标记前缀为 `IRQ`(Interrupt ReQuest),异常标记前缀为 `EXC`(EXCeption)。 + +### KVM 异常处理 + +KVM 内部处理的是来自于 Guest 的异常,具体来说包括三类: + +- 指令异常:对应 Guest 的虚拟指令异常 +- 内存异常:对应 Guest page-fault +- 环境调用:对应来自于 Guest 在 VS-mode 的 `ecall` 指令 + +详细代码分析参见 [此文][2]。 + +## KVM 虚拟化相关的中断处理 + +在 Linux 内核的 `arch/riscv/kvm` 目录下,实现了对 RISC-V 虚拟化扩展的支持,此节将分析其中有关中断处理的代码实现。据代码可知,KVM 的架构相关的实现中仅包括了 VS-mode 对应的一系列中断的处理,其它中断的处理机制见下一节中断控制器分析。 + +### 全局中断基准 + +如果仅支持 M-Mode,那么默认的中断使能(Interrupt Enable)、Trap 向量、中断请求均以 M-Mode 为基准: + +- CSR 使用 `mstatus`, `mie`, `mtvec`, `mcause` 等 +- 状态寄存器标志以 `mstatus` 的为准:`mstatus.mie`, `mstatus.mpie`, `mstatus.mpp` +- 中断编码均对应 M-Mode:`IRQ_M_SOFT/TIMER/EXT` + +否则,就以 S-Mode 为基准,如下方代码所示。 + +```cpp +// arch/riscv/include/asm/csr.h: line 300 +#ifdef CONFIG_RISCV_M_MODE +/* CSR */ +# define CSR_STATUS CSR_MSTATUS +# define CSR_IE CSR_MIE +# define CSR_TVEC CSR_MTVEC +# define CSR_SCRATCH CSR_MSCRATCH +# define CSR_EPC CSR_MEPC +# define CSR_CAUSE CSR_MCAUSE +# define CSR_TVAL CSR_MTVAL +# define CSR_IP CSR_MIP + +/* Status Register Flags */ +# define SR_IE SR_MIE +# define SR_PIE SR_MPIE +# define SR_PP SR_MPP + +/* Interrupt Cause */ +# define RV_IRQ_SOFT IRQ_M_SOFT +# define RV_IRQ_TIMER IRQ_M_TIMER +# define RV_IRQ_EXT IRQ_M_EXT +#else /* CONFIG_RISCV_M_MODE */ +# define CSR_STATUS CSR_SSTATUS +# define CSR_IE CSR_SIE +# define CSR_TVEC CSR_STVEC +# define CSR_SCRATCH CSR_SSCRATCH +# define CSR_EPC CSR_SEPC +# define CSR_CAUSE CSR_SCAUSE +# define CSR_TVAL CSR_STVAL +# define CSR_IP CSR_SIP + +# define SR_IE SR_SIE +# define SR_PIE SR_SPIE +# define SR_PP SR_SPP + +# define RV_IRQ_SOFT IRQ_S_SOFT +# define RV_IRQ_TIMER IRQ_S_TIMER +# define RV_IRQ_EXT IRQ_S_EXT +# define RV_IRQ_PMU IRQ_PMU_OVF +# define SIP_LCOFIP (_AC(0x1, UL) << IRQ_PMU_OVF) + +#endif /* !CONFIG_RISCV_M_MODE */ + +/* IE/IP (Supervisor/Machine Interrupt Enable/Pending) flags */ +#define IE_SIE (_AC(0x1, UL) << RV_IRQ_SOFT) +#define IE_TIE (_AC(0x1, UL) << RV_IRQ_TIMER) +#define IE_EIE (_AC(0x1, UL) << RV_IRQ_EXT) +``` + +M/S-Mode 的中断做统一处理,Guest 内部的 VS-Mode 中断将由 KVM 单独处理。下面将对三类中断的实现分别进行分析。 + +### VS-Mode 软件中断 + +所谓软件中断也称为 IPI(Inter-Processor Interrupt),即处理器间中断。对于 KVM 虚拟机来说,VS-mode 的软件中断是通过 SBI 进行处理的,如下图所示。 + +具体注入过程如下: +1. 某个发送 vCPU 通过在 VS-mode 调用 ecall,给另外一个接收 vCPU 发送 IPI 中断。 +2. 此时触发发送 vCPU 所在 pCPU 的 HS-mode 异常,退出到 kvm_riscv_vcpu_exit 中,之后处理流程为:`kvm_riscv_vcpu_exit -> kvm_riscv_vcpu_sbi_ecall() -> sbi_ext->handler() -> kvm_sbi_ext_ipi_handler() -> kvm_riscv_vcpu_set_interrupt ()` +3. 最后 `kvm_riscv_vcpu_set_interrupt()` 函数,把 IPI 注入到接收 vCPU 的标志位上,`vcpu->arch.irqs_pending` 和 `vcpu->arch.irqs_pending_mask`,然后调用 `kvm_vcpu_kick()` 函数,提醒接收 vCPU,处理 IPI。实际上就是向接收 vCPU 所在的 pCPU 发送 HS-mode IPI(通过函数 `smp_send_reschedule()` 发送),让接收 vCPU 退出。 +4. 接收 vCPU 退出后,在重新进入运行前,会运行 `kvm_riscv_vcpu_flush_interrupts()` 函数,把 VS-level software interrupt 写入接收 vCPU 的 `vcpu->arch.guest_csr.hvip` 里,然后 `kvm_riscv_update_hvip()` 函数把 `vcpu->arch.guest_csr.hvip` 写入到 CSR_HVIP,即这个 pCPU 的 HVIP CSR 里。 +5. 接收 vCPU 运行到 VS-Mode 后,VS-level software interrupt 触发,由 VS-Mode 的 Guest OS 处理这个 IPI。 + +```mermaid +flowchart + +subgraph arch/riscv/include/asm/csr.h +isft[IRQ_VS_SOFT] +end + +subgraph arch/riscv/kvm/main.c +hwen[kvm_arch_hardware_enable] +end + +subgraph virt/kvm/kvm_main.c +startcpu[kvm_starting_cpu]-->hwennl +hwenall[hardware_enable_all]-->hwennl +mdl_init[module_kvm_init]--> +rv_init[riscv_kvm_init]--> +kvm_init[kvm_init]-->ops +kvm_exit[kvm_exit]-->ops +ops[kvm_syscore_ops]--> +resume[kvm_resume]-->hwennl +hwennl[hardware_enable_nolock]-->hwen + +vcpu[kvm_vcpu_ioctl]-->run + +dev_ioctl[kvm_dev_ioctl]--> +dev_create_vm[kvm_dev_ioctl_create_vm]--> +cvm[kvm_create_vm]-->hwenall +kvm_init-->startcpu + +kvm_compat[kvm_vcpu_compat_ioctl]-->vcpu + +exp_exit[EXPORT_SYMBOL_GPL]-->kvm_exit + +vm[kvm_vm_ioctl]--> +cvcpu[kvm_vm_ioctl_create_vcpu]--> +vcpu_fd[create_vcpu_fd]--> +fops[kvm_vcpu_fops]-->kvm_compat +end + +subgraph arch/riscv/kvm/vcpu_sbi_replace.c +ipi[kvm_sbi_ext_ipi_handler] +sbi_ipi[vcpu_sbi_ext_ipi]-->ipi +end + +subgraph arch/riscv/kvm/vcpu_sbi.c +ecall[kvm_riscv_vcpu_sbi_ecall]--> +sbi[sbi_ext]-->sbi_ipi + +sbi-->sbiv01 +end + +subgraph arch/riscv/kvm/vcpu.c +ustint[kvm_riscv_vcpu_unset_interrupt] +stint[kvm_riscv_vcpu_set_interrupt] +syncint[kvm_riscv_vcpu_sync_interrupts]-->isft +run[kvm_arch_vcpu_ioctl_run]-->syncint +end + +subgraph arch/riscv/kvm/vcpu_sbi_v01.c +sbiv01[vcpu_sbi_ext_v01]--> +v01[kvm_sbi_ext_v01_handler]-->stint +v01-->ustint +end + +ipi-->stint +stint-->isft +ustint-->isft +hwen-->isft + +subgraph arch/riscv/kvm/vcpu_exit.c +exit[kvm_riscv_vcpu_exit]-->ecall +end +``` + +([下载由 Mermaid 生成的 PNG 图片][007]) + +### VS-Mode 计时器中断 + +与 VS-mode 软件中断类似,vCPU 的计时器中断处理接口在 `arch/riscv/kvm/vcpu_timer.c` 中定义,而这些接口则是通过调用 `vcpu.c` 中统一的中断处理函数实现的(`kvm_riscv_vcpu_has/set/unset_interrupts`)。 + +```mermaid +flowchart LR + +subgraph arch/riscv/include/asm/csr.h +itimer[IRQ_VS_TIMER] +end + +subgraph arch/riscv/kvm/vcpu.c +ustint[kvm_riscv_vcpu_unset_interrupt]-->itimer +stint[kvm_riscv_vcpu_set_interrupt]-->itimer +hasint[kvm_riscv_vcpu_has_interrupts]-->itimer +end + +subgraph arch/riscv/kvm/vcpu_timer.c +expired[kvm_riscv_vcpu_hrtimer_expired]-->stint +update[kvm_riscv_vcpu_update_hrtimer]-->ustint +pending[kvm_riscv_vcpu_timer_pending]-->hasint + +init[kvm_riscv_vcpu_timer_init]-->expired +init-->update + +init--> +vstimer_expired[kvm_riscv_vcpu_vstimer_expired] + +init--> +vstimecmp_update[kvm_riscv_vcpu_update_vstimecmp] +end + +subgraph arch/riscv/kvm/vcpu.c +vcpu_create[kvm_arch_vcpu_create]-->init + +vcpu_pending[kvm_cpu_has_pending_timer]-->pending +end + +subgraph virt/kvm/kvm_main.c +check[kvm_vcpu_check_block]-->vcpu_pending +end + +``` + +([下载由 Mermaid 生成的 PNG 图片][008]) + +### VS-Mode 外部中断 + +#### KVM 中的 ioctl + +##### ioctl + +从 Kernel 到 VM:调用 `ioctl` 注册 KVM 虚拟机并为其申请资源。具体实现可以参见 [此文][15] 中有关 kvmtool 创建 VM 的部分。 + +kvmtool 作为用户态程序,对于 VM 的所有访问都是通过 `ioctl` 完成的,例如 `kvm_cpu__arch_init` 初始化 VM、vCPU 和内存: + +```cpp +struct kvm_cpu *kvm_cpu__arch_init(struct kvm *kvm, unsigned long cpu_id) +{ + // ... + /* 创建 vCPU */ + vcpu->vcpu_fd = ioctl(kvm->vm_fd, KVM_CREATE_VCPU, cpu_id); + + // ... + /* 获取 VM 的寄存器 */ + if (ioctl(vcpu->vcpu_fd, KVM_GET_ONE_REG, ®) < 0) + + // ... +} +``` + +`ioctl` 函数自身定义如下: + +```cpp +#include + +int ioctl(int fd, unsigned long request, ...); +``` + +##### kvm_*_ioctl + +从 VM 到 Kernel:VM 内部触发 IO 控制,调用 `kvm_*_ioctl` 进行处理 + +```mermaid +flowchart + +subgraph kvm +direction LR +i +e +fops +end + +subgraph i[kvm_*_ioctl] +vcpu/device/vm/dev +end + +i-->e + +subgraph fops[kvm_*_fops] +vcpu/device/vm/chardev +end + +subgraph e[elements_in_fops] +... +ui[unlocked_ioctl] +end + +e-->fops-->vfs + +vfs[vfs_ioctl]--> +ept(EXPORT_SYMBOL) + +vfs-->dvfs[do_vfs_ioctl] + +dvfs-->d3(SYSCALL_DEFINE3) +dvfs-->cd3(COMPAT_SYSCALL_DEFINE3) + +subgraph fs/ioctl +vfs +dvfs +end + +subgraph include/linux + +subgraph syscalls +d3 +cd3 +end + +subgraph export +ept +end + +end +``` + +([下载由 Mermaid 生成的 PNG 图片][009]) + +#### 外部中断 + +`kvm_vcpu_ioctl` 函数作为 `kvm_vcpu_fops.unlocked_ioctl` 在 KVM 初始化之时就已经被注册。当发生对 `/dev/kvm` 的 `ioctl` 调用时,就会通过如上节所述的 `vfs_ioctl` 方法调用 `filp->f_op->unlocked_ioctl` 即 `kvm_vcpu_ioctl` 进行处理。 + +KVM 内部与 VS-Mode 外部中断相关的调用如下图所示: + +```mermaid +flowchart LR + +subgraph arch/riscv/include/asm/csr.h +ext[IRQ_VS_EXT] +end + +subgraph arch/riscv/kvm/vcpu.c + +async[kvm_arch_vcpu_async_ioctl]--> +int[kvm_riscv_vcpu_set/unset_interrupt]-->ext +end + +subgraph virt/kvm/kvm_main.c +vcpu[kvm_vcpu_ioctl]-->async +end + +``` + +([下载由 Mermaid 生成的 PNG 图片][010]) + +([下载由 Mermaid 生成的 PNG 图片][009]) + +`kvm_arch_vcpu_async_ioctl` 内部实现依据具体的中断类型采取对应的操作: + +```cpp +// arch/riscv/kvm/vcpu.c: line 569 + +long kvm_arch_vcpu_async_ioctl(struct file *filp, + unsigned int ioctl, unsigned long arg) +{ + struct kvm_vcpu *vcpu = filp->private_data; + void __user *argp = (void __user *)arg; + + if (ioctl == KVM_INTERRUPT) { + struct kvm_interrupt irq; + + // 将用户态的由 argp 所指向的中断信息复制到 irq 中 + if (copy_from_user(&irq, argp, sizeof(irq))) + return -EFAULT; + + // 根据 irq 的中断操作类型,对指定的 vcpu 进行中断操作(set, unset) + if (irq.irq == KVM_INTERRUPT_SET) + return kvm_riscv_vcpu_set_interrupt(vcpu, IRQ_VS_EXT); + else + return kvm_riscv_vcpu_unset_interrupt(vcpu, IRQ_VS_EXT); + } + + return -ENOIOCTLCMD; +} + +``` + +## RISC-V 中断在 Linux 中的实现 + +### Timer 驱动 + +参考 [此文][3] 对 RISC-V 计时器在 Linux 内核中的实现的分析,Linux Timer 的实现包含两个驱动文件: + +- 无 MMU 的 `drivers/clocksource/timer-riscv.c`:运行于 M-mode 下,可直接读取 `mtime` CSR 获取当前时间、通过 `mtimecmp` CSR 设置中断,考虑到虚拟化对于特权级的需求,该实现并不会在虚拟化系统中被调用。 +- 有 MMU 的 `drivers/clocksource/timer-clint.c`:支持 S-mode (S/HS/VS) 下的时钟访问,但因为权限问题,需要借助于 CSR 读写指令达成。在不支持 SSTC 扩展的情况下,需要通过 SBI 写入 `mtimecmp` 实现计时器中断。 + +在添加了虚拟化扩展之后,VS-mode 的计时器中断操作需要通过 SBI 进入 HS-mode 再进入 M-mode,访问 `htimedelta`,`mtimecmp` 等 CSR,开销较大。后续有望通过添加 [SSTC 扩展][4] 实现对 `vstimecmp` 的直接访问进而简化虚拟情况下的中断开销。 + +### 中断驱动与 PLIC 控制器 + +[这篇文章][5] 基于一个 RTC(Real Time Clock)例程分析了 RISC-V 中断的申请、产生、处理流程。 + +Linux 内核中涉及 RISC-V 中断相关的处理机制如下图所示,从左到右依次为 PLIC、INTC(INTerrupt Controller)和内核中断处理。 + +```mermaid +flowchart + +e[arch/riscv/kernel/entry.S]-->ghai + +subgraph kernel/irq/handle.c +ghai[generic_handle_arch_irq] +shi[set_handle_irq] +end + +subgraph kernel/softirq.c +ghai-->ie[irq_exit] +ghai-.->so[others] +end + +subgraph other +end + +ghai-.->other + +subgraph drivers/irqchip/irq-riscv-intc.c +direction +ii[IRQCHIP_DECLARE:riscv_intc_init]-->shi--> +rii[riscv_intc_irq] +idm[[intc_domain]] +end + +subgraph kernel/irq/irqdesc.c +ghdi[generic_handle_domain_irq] +end + +subgraph include/linux/irqdomain.h +al[irq_domain_add_linear] +end + +ii-->al-.return..->idm + +rii-->ghdi +idm-.arg..->ghdi + +subgraph drivers/irqchip/irq-sifive-plic.c +direction TB +epid[IRQCHIP_DECLARE: plic_edge_init]-->pei[plic_edge_init]-->pi +pid[IRQCHIP_DECLARE: plic_init]--> +tpi[__plic_init]-->pi[plic_init]-->phi[plic_handle_irq] +end +``` + +([下载由 Mermaid 生成的 PNG 图片][011]) + +([下载由 Mermaid 生成的 PNG 图片][010]) + +### 小结 + +结合本节和上一节中有关 Linux 以及 KVM 对 RISC-V 中断的分析可知,KVM 内实现了将虚拟机内部 VS-mode 的中断与外部中断处理控制器的绑定,同时实现了特定于 VS-mode 的中断处理功能,从而完成了对于 RISC-V 虚拟化的支持。 + +## MMIO 虚拟化 + +### KVM + +通过用户态程序(如 kvmtool)创建了 vCPU 之后,vcpu 内部就包含了 MMIO 相关的项,如下图所示。如此,便实现了虚拟机 MMIO 的管理。所以 Guest 的 MMIO 操作都是基于下图所示的数据结构实现的。 + +```mermaid +flowchart BT + +subgraph v[kvm_vcpu] + +subgraph va[kvm_vcpu_arch] +md[kvm_mmio_decode] +vao[other arch states, ...] +end + +subgraph r[kvm_run] +m[mmio] +ro[other run states, ...] +end + +end +``` + +([下载由 Mermaid 生成的 PNG 图片][012]) + +([下载由 Mermaid 生成的 PNG 图片][011]) + +mmio 在 Host 一端的注册与销毁如下图所示: + +```mermaid +flowchart LR +subgraph kvm_main.c +cv[kvm_create_vm] +cd[kvm_destroy_vm] +... +end + +subgraph coalseced_mmio.c +mi[kvm_coalesced_mmio_init] +mf[kvm_coalesced_mmio_free] +..., +end + +cv-->mi +cv-->mf +cd-->mf +``` + +([下载由 Mermaid 生成的 PNG 图片][013]) + +([下载由 Mermaid 生成的 PNG 图片][012]) + +KVM 中的 MMIO 的访存操作有如下三个对应处理函数: + +```cpp +// arch/riscv/include/asm/kvm_vcpu_insn.h: line 40 +int kvm_riscv_vcpu_mmio_load(struct kvm_vcpu *vcpu, struct kvm_run *run, + unsigned long fault_addr, + unsigned long htinst); +int kvm_riscv_vcpu_mmio_store(struct kvm_vcpu *vcpu, struct kvm_run *run, + unsigned long fault_addr, + unsigned long htinst); +int kvm_riscv_vcpu_mmio_return(struct kvm_vcpu *vcpu, struct kvm_run *run); + +``` + +下图展示了 MMIO 访存操作的具体实现,可以发现 LAOD/STORE 操作最终是通过调用 IO 设备中注册好的读写函数来实现的: + +```mermaid +flowchart LR +subgraph vi[arch/riscv/kvm/vcpu_insn.c] +l[kvm_riscv_vcpu_mmio_load]-->r +s[kvm_riscv_vcpu_mmio_store]-->r +r[kvm_riscv_vcpu_mmio_return] +end + +subgraph m[virt/kvm/kvm_main.c] +rd[kvm_io_bus_read] +wr[kvm_io_bus_write] +end + +l-->rd +s-->wr + +subgraph dv[include/kvm/iodev.h] +subgraph iodev +subgraph ops +frd[*read] +fwr[*write] +end + +end + +end + +rd-.->frd +wr-.->fwr +``` + +([下载由 Mermaid 生成的 PNG 图片][014]) + +([下载由 Mermaid 生成的 PNG 图片][013]) + +### kvmtool 中断注入及 MMIO 创建 + +在 kvmtool 中 MMIO 是作为 VIRTIO 设备之一连带着中断处理函数一起被注册的。整个过程可以分为两个部分: + +- PLIC,设备树初始化 +- MMIO/PCI 等设备与 PLIC 以及中断处理函数的绑定 +- Console/Net 等设备与初始化时与 MMIO/PCI 设备的绑定 + +执行完整个 Console 的创建过程就完成了 Guest 的 PLIC、IRQ 与设备的绑定,即实现了虚拟机的中断注入机制与 MMIO 创建。 + +下图中左上的 `virtio_dev_init:virtio_console__init` 表示以 KVM 指定的方式初始化设备完成绑定。 + +右边 RISC-V 模块左下方的 `late_init:setup_fdt` 则表示包含有 PLIC 的设备树的初始化。 + +```mermaid +flowchart LR + +subgraph riscv +subgraph irq.c +il[kvm__irq_line] +it[kvm__irq_trigger] +end + +subgraph plic.c +pit[plic__irq_trig] +pnd[pci__generate_fdt_nodes] +end +il-->pit +it-->pit +subgraph fdt.c +li[late_init:setup_fdt] +end +li-->pnd +end + +subgraph virtio + +subgraph unified_devices +subgraph console.c +cdi[virtio_dev_init:virtio_console__init] +end +subgraph net.c +bdi[virtio_dev_init:virtio_net__init] +end +udo[other unified_devices, ...] +end + +cdi-->vi +bdi-->vi +udo-.->vi + +subgraph pci.c +pvq[virtio_pci__signal_vq]-->it +pvq-->il +pcfg[virtio_pci__signal_config]-->it +po[other functions, ...] +end + +subgraph mmio.c +vq[virtio_mmio_signal_vq]-->it +cfg[virtio_mmio_signal_config]-->it +mo[other functions, ...] +end + +pm[pci-modern.c]-->il +pl[pci-legacy.c]-->il + +subgraph core.c +vi[virtio_init: case VIRTIO_*] +cm[mmio] +cp[pci] +end + +end + +cm-.->mmio.c +cp-.->pci.c + +subgraph hw +i8[i8042.c]-->il +sr[serial.c]-->il +end + +``` + +([下载由 Mermaid 生成的 PNG 图片][016]) + +([下载由 Mermaid 生成的 PNG 图片][014]) + +## 总结 + +RISC-V 中断通过 PLIC,CLINT 等驱动和控制器来实现,KVM 模块对于虚拟化的支持体现在两方面,一方面是 KVM 实现了与 Guest 外部的中断控制相关联的 VS-mode 的中断处理,另一方面则是通过为用户态程序如 kvmtool 提供接口,支持了虚拟机内部的设备与中断处理函数的注册与绑定,也实现了虚拟机与内核态的绑定,这使得 Guest 的 MMIO 访存等操作顺利进行。 + +## 参考资料 + +- [Linux Kernel][1] +- [RISC-V 异常处理在 KVM 中的实现][2] +- [RISC-V timer 在 Linux 中的实现][3] +- [RISC-V SSTC Extension][4] +- [RISC-V 中断子系统分析——PLIC 中断处理][5] +- [kvmtool][6] + +[1]: https://www.kernel.org/ +[2]: 20221021-riscv-kvm-excp-impl.md +[3]: https://tinylab.org/riscv-timer/#kvm-vcpu_timerc +[4]: https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf +[5]: https://gitee.com/tinylab/riscv-linux/blob/master/articles/20220919-riscv-irq-analysis-part2-interrupt-handling-plic.md +[6]: https://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git +[007]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-1.png +[008]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-2.png +[009]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-3.png +[010]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-4.png +[011]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-5.png +[012]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-6.png +[013]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-7.png +[014]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png +[15]: 20220802-kvm-user-app.md#kvmtool +[016]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png -- Gitee From bfd78f2d5de1ccd9af361fe81d5f457cf9a0e739 Mon Sep 17 00:00:00 2001 From: Zhangjin Wu Date: Fri, 30 Jun 2023 16:50:00 +0800 Subject: [PATCH 2/3] kvm-int-impl-2: add missing images and fix up wrong url Signed-off-by: Zhangjin Wu --- articles/20230207-riscv-kvm-int-impl-2.md | 2 +- .../mermaid-riscv-kvm-int-impl-2-1.png | Bin 0 -> 58989 bytes .../mermaid-riscv-kvm-int-impl-2-2.png | Bin 0 -> 49642 bytes .../mermaid-riscv-kvm-int-impl-2-3.png | Bin 0 -> 44353 bytes .../mermaid-riscv-kvm-int-impl-2-4.png | Bin 0 -> 12026 bytes .../mermaid-riscv-kvm-int-impl-2-5.png | Bin 0 -> 41820 bytes .../mermaid-riscv-kvm-int-impl-2-6.png | Bin 0 -> 12618 bytes .../mermaid-riscv-kvm-int-impl-2-7.png | Bin 0 -> 19828 bytes .../mermaid-riscv-kvm-int-impl-2-8.png | Bin 0 -> 37092 bytes .../mermaid-riscv-kvm-int-impl-2-9.png | Bin 0 -> 75327 bytes 10 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-1.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-2.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-3.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-4.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-5.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-6.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-7.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png create mode 100644 articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png diff --git a/articles/20230207-riscv-kvm-int-impl-2.md b/articles/20230207-riscv-kvm-int-impl-2.md index 859a697..46319cb 100644 --- a/articles/20230207-riscv-kvm-int-impl-2.md +++ b/articles/20230207-riscv-kvm-int-impl-2.md @@ -719,5 +719,5 @@ RISC-V 中断通过 PLIC,CLINT 等驱动和控制器来实现,KVM 模块对 [012]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-6.png [013]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-7.png [014]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png -[15]: 20220802-kvm-user-app.md#kvmtool +[15]: 20220802-riscv-kvm-user-app.md#kvmtool [016]: images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png diff --git a/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-1.png b/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3849dca2a1be301b1b47ad3dfd67fccef38ad8bb GIT binary patch literal 58989 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%0A8Vr6wb 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 fBc?1M7j<_J85%0U!9g39``>o(f2?dMNK5BV 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 literal 0 HcmV?d00001 diff --git a/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-2.png b/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-2.png new file mode 100644 index 0000000000000000000000000000000000000000..097a02c6aae6ef0ec1b8f6f05d85ec7ae8825ff2 GIT binary patch literal 49642 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

%H_*>#1i`Nm}IPMF3#r-=#%0}%G4!Ia%bDv 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 literal 0 HcmV?d00001 diff --git a/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-3.png b/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-3.png new file mode 100644 index 0000000000000000000000000000000000000000..313572acf6e177b2363941673d8580a27ec32188 GIT binary patch literal 44353 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 literal 0 HcmV?d00001 diff --git a/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png b/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-8.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6280c6562260b580025a31d7942f9598c829ae GIT binary patch literal 37092 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%0DiBuUm5 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 XB{9Qyy};oT`JSReZv^xB)j$0oZ=~(% literal 0 HcmV?d00001 diff --git a/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png b/articles/images/riscv-riscv_kvm_int_impl_2/mermaid-riscv-kvm-int-impl-2-9.png new file mode 100644 index 0000000000000000000000000000000000000000..7b895572cf3b7f76bd65d89e70984d0cf0d4de49 GIT binary patch literal 75327 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 literal 0 HcmV?d00001 -- Gitee From b7662a0f94d19c2fc6d238286c9dfbf80be39758 Mon Sep 17 00:00:00 2001 From: Zhangjin Wu Date: Fri, 30 Jun 2023 16:52:31 +0800 Subject: [PATCH 3/3] riscv-kvm-int-impl-2.md: commit correct result of tinycorrect-refs Signed-off-by: Zhangjin Wu --- articles/20230207-riscv-kvm-int-impl-2.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/articles/20230207-riscv-kvm-int-impl-2.md b/articles/20230207-riscv-kvm-int-impl-2.md index 46319cb..9073e96 100644 --- a/articles/20230207-riscv-kvm-int-impl-2.md +++ b/articles/20230207-riscv-kvm-int-impl-2.md @@ -1,4 +1,4 @@ -> Corrector: [TinyCorrect](https://gitee.com/tinylab/tinycorrect) v0.2-rc1 - [tounix]
+> Corrector: [TinyCorrect](https://gitee.com/tinylab/tinycorrect) v0.2-rc1 - [refs]
> Author: XiakaiPan <13212017962@163.com>
> Date: 20230109
> Revisor: Walimis
@@ -699,6 +699,7 @@ RISC-V 中断通过 PLIC,CLINT 等驱动和控制器来实现,KVM 模块对 ## 参考资料 - [Linux Kernel][1] +- [riscv kvm user app][15] - [RISC-V 异常处理在 KVM 中的实现][2] - [RISC-V timer 在 Linux 中的实现][3] - [RISC-V SSTC Extension][4] -- Gitee