本文分析riscv内存管理相关的指令,主要包括,内存序、TLB无效化以及cache无效化 的相关指令。分析使用的内核版本是v6.0,qemu版本是7.1.50,opensbi的版本是v1.1, riscv privilige ISA的版本是20211203,CMO的版本是20220513。
opensbi逻辑分析
本文分析opensbi的基本逻辑,分析基于opensbi 1.1版本。
riscv中断异常委托关系分析
本文分析riscv构架下,中断和异常在各个特权级下的委托关系。
riscv aclint逻辑分析
本文主要分析riscv aclint的定义和内核实现。aclint使用https://github.com/riscv/riscv-aclint 上发布的版本,内核使用v5.19-rc8,qemu使用7.1.50。
riscv qemu virt平台外设分析
本文分析riscv架构qemu virt虚拟机上各种外设的逻辑,分析基于qemu v7.1.50(d29201ff3), Linux内核基于v5.19。
Linux软中断基本概念
本文介绍Linux内核里软中断的基本逻辑,分析基于内核代码v5.19-rc8,体系结构基于 riscv。目前,没有实际案例帮助继续分析细节。
riscv kvm中断虚拟化的基本逻辑
本文分析riscv kvm中断虚拟化的相关逻辑,分析基于qemu v7.0.0,Linux内核基于v5.19。 中断直通没有分析。
riscv KVM虚拟化分析
本文分析Linux内核里KVM相关的逻辑,体系架构基于riscv。具体调试的时候,我们 使用了两层的qemu模型,第一层qemu使能了riscv的h扩展,第二层qemu使用kvm启动。 全文使用从上到下的思路分析,如果需要了解相关的硬件特性可以直接跳到最后。 使用v5.19-rc8内核代码、6.2.0 qemu代码作为分析代码。
构建riscv两层qemu的步骤
可以构建一个两层qemu的环境来调试问题,第一层qemu启动的时候打开qemu的虚拟化 扩展,这个可以作为一个支持虚拟化扩展的riscv硬件平台,第二层qemu启动的时候 打开kvm支持。用这样的方式,我们可以去学习kvm虚拟化相关的东西。本文记录这个 环境搭建的过程,使用的环境是ubuntu 20.04 arm64版本。
riscv timer的基本逻辑
本文梳理riscv上timer的基本软硬件逻辑,硬件模型基于qemu,使用的qemu版本是6.2.0, 内核代码分析使用的版本是v5.12-rc8。本文尽可能多的梳理riscv上timer相关的内容,需要独立描述的会在文中指出来。