当KVM RISC-V Hypervisor作为guset运行在其他主机Hypervisor之下时,完整的H扩展功能将由主机Hypervisor通过"陷入并模拟"(trap-and-emulate)方式实现。在这种情况下,如果主机Hypervisor提供了SBI嵌套加速(NACL)扩展,KVM RISC-V的性能可以得到加速。
本系列补丁扩展了KVM RISC-V,使其能够在底层SBI实现(即主机Hyperviso)提供该功能时使用SBI NACL扩展。
主要合入以下补丁
NACL的前置依赖补丁,包括kvm汇编代码的优化,新增用户空间栈回溯支持,并在 perf 中实现 Host/Guest 性能事件区分与基础 profiling 能力
683c5bb riscv: kvm: Use SYM_*() assembly macros instead of deprecated ones
e5ff012 riscv: kvm: use ".L" local labels in assembly when applicable
1a74833 riscv: stacktrace: Add USER_STACKTRACE support
5bb5ccb riscv: perf: add guest vs host distinction
eded675 riscv: KVM: add basic support for host vs guest profiling
NACL特性扩展合入
e403a90 RISC-V: KVM: Order the object files alphabetically
b6114a7 RISC-V: KVM: Save/restore HSTATUS in C source
b922307 RISC-V: KVM: Save/restore SCOUNTEREN in C source
8f57ada RISC-V: KVM: Break down the __kvm_riscv_switch_to() into macros
5d8f7ee RISC-V: KVM: Replace aia_set_hvictl() with aia_hvictl_value()
15ff2ff RISC-V: KVM: Don't setup SGEI for zero guest external interrupts
5daf89e RISC-V: Add defines for the SBI nested acceleration extension
d466c19 RISC-V: KVM: Add common nested acceleration support
e28e6b6 RISC-V: KVM: Use nacl_csr_xyz() for accessing H-extension CSRs
dab5560 RISC-V: KVM: Use nacl_csr_xyz() for accessing AIA CSRs
68c72a6 RISC-V: KVM: Use SBI sync SRET call when available
3e7d154 RISC-V: KVM: Save trap CSRs in kvm_riscv_vcpu_enter_exit()
5bdecd8 RISC-V: KVM: Use NACL HFENCEs for KVM request based HFENCEs
当KVM RISC-V Hypervisor作为guset运行在其他主机Hypervisor之下时,完整的H扩展功能将由主机Hypervisor通过"陷入并模拟"(trap-and-emulate)方式实现。在这种情况下,如果主机Hypervisor提供了SBI嵌套加速(NACL)扩展,KVM RISC-V的性能可以得到加速。
本系列补丁扩展了KVM RISC-V,使其能够在底层SBI实现(即主机Hyperviso)提供该功能时使用SBI NACL扩展。
主要合入以下补丁
NACL的前置依赖补丁,包括kvm汇编代码的优化,新增用户空间栈回溯支持,并在 perf 中实现 Host/Guest 性能事件区分与基础 profiling 能力
683c5bb riscv: kvm: Use SYM_*() assembly macros instead of deprecated ones
e5ff012 riscv: kvm: use ".L" local labels in assembly when applicable
1a74833 riscv: stacktrace: Add USER_STACKTRACE support
5bb5ccb riscv: perf: add guest vs host distinction
eded675 riscv: KVM: add basic support for host vs guest profiling
NACL特性扩展合入
e403a90 RISC-V: KVM: Order the object files alphabetically
b6114a7 RISC-V: KVM: Save/restore HSTATUS in C source
b922307 RISC-V: KVM: Save/restore SCOUNTEREN in C source
8f57ada RISC-V: KVM: Break down the __kvm_riscv_switch_to() into macros
5d8f7ee RISC-V: KVM: Replace aia_set_hvictl() with aia_hvictl_value()
15ff2ff RISC-V: KVM: Don't setup SGEI for zero guest external interrupts
5daf89e RISC-V: Add defines for the SBI nested acceleration extension
d466c19 RISC-V: KVM: Add common nested acceleration support
e28e6b6 RISC-V: KVM: Use nacl_csr_xyz() for accessing H-extension CSRs
dab5560 RISC-V: KVM: Use nacl_csr_xyz() for accessing AIA CSRs
68c72a6 RISC-V: KVM: Use SBI sync SRET call when available
3e7d154 RISC-V: KVM: Save trap CSRs in kvm_riscv_vcpu_enter_exit()
5bdecd8 RISC-V: KVM: Use NACL HFENCEs for KVM request based HFENCEs