From 898b66ed999ee46bc1a254be22b267a8fc447a7e Mon Sep 17 00:00:00 2001 From: yintianyu Date: Tue, 3 May 2022 11:20:21 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=87=E7=AB=A0=20?= =?UTF-8?q?=E3=80=8ARISC-V=20Linux=20=E4=B8=8A=E4=B8=8B=E6=96=87=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=88=86=E6=9E=90=E3=80=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/20220501-riscv-context-switch.md | 302 ++++++++++++++++++ .../images/riscv_context-switch/satp-sv32.png | Bin 0 -> 45264 bytes .../images/riscv_context-switch/satp-sv39.png | Bin 0 -> 61739 bytes 3 files changed, 302 insertions(+) create mode 100644 articles/20220501-riscv-context-switch.md create mode 100644 articles/images/riscv_context-switch/satp-sv32.png create mode 100644 articles/images/riscv_context-switch/satp-sv39.png diff --git a/articles/20220501-riscv-context-switch.md b/articles/20220501-riscv-context-switch.md new file mode 100644 index 0000000..814bee2 --- /dev/null +++ b/articles/20220501-riscv-context-switch.md @@ -0,0 +1,302 @@ +> Author: Jack Y.
+> Date: 2022/05/01
+> Revisor:
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) + +# RISC-V Linux 上下文切换分析 + +为了在一个处理器上能实现多个任务的并发运行,操作系统要负责在各个任务之间完成调度,这是操作系统最基本的功能之一。 +在 Linux 中,所有调度程序最终都归结到完成上下文切换(Context Switch),即前后两个任务之间运行环境的切换,本文主要基于 Linux 5.17 版本代码,讨论在 RISC-V 架构中上下文切换的诸多细节。 + +本文仅讨论上下文切换本身的流程,而何时进行上下文切换、切换到什么任务的问题,涉及到调度算法和策略,将在后续文章进行介绍。 + +## 纵览 Linux 上下文切换 + +Linux 上下文切换的入口在 `context_switch()` 函数,在其函数注释中已经明确概括了其主要内容: + +```c +// kernel/sched/core.c:4940 +/* + * context_switch - switch to the new MM and the new thread's register state. + */ +static __always_inline struct rq * +context_switch(struct rq *rq, struct task_struct *prev, + struct task_struct *next, struct rq_flags *rf) +{ + prepare_task_switch(rq, prev, next); + arch_start_context_switch(prev); + if (!next->mm) { // to kernel + enter_lazy_tlb(prev->active_mm, next); + next->active_mm = prev->active_mm; + if (prev->mm) // from user + mmgrab(prev->active_mm); + else + prev->active_mm = NULL; + } else { // to user + membarrier_switch_mm(rq, prev->active_mm, next->mm); + switch_mm_irqs_off(prev->active_mm, next->mm, next); + if (!prev->mm) { // from kernel + rq->prev_mm = prev->active_mm; + prev->active_mm = NULL; + } + } + rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP); + prepare_lock_switch(rq, next, rf); + switch_to(prev, next, prev); + barrier(); + return finish_task_switch(prev); +} +``` + +`context_switch()` 函数主要就负责两方面的切换,一是切换到新线程的 `mm_struct`,二是切换到新线程的寄存器状态。函数整体不长,去掉空行和注释后总共22行。 + +其函数入参共 $4$ 个: +* 第一个是 `rq`,即 Running Queue,每个 CPU 核有一个 Running Queue,大致可以理解为该 CPU 上的任务队列,每次从 Running Queue 中取出一个任务进行调度; +* 第二个是 `prev`,即切换之前正在执行的任务; +* 第三个是 `next`,即切换后要执行的任务; +* 第四个是 `rf`,在本函数中与 Running Queue 的锁有关。 + +`prepare_task_switch()` 函数主要是任务切换前的一些准备工作,里面主要涉及 `kcov`、`perf` 等与调测和性能监测相关的内容,与本文核心内容联系不大。 + +`arch_start_context_switch()` 函数给各个体系结构专有的开始上下文切换的工作提供了入口,但 RISC-V 架构对此函数无专门定义,各体系结构在通用的定义中,该函数为空。 + +接下来的 `if-else` 语句就到了本文第一个核心部分,即 `mm_struct` 的切换,将在下文中详述。 + +`rq->clock_update_flags &= ~(RQCF_ACT_SKIP|RQCF_REQ_SKIP);` 这一行与 Running Queue 的时钟更新有关,具体细节将在后续关于 Schedule 的文章中介绍。 + +下一行 `prepare_lock_switch()` 与死锁检测 `lockdep` 有关,本文将忽略这些离题较远的内容。 + +然后就到了 `switch_to()`,即 `context_switch()` 的第二个核心内容——寄存器的切换。 + +最后在加了一个内存屏障 `barrier()` 后,就到了结束环节 `finish_task_switch()`,这个函数和前面的 `prepare_lock_switch()` 相互对应。 + +下文将对 `mm_struct` 的切换和 `switch_to()` 寄存器内容的切换这两大部分进行详细分析。 + +## `mm_struct` 的切换 + +### 背景知识 + +我们先回顾《操作系统》课程中的两个基本概念: +* 进程是资源分配的最小单位 +* 线程是CPU调度的最小单位 + +上文中所提到的「任务」,其实就是线程。同一个进程的不同线程之间,共享内存资源,即他们拥有同一个 `mm_struct`。 + +对于 CPU 来说,不同线程之间在内存方面的主要区别是他们拥有不同的地址空间,即与地址翻译相关的页表(Page Table)及其缓存 TLB 不同。因此在上下文切换过程中,和内存相关的内容主要就涉及到页表指针的切换和 TLB 的刷新。 + +Linux 把整个虚拟地址空间分成两部分,一部分是用户空间,另一部分是内核空间。对于用户线程来说,它只能访问用户空间的内存,当用户线程陷入内核态后,它可以访问用户空间,也可以访问内核空间;对于内核线程来说,它只会访问内核空间的内存。每个用户进程之间是内存隔离的,因此他们拥有自己独有的用户空间的映射关系;而内核空间的是整个系统共有的,因此所有进程共享同样的内核空间的映射关系。 + +我们可以发现,在 `task_struct` 类中,有两个 `mm_struct*` 类型的成员,名字分别是 `mm` 和 `active_mm`(见`include/linux/sched.h:860`),在一封[二十多年前的电子邮件中](https://www.kernel.org/doc/html/latest/vm/active_mm.html),Linus Tolvalds 向开发者解释了这两个指针的区别。我们把这封邮件的内容加以总结和提炼,得到 `mm` 和 `active_mm` 用法如下: + +1. `mm` 成员是用户进程(线程)所正常使用的 `mm_struct`; +2. 内核进程(线程)由于无专有的内存空间,而与所有其他进程共享同样的内核空间,为了方便与优化性能,内核线程借用了该 CPU 中上一个运行的用户线程所使用的 `mm_struct`; +3. 内核线程的 `mm` 成员是空指针 `NULL`; +4. 内核线程将其借用的 `mm_struct` 地址存储在 `active_mm` 中,用户线程的 `active_mm == mm`。 + +### 切换逻辑分析 + +接下来我们看这一段 `if-else` 语句,在语句前的注释中,已经对切换前和切换后分别是内核线程和用户线程这排列组合的四种情况进行了分类讨论: + +```c +// kernel/sched/core.c:4956 +/* +* kernel -> kernel lazy + transfer active +* user -> kernel lazy + mmgrab() active +* +* kernel -> user switch + mmdrop() active +* user -> user switch +*/ +``` + +在代码中首先处理的是「切换到 Kernel 线程」部分,即`if (!next->mm)`(如上文所说,内核线程的 `mm` 是空指针)。 + +按照上面注释,凡是切换到内核线程的首先要做一个「lazy」,即 `enter_lazy_tlb()` 函数的调用。 +这个函数在 x86 等架构中有实现,RISC-V 中未实现该函数,其默认实现为空。在 x86 中,「Lazy TLB」主要用于减少切换上下文时不必要的 TLB 清空,以免切换后因地址翻译变慢造成性能下降。 RISC-V 借鉴 ARM 设计了 ASID 来实现类似的优化,下文中会详细介绍。 + +下一行 `next->active_mm = prev->active_mm;` 把上一个线程的 `active_mm` 「借」到了下一个内核线程中。 + +之后对上一个线程的类别加以区分:如果上一个线程是用户线程(`prev->mm != NULL`),则需要增加这个被借用的 `mm_struct` 的引用计数,这个引用计数记录了当前有多少个内核线程正在借用该 `mm_struct`,如果该 `mm_struct` 对应的用户线程已经死亡,则 Linux 需要等到其引用计数为 $0$,即不再有内核线程借用它,才能将其销毁;如果上一个线程是内核线程,则把上一个线程的 `active_mm` 清空,结束其对于该 `mm_struct` 的借用(这只是把借用它的内核线程从一个转换到了另一个,引用计数无需增加)。 + +接下来我们看切换到用户线程的情况,即 `else` 语句中的内容。 + +首先 `membarrier_switch_mm(rq, prev->active_mm, next->mm);` 使用了一个内存屏障,来保证上一个线程访问其内存空间与下一个线程访问其内存空间之间的先后顺序,避免在访存进行过程中发生 `mm_struct` 的切换导致的访存错误。(顺便补充一句,前面切换到内核线程因为没有切换 `mm_struct`,而不需要这样的内存屏障。) + +接着就到了重头戏 `switch_mm_irqs_off(prev->active_mm, next->mm, next);`,即真正切换 `mm_struct`。RISC-V 中没有定义 `switch_mm_irqs_off()` 函数,由通用宏定义转为 `switch_mm()` 函数。 + +最后如果切换之前的线程是内核线程,则需要设置 `rq->prev_mm` 用于后续清除其引用计数,并且解除上一个线程对它的借用。 + +### RISC-V 的 `switch_mm()` 实现 + +```c +// include/linux/mmu_context.h:8 +/* Architectures that care about IRQ state in switch_mm can override this. */ +#ifndef switch_mm_irqs_off +# define switch_mm_irqs_off switch_mm +#endif +``` + +RISC-V 的 `switch_mm()` 函数本身也很简单,只有短短 9 行: + +```c +// arch/riscv/mm/context.c:305 +void switch_mm(struct mm_struct *prev, struct mm_struct *next, + struct task_struct *task) +{ + unsigned int cpu; + if (unlikely(prev == next)) + return; + cpu = smp_processor_id(); + cpumask_clear_cpu(cpu, mm_cpumask(prev)); + cpumask_set_cpu(cpu, mm_cpumask(next)); + set_mm(next, cpu); + flush_icache_deferred(next, cpu); +} +``` + +首先是处理了 `prev == next` 的情况(同一个进程的不同线程之间切换,或者借用了某用户线程地址空间的内核线程切换到该用户线程),这种情况直接返回。 + +接着清除了该 CPU 的 `cpumask` 中之前的 `mm_struct` 的标志,并设置了新的 `mm_struct` 标志。 + +然后就到了 `set_mm()` 这个实际设置 `mm_struct` 的环节。 + +`set_mm()` 根据 `use_asid_allocator` 标志来区分,调用包含 `ASID` 的版本或者不包含 `ASID` 的版本: + +```c +// arch/riscv/mm/context.c:208 +static inline void set_mm(struct mm_struct *mm, unsigned int cpu) +{ + if (static_branch_unlikely(&use_asid_allocator)) + set_mm_asid(mm, cpu); + else + set_mm_noasid(mm); +} +``` + +`use_asid_allocator` 是系统初始化阶段时在 `asids_init()` 函数中设置的,下一小节再详细介绍 RISC-V 的 ASID 机制,这里先看一下不包含 ASID 情况下的 `set_mm()`: + +```c +// arch/riscv/mm/context.c:201 +static void set_mm_noasid(struct mm_struct *mm) +{ + /* Switch the page table and blindly nuke entire local TLB */ + csr_write(CSR_SATP, virt_to_pfn(mm->pgd) | satp_mode); + local_flush_tlb_all(); +} +``` + +`set_mm_noasid()` 还是很简单的,在 `satp` CSR 中设置一下页表指针(来自于 `mm->pgd`)和页表模式(32 位情况下为 `sv32`,64 位时根据 `CONFIG_XIP_KERNEL` 的配置选择 `sv39` 或 `sv48`),然后直接把所有的 TLB 项全部清空即可。 + +### RISC-V 的 ASID 机制 + +在不带 ASID 的 `set_mm_noasid()` 中,我们在设置页表后,简单地把所有的 TLB 项全部清空了,这就会导致切换到新的线程后,在一开始取指、访存时,会出现大量的 TLB Miss 的情况,需要反复到内存中查找页表,导致性能降低。ASID 机制是为了缓解这个问题而诞生的。 + +ASID 的全称是 Address Space Identifier,总而言之,每个用户进程(即每个 `mm_struct`)拥有一个唯一的 ASID,用于在 TLB 中与其他进程的表项区隔开来。这样在 TLB 中可以同时存在多个进程的表项,在地址翻译时增加表项的 ASID 与当前运行进程的 ASID 的匹配。经过这种优化后,如果两个用户进程之间频繁切换时,不用每次都清空 TLB,导致后续大量 TLB Miss,提高了取指和访存效率。 + +当前运行进程的 ASID 和页表指针一样,都写在 `satp` CSR 中,下图分别是 RV32 和 RV64 下该 CSR 的值设计: + +![](images/riscv_context-switch/satp-sv32.png) + +![](images/riscv_context-switch/satp-sv39.png) + +从上面两图中可以看出,RV32 和 RV64 下,ASID 最长分别可以到 9 位和 16 位。但这只是理论最大值,实际硬件实现中不一定有这么多位(因为 ASID 的位数越多,在 TLB 中其比较逻辑、存储空间占用就会越大,这里也是性能与面积/功耗的取舍)。 + +软件上判断 ASID 实现位数的方式是,先往 `satp` CSR 中理论上最多的 ASID 位上都写 $1$,然后再把这些位读出来,有多少位被写上了 $1$,就是硬件支持多少位。在 ASID 的初始化函数 `asids_init()` 中,Linux 也就是通过这种方式判断 ASID 的位数,从而决定是否开启 ASID。 + +```c +// arch/riscv/mm/context.c:220 + /* Figure-out number of ASID bits in HW */ + old = csr_read(CSR_SATP); + asid_bits = old | (SATP_ASID_MASK << SATP_ASID_SHIFT); + csr_write(CSR_SATP, asid_bits); + asid_bits = (csr_read(CSR_SATP) >> SATP_ASID_SHIFT) & SATP_ASID_MASK; + asid_bits = fls_long(asid_bits); + csr_write(CSR_SATP, old); +``` + +在这个初始化函数中,如果 ASID 的位数 `asid_bits` 大于当前 CPU 核数的两倍,就会开启 ASID,即设置 `use_asid_allocator` 为 `TRUE`,否则不会开启 ASID。 + +硬件上 ASID 的数量是有限的,为了在有限的硬件 ASID 上实现出「无限」的虚拟 ASID,RISC-V 借鉴 ARM 实现了如下的 Version 机制: +RISC-V 在 `mm_struct` 的体系结构特异字段 `context` 中增加了一个成员 `atomic_long_t id;`,其低位用于保存 ASID,而高位用于保存 ASID 的 version。 +这个 version 可以理解为 ASID 的有效版本,在当前版本的 ASID 空间耗尽时,版本号会自增 $1$,同时属于旧版本的所有 ASID 均将失效。 + +现在我们来开始分析开启 ASID 后,`set_mm_asid()` 函数中上下文切换时 ASID 的更新逻辑(见 `arch/riscv/mm/context.c:145`)。 + +首先读出下一个执行线程的 `mm_struct` 的 `context.id` 为 `cntx`,以及当前 CPU 正在执行线程的 `context.id` 为 `old_active_cntx`,如果 `old_active_cntx` 有效且 `cntx` 属于当前版本,那么直接 goto 到 `switch_mm_fast`,更新当前 CPU 的 `context.id` 为 `cntx` 以及设置 `satp` CSR 的 ASID 和页表指针即可: + +```c +// arch/riscv/mm/context.c:151 +cntx = atomic_long_read(&mm->context.id); +old_active_cntx = atomic_long_read(&per_cpu(active_context, cpu)); +if (old_active_cntx && + ((cntx & ~asid_mask) == atomic_long_read(¤t_version)) && + atomic_long_cmpxchg_relaxed(&per_cpu(active_context, cpu), + old_active_cntx, cntx)) + goto switch_mm_fast; +``` + +如果 `cntx` 不属于当前版本,则需要调用 `__new_context()` 生成一个新的 context。生成新的 context 的逻辑大致是,先尝试 ASID 不改,只更新 version,如果新的 context 有效,则无需清空 TLB;但如果新的 context 无效(该 ASID 已经被别的进程在新版本中使用),则需要在当前版本中从小到大找一个有效的 ASID 赋给该进程,如果当前版本 ASID 已经用光,则大版本 version 向前前进一次,同时将所有目前的 context 全部无效掉(具体内容读者可自行阅读这部分代码)。生成新的 context 后,存储在下一个进程的 `mm_struct` 当中: + +```c +// arch/riscv/mm/context.c:178 +/* Check that our ASID belongs to the current_version. */ +cntx = atomic_long_read(&mm->context.id); +if ((cntx & ~asid_mask) != atomic_long_read(¤t_version)) { + cntx = __new_context(mm); + atomic_long_set(&mm->context.id, cntx); +} +``` + +后面就是更新一下当前 CPU 核的 `active_context`,更新一下 `satp` CSR,按需刷新一下 TLB 即可。 + +```c +// arch/riscv/mm/context.c:185 +if (cpumask_test_and_clear_cpu(cpu, &context_tlb_flush_pending)) + need_flush_tlb = true; + +atomic_long_set(&per_cpu(active_context, cpu), cntx); + +raw_spin_unlock_irqrestore(&context_lock, flags); + +switch_mm_fast: +csr_write(CSR_SATP, virt_to_pfn(mm->pgd) | + ((cntx & asid_mask) << SATP_ASID_SHIFT) | + satp_mode); + +if (need_flush_tlb) + local_flush_tlb_all(); +``` + +到目前为止,页表指针和 TLB 项需要更新的都已经更新,`mm_struct` 的切换已经完成。 + +注:有关 RISC-V ASID 的设计读者也可以参考这封作者提交代码时的[邮件](https://patchwork.kernel.org/project/linux-riscv/patch/20190327100201.32220-1-anup.patel@wdc.com/)。 + +## 切换寄存器内容 + +`context_switch()` 函数的下一个重要内容就是 `switch_to()`,即切换寄存器状态和栈(在 RISC-V 中栈指针也是若干通用寄存器中的一个,所以其实也属于切换寄存器内容)。 + +RISC-V 的 `switch_to()` 函数是一个带参宏,先是判断了这个核有没有 FPU,如果有还需要切换浮点寄存器,这部分我们就不深追究了;然后就是调用汇编写的 `__switch_to()` 函数: + +```c +// arch/riscv/include/asm/switch_to.h:74 +#define switch_to(prev, next, last) \ +do { \ + struct task_struct *__prev = (prev); \ + struct task_struct *__next = (next); \ + if (has_fpu()) \ + __switch_to_aux(__prev, __next); \ + ((last) = __switch_to(__prev, __next)); \ +} while (0) +``` + +`__switch_to()` 函数的位置在 `arch/riscv/kernel/entry.S:512`,基本内容就是把当前的各个寄存器保存在 `prev->thread` 中,然后从 `next->thread` 中恢复出各个寄存器的内容,受篇幅所限这里就不贴出代码了,感兴趣的读者可自行浏览。 + + +## 本文小结 + +本文介绍了 RISC-V 架构下 Linux 上下文切换的流程,并着重介绍了 `mm_struct` 的切换以及寄存器内容的切换 `switch_to()`,同时带大家了解了 RISC-V 中 ASID 的设计与实现。 + +## 参考文档 + +1. [进程切换分析(2):TLB处理](http://www.wowotech.net/process_management/context-switch-tlb.html) +2. [Commit Message](https://patchwork.kernel.org/project/linux-riscv/patch/20190327100201.32220-1-anup.patel@wdc.com/) +3. [Active MM](https://docs.kernel.org/vm/active_mm.html) \ No newline at end of file diff --git a/articles/images/riscv_context-switch/satp-sv32.png b/articles/images/riscv_context-switch/satp-sv32.png new file mode 100644 index 0000000000000000000000000000000000000000..5d83de445fb6307f3b488db235b1ec782f0cf6bc GIT binary patch literal 45264 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]=aWuv>BXjLETZ9pS9 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�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 TSz0eYF#v(5tDnm{r-UW|H(};& literal 0 HcmV?d00001 -- Gitee From 30e8eef8b58f3e40d594555c49ff5299199e0fc6 Mon Sep 17 00:00:00 2001 From: yintianyu Date: Sun, 8 May 2022 09:24:58 +0800 Subject: [PATCH 02/12] =?UTF-8?q?[v2]=20=E6=9B=B4=E6=96=B0=20Context=5FSwi?= =?UTF-8?q?tch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/20220501-riscv-context-switch.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/articles/20220501-riscv-context-switch.md b/articles/20220501-riscv-context-switch.md index 814bee2..de960ac 100644 --- a/articles/20220501-riscv-context-switch.md +++ b/articles/20220501-riscv-context-switch.md @@ -5,7 +5,10 @@ # RISC-V Linux 上下文切换分析 +## 前言 + 为了在一个处理器上能实现多个任务的并发运行,操作系统要负责在各个任务之间完成调度,这是操作系统最基本的功能之一。 + 在 Linux 中,所有调度程序最终都归结到完成上下文切换(Context Switch),即前后两个任务之间运行环境的切换,本文主要基于 Linux 5.17 版本代码,讨论在 RISC-V 架构中上下文切换的诸多细节。 本文仅讨论上下文切换本身的流程,而何时进行上下文切换、切换到什么任务的问题,涉及到调度算法和策略,将在后续文章进行介绍。 @@ -86,7 +89,7 @@ context_switch(struct rq *rq, struct task_struct *prev, Linux 把整个虚拟地址空间分成两部分,一部分是用户空间,另一部分是内核空间。对于用户线程来说,它只能访问用户空间的内存,当用户线程陷入内核态后,它可以访问用户空间,也可以访问内核空间;对于内核线程来说,它只会访问内核空间的内存。每个用户进程之间是内存隔离的,因此他们拥有自己独有的用户空间的映射关系;而内核空间的是整个系统共有的,因此所有进程共享同样的内核空间的映射关系。 -我们可以发现,在 `task_struct` 类中,有两个 `mm_struct*` 类型的成员,名字分别是 `mm` 和 `active_mm`(见`include/linux/sched.h:860`),在一封[二十多年前的电子邮件中](https://www.kernel.org/doc/html/latest/vm/active_mm.html),Linus Tolvalds 向开发者解释了这两个指针的区别。我们把这封邮件的内容加以总结和提炼,得到 `mm` 和 `active_mm` 用法如下: +我们可以发现,在 `task_struct` 类中,有两个 `mm_struct*` 类型的成员,名字分别是 `mm` 和 `active_mm`(见`include/linux/sched.h:860`),在一封 [二十多年前的电子邮件中](https://www.kernel.org/doc/html/latest/vm/active_mm.html),Linus Tolvalds 向开发者解释了这两个指针的区别。我们把这封邮件的内容加以总结和提炼,得到 `mm` 和 `active_mm` 用法如下: 1. `mm` 成员是用户进程(线程)所正常使用的 `mm_struct`; 2. 内核进程(线程)由于无专有的内存空间,而与所有其他进程共享同样的内核空间,为了方便与优化性能,内核线程借用了该 CPU 中上一个运行的用户线程所使用的 `mm_struct`; @@ -117,7 +120,7 @@ Linux 把整个虚拟地址空间分成两部分,一部分是用户空间, 之后对上一个线程的类别加以区分:如果上一个线程是用户线程(`prev->mm != NULL`),则需要增加这个被借用的 `mm_struct` 的引用计数,这个引用计数记录了当前有多少个内核线程正在借用该 `mm_struct`,如果该 `mm_struct` 对应的用户线程已经死亡,则 Linux 需要等到其引用计数为 $0$,即不再有内核线程借用它,才能将其销毁;如果上一个线程是内核线程,则把上一个线程的 `active_mm` 清空,结束其对于该 `mm_struct` 的借用(这只是把借用它的内核线程从一个转换到了另一个,引用计数无需增加)。 -接下来我们看切换到用户线程的情况,即 `else` 语句中的内容。 +接下来我们看「切换到 User 线程」的情况,即 `else` 语句中的内容。 首先 `membarrier_switch_mm(rq, prev->active_mm, next->mm);` 使用了一个内存屏障,来保证上一个线程访问其内存空间与下一个线程访问其内存空间之间的先后顺序,避免在访存进行过程中发生 `mm_struct` 的切换导致的访存错误。(顺便补充一句,前面切换到内核线程因为没有切换 `mm_struct`,而不需要这样的内存屏障。) @@ -268,7 +271,9 @@ if (need_flush_tlb) 到目前为止,页表指针和 TLB 项需要更新的都已经更新,`mm_struct` 的切换已经完成。 -注:有关 RISC-V ASID 的设计读者也可以参考这封作者提交代码时的[邮件](https://patchwork.kernel.org/project/linux-riscv/patch/20190327100201.32220-1-anup.patel@wdc.com/)。 +注:有关 RISC-V ASID 的设计读者也可以参考这封作者提交代码时的 [邮件](https://patchwork.kernel.org/project/linux-riscv/patch/20190327100201.32220-1-anup.patel@wdc.com/)。 + +另外,[这篇文章](https://zhuanlan.zhihu.com/p/118244515) 也生动地介绍了 ASID 管理,但其中对于 ASID 不足时处理方面的描述比较简略,未能反映出全部的情况,请读者阅读时注意鉴别。 ## 切换寄存器内容 -- Gitee From 5a98d396e785a3fc3ddc7d745c616e02c65a53c1 Mon Sep 17 00:00:00 2001 From: Pingbo Wen Date: Wed, 4 May 2022 03:14:25 -0700 Subject: [PATCH 03/12] add riscv-privileged.md Signed-off-by: Pingbo Wen --- articles/20220504-riscv-privileged.md | 115 ++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 articles/20220504-riscv-privileged.md diff --git a/articles/20220504-riscv-privileged.md b/articles/20220504-riscv-privileged.md new file mode 100644 index 0000000..0d334be --- /dev/null +++ b/articles/20220504-riscv-privileged.md @@ -0,0 +1,115 @@ +> Author: Pingbo Wen
+> Date: 2022/05/04
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) + +# RISC-V 特权指令 + +RISCV ISA Spec 分为两部分,一个是非特权指令,另外一个就是特权指令。非特权指令主要是用于通用计算,站在操作系统的角度来看,可以理解为用户态(低权限模式)能够运行的指令。而特权指令,是为了能够运行像 Linux/Windows 现代操作系统而设定的。现代操作系统主要强调对资源的管控,这就需要硬件上提供额外的权限管理机制,从而能够限制普通应用代码的行为。 + +## 特权等级 + +在 ARM64 中,分为 el0-el3 特权等级。RISCV 同样有类似的设定,具体定义如下: + +特权等级 | 编码 | 名称 | 缩写 +--------|------|-----|------ +0 | 00 | 用户模式 | U +1 | 01 | 监管者模式 | S +2 | 10 | Reserved +3 | 11 | 机器模式 | M + +M 模式是权限最高的特权等级,也是 RISCV Spec 中明确规定必须要实现的特权等级,其他三个特权等级是可选的。芯片厂商可以根据实际应用场景来决定需要实现哪些特权等级。特权等级的实现组合有如下几种: + +- M, 简单嵌入式系统(单片机) +- M + U, 安全嵌入式系统(带保护) +- M + S + U, 现代操作系统(Windows/Linux) + +其中保留的特权等级 2 是留给虚拟化用的。在 H 扩展(Hypervisor Extension)中,把 S 模式扩展成 HS 模式(Hypervisor-Extended Supervisor mode),具体可以参考 Spec。 + +RISCV 手册中有提到过一个 Debug Mode,可以理解为比 M 权限更高的特权等级,用于支持芯片调试。但目前没有看到更多关于这个模式的资料。 + +在一个典型 Linux 系统中,用户态应用程序跑在 U 模式,内核跑在 S 模式,而 M 模式一般是 opensbi/uboot 等 bootloader 在用。 + +## 异常处理 + +有了特权等级,相应的需要提供进入退出特权等级的方法,以及控制机制。和 ARM 类似,RISCV 也是通过异常切换不同特权等级,这个地方你可以把异常理解成一种中断。严格来讲,中断也只是异常中的一种而已。 以 M 模式处理异常为例,当 U 或者 S 模式发生异常后,处理器会自动做如下处理: + +1. 处理器保存异常指令 PC 到 MEPC 中 +2. 根据发生的异常类型设置 MCAUSE,并更新 MTVAL 为出错的取指地址、存储/加载地址或者指令码 +3. 将 MSTATUS 的中断使能位域 MIE 保存到 MPIE 域中,将 MIE 域的值清零,禁止响应中断 +4. 将发生异常之前的权限模式保存到 MSTATUS 的 MPP 域中,切换到机器模式(没有做异常降级响应处理的话) +5. 根据 MTVEC 中的基址和模式,得到异常服务程序入口地址。处理器从异常服务程序的第一条指令处开始执行,进行异常的处理 + +如果是 S 模式处理异常,相应操作的寄存器就是 SEPC/SCAUSE/STVAL/SIE/SSTATUS 等。而读写这些寄存器主要是通过 CSR 指令,这跟 ARM 中的 MSR/MRS 指令类似。CSR 指令具体定义如下: + +CSR 指令 | 格式 | 说明 +---------|------|----- +CSRRC | csrrc rd, csr, rs1 | 控制寄存器清零,rd = csr,csr &= ~rs1 +CSRRCI | csrrci rd, csr, imm | 控制寄存器立即数清零,rd = csr, csr &= ~imm +CSRRS | csrrs rd, csr, rs1 | 控制寄存器置位,rd = csr, csr \|= rs1 +CSRRSI | csrrsi rd, csr, imm | 控制寄存器立即数置位,rd = csr, csr \|= imm +CSRRW | csrrw rd, csr, rs1 | 控制寄存器读写,rd = csr, csr = rs1 +CSRRWI | csrrwi rd, csr, imm | 控制寄存器立即数读写,rd = csr, csr = imm + +这些 CSR 指令配合 x0 寄存器,就组成了很多我们常见的伪指令: + +CSR 伪指令 | 格式 | 说明 +---------|------|----- +CSRC | csrc csr, rs | 对应基础指令 csrrc x0, csr, rs +CSRCI | csrci csr, imm | 对应基础指令 csrrci x0, csr, imm +CSRS | csrs csr, rs | 对应基础指令 csrrs x0, csr, rs +CSRSI | csrsi csr, imm | 对应基础指令 csrrsi x0, csr, imm +CSRR | csrr rd, csr | 对应基础指令 csrrs rd, csr, x0 +CSRW | csrw csr, rs | 对应基础指令 csrrw x0, csr, rs +CSRWI | csrwi csr, imm | 对应基础指令 csrrw x0, csr, imm + +除了硬件上的中断,以及非法指令等异常外,RISCV 还提供 ECALL/EBREAK 两条指令,让软件可以自己主动产生异常,其中 ECALL 主要用于环境调用,Linux 系统调用就是通过这个指令执行内核系统调用。而 EBREAK 主要是在调试场景下用。 + +## Linux 系统下的系统调用实现 + +下面以 Linux 系统 sys_open 系统调用为例,我们看一下用户态程序(特权等级 0, U 模式)是怎么陷入到 Linux 内核(特权等级 1, S 模式)中执行系统调用的。 + +首先用户态通过 ecall 指令触发系统调用,使用 a7 寄存器传递系统调用编号,a0-a5 寄存器来传递参数: + +``` + 22482: eb8d bnez a5,224b4 <__libc_open+0x64> + 22484: 03800893 li a7,56 + 22488: f9c00513 li a0,-100 + 2248c: 8622 mv a2,s0 + 2248e: 00000073 ecall +``` + +陷入到内核态后,处理器从 STVEC 寄存器加载异常处理程序入口。在 Linux 内核初始化过程中(arch/riscv/kernel/head.S),就已经通过 CSR 指令设置好了 STVEC 寄存器,指向 handle_exception 函数: + +``` +setup_trap_vector: + /* Set trap vector to exception handler */ + la a0, handle_exception + csrw CSR_TVEC, a0 + + /* + * Set sup0 scratch register to 0, indicating to exception vector that + * we are presently executing in kernel. + */ + csrw CSR_SCRATCH, zero + ret +``` + +handle_exception 最终会跳转到 handle_syscall,然后从 a7 寄存器中拿到系统调用编号,从 sys_call_table 中索引到最终系统调用处理函数(arch/riscv/kernel/entry.S): + +``` + /* Check to make sure we don't jump to a bogus syscall number. */ + li t0, __NR_syscalls + la s0, sys_ni_syscall + /* + * Syscall number held in a7. + * If syscall number is above allowed value, redirect to ni_syscall. + */ + bgeu a7, t0, 1f + /* Call syscall */ + la s0, sys_call_table + slli t0, a7, RISCV_LGPTR + add s0, s0, t0 + REG_L s0, 0(s0) +1: + jalr s0 +``` -- Gitee From ab5dae78f5d5418194d9839ba528508c7d579185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Wed, 4 May 2022 13:13:26 +0000 Subject: [PATCH 04/12] update riscv-priv-intro Fix up some format issues. --- articles/20220504-riscv-privileged.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/articles/20220504-riscv-privileged.md b/articles/20220504-riscv-privileged.md index 0d334be..f0982c0 100644 --- a/articles/20220504-riscv-privileged.md +++ b/articles/20220504-riscv-privileged.md @@ -4,11 +4,11 @@ # RISC-V 特权指令 -RISCV ISA Spec 分为两部分,一个是非特权指令,另外一个就是特权指令。非特权指令主要是用于通用计算,站在操作系统的角度来看,可以理解为用户态(低权限模式)能够运行的指令。而特权指令,是为了能够运行像 Linux/Windows 现代操作系统而设定的。现代操作系统主要强调对资源的管控,这就需要硬件上提供额外的权限管理机制,从而能够限制普通应用代码的行为。 +RISC-V ISA Spec 分为两部分,一个是非特权指令,另外一个就是特权指令。非特权指令主要是用于通用计算,站在操作系统的角度来看,可以理解为用户态(低权限模式)能够运行的指令。而特权指令,是为了能够运行像 Linux/Windows 现代操作系统而设定的。现代操作系统主要强调对资源的管控,这就需要硬件上提供额外的权限管理机制,从而能够限制普通应用代码的行为。 ## 特权等级 -在 ARM64 中,分为 el0-el3 特权等级。RISCV 同样有类似的设定,具体定义如下: +在 ARM64 中,分为 el0-el3 特权等级。RISC-V 同样有类似的设定,具体定义如下: 特权等级 | 编码 | 名称 | 缩写 --------|------|-----|------ @@ -17,7 +17,7 @@ RISCV ISA Spec 分为两部分,一个是非特权指令,另外一个就是 2 | 10 | Reserved 3 | 11 | 机器模式 | M -M 模式是权限最高的特权等级,也是 RISCV Spec 中明确规定必须要实现的特权等级,其他三个特权等级是可选的。芯片厂商可以根据实际应用场景来决定需要实现哪些特权等级。特权等级的实现组合有如下几种: +M 模式是权限最高的特权等级,也是 RISC-V Spec 中明确规定必须要实现的特权等级,其他三个特权等级是可选的。芯片厂商可以根据实际应用场景来决定需要实现哪些特权等级。特权等级的实现组合有如下几种: - M, 简单嵌入式系统(单片机) - M + U, 安全嵌入式系统(带保护) @@ -25,13 +25,13 @@ M 模式是权限最高的特权等级,也是 RISCV Spec 中明确规定必须 其中保留的特权等级 2 是留给虚拟化用的。在 H 扩展(Hypervisor Extension)中,把 S 模式扩展成 HS 模式(Hypervisor-Extended Supervisor mode),具体可以参考 Spec。 -RISCV 手册中有提到过一个 Debug Mode,可以理解为比 M 权限更高的特权等级,用于支持芯片调试。但目前没有看到更多关于这个模式的资料。 +RISC-V 手册中有提到过一个 Debug Mode,可以理解为比 M 权限更高的特权等级,用于支持芯片调试。关于这个模式的资料可参考 [官方手册](https://github.com/riscv/riscv-debug-spec/blob/release/riscv-debug-release.pdf)。 -在一个典型 Linux 系统中,用户态应用程序跑在 U 模式,内核跑在 S 模式,而 M 模式一般是 opensbi/uboot 等 bootloader 在用。 +在一个典型 Linux 系统中,用户态应用程序跑在 U 模式,内核跑在 S 模式,而 M 模式一般是 OpenSBI/U-Boot 等 Bootloader 在用。 ## 异常处理 -有了特权等级,相应的需要提供进入退出特权等级的方法,以及控制机制。和 ARM 类似,RISCV 也是通过异常切换不同特权等级,这个地方你可以把异常理解成一种中断。严格来讲,中断也只是异常中的一种而已。 以 M 模式处理异常为例,当 U 或者 S 模式发生异常后,处理器会自动做如下处理: +有了特权等级,相应的需要提供进入退出特权等级的方法,以及控制机制。和 ARM 类似,RISC-V 也是通过异常切换不同特权等级,这个地方你可以把异常理解成一种中断。严格来讲,中断也只是异常中的一种而已。 以 M 模式处理异常为例,当 U 或者 S 模式发生异常后,处理器会自动做如下处理: 1. 处理器保存异常指令 PC 到 MEPC 中 2. 根据发生的异常类型设置 MCAUSE,并更新 MTVAL 为出错的取指地址、存储/加载地址或者指令码 @@ -62,13 +62,13 @@ CSRR | csrr rd, csr | 对应基础指令 csrrs rd, csr, x0 CSRW | csrw csr, rs | 对应基础指令 csrrw x0, csr, rs CSRWI | csrwi csr, imm | 对应基础指令 csrrw x0, csr, imm -除了硬件上的中断,以及非法指令等异常外,RISCV 还提供 ECALL/EBREAK 两条指令,让软件可以自己主动产生异常,其中 ECALL 主要用于环境调用,Linux 系统调用就是通过这个指令执行内核系统调用。而 EBREAK 主要是在调试场景下用。 +除了硬件上的中断,以及非法指令等异常外,RISC-V 还提供 ECALL/EBREAK 两条指令,让软件可以自己主动产生异常,其中 ECALL 主要用于环境调用,Linux 系统调用就是通过这个指令执行内核系统调用。而 EBREAK 主要是在调试场景下用。 ## Linux 系统下的系统调用实现 -下面以 Linux 系统 sys_open 系统调用为例,我们看一下用户态程序(特权等级 0, U 模式)是怎么陷入到 Linux 内核(特权等级 1, S 模式)中执行系统调用的。 +下面以 Linux 系统 `sys_open` 系统调用为例,我们看一下用户态程序(特权等级 0, U 模式)是怎么陷入到 Linux 内核(特权等级 1, S 模式)中执行系统调用的。 -首先用户态通过 ecall 指令触发系统调用,使用 a7 寄存器传递系统调用编号,a0-a5 寄存器来传递参数: +首先用户态通过 `ecall` 指令触发系统调用,使用 `a7` 寄存器传递系统调用编号,`a0-a5` 寄存器来传递参数: ``` 22482: eb8d bnez a5,224b4 <__libc_open+0x64> @@ -78,7 +78,7 @@ CSRWI | csrwi csr, imm | 对应基础指令 csrrw x0, csr, imm 2248e: 00000073 ecall ``` -陷入到内核态后,处理器从 STVEC 寄存器加载异常处理程序入口。在 Linux 内核初始化过程中(arch/riscv/kernel/head.S),就已经通过 CSR 指令设置好了 STVEC 寄存器,指向 handle_exception 函数: +陷入到内核态后,处理器从 STVEC 寄存器加载异常处理程序入口。在 Linux 内核初始化过程中(arch/riscv/kernel/head.S),就已经通过 CSR 指令设置好了 STVEC 寄存器,指向 `handle_exception` 函数: ``` setup_trap_vector: @@ -94,7 +94,7 @@ setup_trap_vector: ret ``` -handle_exception 最终会跳转到 handle_syscall,然后从 a7 寄存器中拿到系统调用编号,从 sys_call_table 中索引到最终系统调用处理函数(arch/riscv/kernel/entry.S): +`handle_exception` 最终会跳转到 `handle_syscall`,然后从 a7 寄存器中拿到系统调用编号,从 `sys_call_table` 中索引到最终系统调用处理函数(arch/riscv/kernel/entry.S): ``` /* Check to make sure we don't jump to a bogus syscall number. */ -- Gitee From eb5f92cc810105fb8eef7e51c646ccff1dfe57ce Mon Sep 17 00:00:00 2001 From: Yu Liao Date: Sun, 1 May 2022 23:41:50 +0800 Subject: [PATCH 05/12] add riscv linux timer articel --- articles/20220501-riscv-linux-timer.md | 214 ++++++++++++++++++ .../riscv_specs/riscv-privilege-mode.png | Bin 0 -> 275162 bytes 2 files changed, 214 insertions(+) create mode 100644 articles/20220501-riscv-linux-timer.md create mode 100644 articles/images/riscv_specs/riscv-privilege-mode.png diff --git a/articles/20220501-riscv-linux-timer.md b/articles/20220501-riscv-linux-timer.md new file mode 100644 index 0000000..ab1f507 --- /dev/null +++ b/articles/20220501-riscv-linux-timer.md @@ -0,0 +1,214 @@ +> Author: Yu Liao
+> Date: 2022/05/1
+> Revisor: Wu Zhangjin
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) + +# RISC-V timer 在 Linux 中的实现 + +注:本文对于特权模式的描述参照下图,图片来源参考文档 5。 +![RISC-V 虚拟化特权模式](images/riscv_specs/riscv-privilege-mode.png) + +## RISC-V timer 相关寄存器 + +### `mtime`&`mtimecmp` 寄存器 + +按照 RISC-V 定义,系统需要提供两个 64 位的 M 模式寄存器 `mtime` 和 `mtimecmp`,并通过 MMIO 方式映射到地址空间。`mtime` 需要以固定的频率递增,并在发生溢出时回绕。当 `mtime` 大于或等于 `mtimecmp` 时,由核间局部中断控制器 (CLINT, Core-Local Interrupt Controller) 产生 timer 中断。中断的使能由 `mie` 寄存器中的 `MTIE` 和 `STIE` 位控制,`mip` 中的 `MPIE` 和 `SPIE` 则指示了 timer 中断是否处于 pending。 在 RV32 中读取 `mtimecmp` 结果为低 32 位, `mtimecmp` 的高 32 位需要读取 `mtimecmph` 得到。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 3.2.1 Machine Timer Registers (mtime and mtimecmp) 中详细介绍了这部分。 + +### `time` CSR +RISC-V 还定义了一个 64 位非特权 CSR 寄存器 `time`,`time` 计数器是前面提到的 `mtime` 的只读映射。同样,在 RV32 中 `timeh` CSR 是 `mtime` 高 32 位的只读映射,对于 M 模式和 S 模式它们都是可读写的。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 2.2 CSR Listing 和 3.1.11 Machine Counter-Enable Register (mcounteren) 可以找到这块的规范。 + +### `htimedelta`&`htimedeltah` 寄存器 +`htimedelta` 和 `htimedeltah` 是 hypervisor 扩展里的 CSR,在 VS/VU 模式下读取 `time` 结果是真正的 host 中的 `time` 加上 `htimedelta`。同样的,对于 RV32 `htimedelta` 保存了低 32 位,高 32 位保存在 `htimedeltah`。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 8.2.7 Hypervisor Time Delta Registers (htimedelta, htimedeltah) 中详细介绍了这部分。 + +### Sstc 扩展 +由于 `mtimecmp` 只能在 M 模式下访问,对于 S/HS 模式下的内核和 VU/VS 模式下的虚拟机需要通过 SBI 才能访问,会造成较大的中断延迟和性能开销。为了解决这一问题,RISC-V 新增了 Sstc 拓展支持(已批准但尚未最终集成到规范中)。 + +Sstc 扩展增加了 `stimecmp` 和 `vstimecmp` 寄存器,当 `time`/`time`+`htimedelta` 大于或等于 `stimecmp`/`vstimecmp` 时会产生 timer 中断,不再需要通过 SBI 陷入其他模式。详见 [RISC-V "stimecmp / vstimecmp" 扩展](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) 。 + +## Linux timer 实现 + +Linux 将底层时钟硬件抽象为两类设备:clockevent 和 clocksource,前者用来在未来指定的时间产生中断,通常用作定时器;后者则用于维护自系统启动以来所经过的时间。 + +当前 Linux 为 RISC-V 根据内核运行模式实现了两套驱动,代码路径为 drivers/clocksource/timer-riscv.c 和 drivers/clocksource/timer-clint.c。本文代码基于最新的 Linux v5.18-rc4 和 OpenSBI v1.0,截止目前 Linux 对 Sstc 扩展的支持还没有合入主线内核,社区已有相关补丁:[Add Sstc extension support](https://lkml.org/lkml/2022/3/4/1175)。 + +`mtime` 频率由设备树 CPU 节点中的 timebase-frequency 定义,不同平台都各不相同,如 Kendryte K210 的频率是 7.8 MHz,平头哥 C910 的频率是 3 MHz,SiFive Unmatched A00 频率为 1 MHz。 + +### timer-riscv.c + +timer-riscv.c 驱动适用于 NoMMU 系统,内核运行在 M 模式下,通过 CONFIG_CLINT_TIMER 使能该驱动。RV64 下 clocksource 是通过直接读取 `mtime` 寄存器实现的,RV32 系统需要分两次读取,并需要考虑产生进位的情况。 +```c +#ifdef CONFIG_64BIT +static u64 notrace clint_get_cycles64(void) +{ + return clint_get_cycles(); +} +#else /* CONFIG_64BIT */ +static u64 notrace clint_get_cycles64(void) +{ + u32 hi, lo; + + do { + hi = clint_get_cycles_hi(); + lo = clint_get_cycles(); + } while (hi != clint_get_cycles_hi()); + + return ((u64)hi << 32) | lo; +} +#endif /* CONFIG_64BIT */ +``` +`clint_get_cycles/clint_get_cycles_hi` 直接通过内存访问寄存器。 +```c +#ifdef CONFIG_64BIT +#define clint_get_cycles() readq_relaxed(clint_timer_val) +#else +#define clint_get_cycles() readl_relaxed(clint_timer_val) +#define clint_get_cycles_hi() readl_relaxed(((u32 *)clint_timer_val) + 1) +#endif + +``` +clockevent 是通过使能 `mie` 的 TIMER 中断,并向 `mtimecmp` 寄存器写入期望的计数值实现的。 +```c +static int clint_clock_next_event(unsigned long delta, + struct clock_event_device *ce) +{ + void __iomem *r = clint_timer_cmp + + cpuid_to_hartid_map(smp_processor_id()); + + csr_set(CSR_IE, IE_TIE); + writeq_relaxed(clint_get_cycles64() + delta, r); + return 0; +} +``` + +### timer-clint.c + +timer-clint.c 驱动适用于有 MMU 的场景,内核运行在 S/HS 模式下,通过 CONFIG_RISCV_TIMER 可以使能该驱动。和 timer-riscv.c 的驱动相比,本质上也是访问 `mtime` 和 `mtimecmp` 寄存器,不过由于 S 模式下无法直接访问它们,需要通过其他方式间接完成。 + +RV64 的 clocksource 是通过 csrr 直接读取 `time` 寄存器实现的;在 RV32 系统由于一条指令无法读完,需要分两次读取 `time` 和 `timeh`, 并考虑可能发生进位的情况。前面提到 `time` 和 `timeh` 这两个 CSR 是 `mtime` 寄存器的映射,因此频率与精度和 `mtime` 是一致的。 +```c +#ifdef CONFIG_64BIT +static inline u64 get_cycles64(void) +{ + return get_cycles(); +} +#else /* CONFIG_64BIT */ +static inline u64 get_cycles64(void) +{ + u32 hi, lo; + + do { + hi = get_cycles_hi(); + lo = get_cycles(); + } while (hi != get_cycles_hi()); + + return ((u64)hi << 32) | lo; +} +#endif /* CONFIG_64BIT */ + +static inline cycles_t get_cycles(void) +{ + return csr_read(CSR_TIME); +} +static inline u32 get_cycles_hi(void) +{ + return csr_read(CSR_TIMEH); +} +``` +clockevent 则是通过 SBI 间接访问 `mtimecmp` 实现的。 +```c +static int riscv_clock_next_event(unsigned long delta, + struct clock_event_device *ce) +{ + csr_set(CSR_IE, IE_TIE); + sbi_set_timer(get_cycles64() + delta); + return 0; +} +``` +这里以 OpenSBI 来分析,如果不支持 Sstc 扩展则调用在 SBI 中注册的 `timer_event_start` 函数写入 `mtimecmp`,这个需要具体平台自己去实现。 + +```c +void sbi_timer_event_start(u64 next_event) +{ + sbi_pmu_ctr_incr_fw(SBI_PMU_FW_SET_TIMER); + + /** + * Update the stimecmp directly if available. This allows + * the older software to leverage sstc extension on newer hardware. + */ + if (sbi_hart_has_feature(sbi_scratch_thishart_ptr(), SBI_HART_HAS_SSTC)) { +#if __riscv_xlen == 32 + csr_write(CSR_STIMECMP, next_event & 0xFFFFFFFF); + csr_write(CSR_STIMECMPH, next_event >> 32); +#else + csr_write(CSR_STIMECMP, next_event); +#endif + } else if (timer_dev && timer_dev->timer_event_start) { + timer_dev->timer_event_start(next_event); + csr_clear(CSR_MIP, MIP_STIP); + } + csr_set(CSR_MIE, MIP_MTIP); +} +``` +在支持 Sstc 扩展后,可以直接访问 `stimecmp` 寄存器,避免通过 SBI 调用的方式产生的开销。社区已开展相关工作:[RISC-V: Prefer sstc extension if available](https://lore.kernel.org/all/20220426185245.281182-1-atishp@rivosinc.com/)。 + + +### KVM timer +在 VS 模式下的读取 `time` 时,KVM 会返回真正的 `time` 加上 `htimedelta`。 +```c +static u64 kvm_riscv_current_cycles(struct kvm_guest_timer *gt) +{ + return get_cycles64() + gt->time_delta; +} +``` + +在 VS 模式下的设置 `mtimecmp` 时,KVM 会开启一个已经创建好的高精度定时器, 并把定时器的到期时间设置为写入 `mtimecmp` 值对应的 ns。 +```c +int kvm_riscv_vcpu_timer_next_event(struct kvm_vcpu *vcpu, u64 ncycles) +{ + struct kvm_vcpu_timer *t = &vcpu->arch.timer; + struct kvm_guest_timer *gt = &vcpu->kvm->arch.timer; + u64 delta_ns; + + if (!t->init_done) + return -EINVAL; + + kvm_riscv_vcpu_unset_interrupt(vcpu, IRQ_VS_TIMER); + + delta_ns = kvm_riscv_delta_cycles2ns(ncycles, gt, t); + t->next_cycles = ncycles; + hrtimer_start(&t->hrt, ktime_set(0, delta_ns), HRTIMER_MODE_REL); + t->next_set = true; + + return 0; +} +``` +在定时器到期后,KVM 会为 Guest 产生 TIMER 中断。 +```c +static enum hrtimer_restart kvm_riscv_vcpu_hrtimer_expired(struct hrtimer *h) +{ + u64 delta_ns; + struct kvm_vcpu_timer *t = container_of(h, struct kvm_vcpu_timer, hrt); + struct kvm_vcpu *vcpu = container_of(t, struct kvm_vcpu, arch.timer); + struct kvm_guest_timer *gt = &vcpu->kvm->arch.timer; + + if (kvm_riscv_current_cycles(gt) < t->next_cycles) { + delta_ns = kvm_rizscv_delta_cycles2ns(t->next_cycles, gt, t); + hrtimer_forward_now(&t->hrt, ktime_set(0, delta_ns)); + return HRTIMER_RESTART; + } + + t->next_set = false; + kvm_riscv_vcpu_set_interrupt(vcpu, IRQ_VS_TIMER); + + return HRTIMER_NORESTART; +} +``` +因此 VS 模式设置时钟事件需要通过 SBI 调用进入 HS 模式然后再进入 M 模式,会产生较大的开销。同样,在支持 Sstc 扩展后,可以直接访问 `vstimecmp` 并产生 timer 中断,社区目前已经开展了相关的工作:[RISC-V: KVM: Support sstc extension](https://lore.kernel.org/all/20220426185245.281182-4-atishp@rivosinc.com/)。 + +## 参考文档 + +1. [RISC-V Platform](https://github.com/riscv/riscv-platform-specs/blob/main/riscv-platform-spec.adoc/) +2. [RISC-V ISA Specification](https://riscv.org/technical/specifications/) +3. [RISC-V "stimecmp / vstimecmp" Extension](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) +4. 基于FPGA与RISC-V的嵌入式系统设计 +5. [RISC-V虚拟化扩展](https://static.sched.com/hosted_files/osseu19/4e/Xvisor_Embedded_Hypervisor_for_RISCV_v5.pdf) \ No newline at end of file diff --git a/articles/images/riscv_specs/riscv-privilege-mode.png b/articles/images/riscv_specs/riscv-privilege-mode.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2f7ba2459d96e84da547196027f52e38e3ccfe GIT binary patch literal 275162 zcmeFY^Lt%U*Dk!<7>&``wr#s{(%4QK+qN33v2ELGoHT4~n`iYo-}&KvzCYodb**5} zYwx+&9COYw$GGo%gnyHl_yUU!3j%?@NJ)w+fj}^RAP__V^k<-j@~?O!@CW9Hq^2VX zgfQ^$=Tj050uBg72$B*NQgPEgT{rW>8BSxo)O5-NBkkEJhb`5uwAE}{+u>~5SsvxG zM>(J$)p^~gPifzENO5VE;h|_Hby<^HqthC+OkSXpRv{5nI?W;!y4}ENzknj=b(aG1 z^n3;%Irz9K)|7(mU0+Fa&vp;_Wr6((c$EKnVY*E~{?8WRRTw5X;s5Wgnf@Ts|9+<* z3z8rBe>eVs{2ce+ZJ;SZ5Xyfy_FzE^{25cB3%5C>XbY9%t-fizj((+x4GK0pgtk3Fyd-xBnLzn}d(v*?2f^t$Qo z7%op|+VmNubodlVawhUssAcn`f7ZG%Y$d(6>qD4h(mGPI8sqIgLnf`V-u*H(B~4DT z^U01TO%4Q#6Ylo5`!RoN)+BzZr&mfdp2)1#`+A-606DC&iSqH5)TY!z1`MNs4_c5O z`dxq77%}}+D3NdLHo-U*L77#Kgg$iL)%U$7M*&Y(;eF3Io%82X+ zh!Bdm{6zi~0oeo)oSfvI(CN%cs^L=~O zmzE*APbsm+@8KiRpZ6%m3R^V`-8BnaXUl|3)rd%y@Do^5y;It=L=wAZq&~t%F=6Yc z6UDicN;DWs=@J;IlhiS!A-vA*5N)$AYP58OOs!OS)b~htnkf3`XCmF2->#`meAvyJ z>2Zp+=xhnZ7wR&SEtBd*U$~oNdDksXn#9S`Z<^?*4VsF`ibHu@drw~Kata!d8_7yaL?6)!S@4Sem02#Nb4RQ6nZ3{4GFo1DIy+>pU?=I) z>8h3+Hj!5pP6s=$qC(qfC{0_-)jdpqT~RL+f~KQRqQLia@(|Y8l&$)nN%cuGgC^`Q zpKNqniR+&yCfv#FwiWQ28L-|%^N$lJqMe>D1LloR{pW#lg^h0dj9zPmcl_lkCg4m?XhA^0qQrfS8w7tdigD zn_AIMFw4s$cPG?9AdO4&po*%v1@yN0Gf`-&I&iHN3p<^}{3X)#HYgA%t=w*HmF={O zMwO9a;H3X%bdvlNVdZbu^*;yPUiQ}x&53hll)ErN(@iT=O)CY4?~5jXwAA*{j_Xo= zp@ETWFz!o%uEnzj9}i8&XU3BU$*v__(H(S?N!Q(8|2|C1;&z(Hc#e}Kf6BM(Ib3xd z(nuwFnpk}OBEvc%;6MGBNRO9wZQ0gLcT2^uAV#Max7|=vg}B>0%f~s3+B>Fg-ip+D zux<(&@kZDflLzmeaL|Tdhfq}K^m)8VJ-Lb19B^rV-IhnLS=I(P^9&;xBLB{ILx-o4 zH@U=@403f*k1S8-qzx`kB@r1Fn10G8wkW$ zzE3|KG?bR`P4 zBoIDnXtb>HCuIY}d)o@O4W)3ts+@<8pN|X`e?N)t;tJk5f7R{rxCao>UcG+ceB+eb@+2m;;oT$QV(aLhPuIG(Y$o4r>g1BQ##xxe6FU0~Ta z(fwy$L1wxz5UH^F{OLz*O554_6Jr@dNJ&oj%o1OOVin7}_L2STZsP`*6t|372Gg`M zY5(mY{S?Af$Fc=Q|JTrJGa9kTv8@j7e|=5xrHgm_6nA?LOm+Y-Z@z~W#OTUWGNct9 zy&Z5ai^B+V^LS2PM>ap#s`38&Ku>ruik~QSv=*4c1y0`41pbd8s^?NyDDDtuH}}HI z&8HiV7ZJwm3fM&##y z_N|^Peg|h2N?YW&V}N^QY5#o&p9oeL#=l)^OxAz znTpNm=JUQUm>Q6~Nek|^At%EYn$En(x>UMiC_j8;O?bH^-#%U-4{ku|uhHrzHgefU8>&n?>i9m7n&5N2Z$Wk^G|a->K{WlavsCIps21YyD1v zVQSn)1Og2hEbrQ#IntFYF*6KY6IuI$-~0hKeMhe-%hnTbo=T2tK?>TQBr9yLpTak^ zv#ZcA$vq{bOLmuJ@7=(dLHo6=u!8$#g9_e8O!@Ie$YOKGUm*ev^cbyOgUQc&n}pOI zi~DiHZt#4)mnX?VR4CV7PM$FJcaT8v^o}I{>)gNc$$bUIl*Wp#bLv0QYjS|~Xg>#L zMTr^=F($+IRaih~1#o|nc}G!AuX)ViwvIk?K~M-h#C9R*v^Hqk*7#1o*+%QB8ZC|S z^lN}o%oU+kp+RHHc^Q=p#;6JjytYy3WhmSpu*ILyHFkB%cn=SD^%5JT9Tmj@L7Wqo zmKY|$dn;@IM~J6gW4V|6^GSJh z<8@%o$^<&Boh}nd!*E?jNIX#~2r;^SB@y3}y_xc<47Fi|>8w0g?!qx<+`t;!c{ ziXED9``o!tKpxx^F#G2Mo83dkp>P5&9?vG5w10V=3SNr`1OI47`O<^0JRJMy8fiDZE8*S;QTD#q^K+$xkurODB44#oa8}R4!3ph8 zs%QU!Gz}l&c=;*tq>_ZQrCcutRn$EX5AQ z+Gdx_+PO$lGps0=Fpa`0KS`z*r1R!MlK2rtS@^Tt(CJx3#XO=)tYR~)(T`rjJrpX; z20*@}7^dRzNuaY^H;N zq>5#$RZM-$={0io-7cbD48KcnZ7sz>b5GWP;C?IeI8(kr(8lSR!aK#eQDV*7V*KjY z5^rGHhs~G@wu8~#FCu>z3O(b6uh2s=?_f}+mRXH{U`d98yn!1^Bag_%c+R#01}t{v zuxSc3O|MSz3gyTJhu(>Xty|;)Z^=PIhlO;(m zG}5a9Kk0Lp&1`A~-ize?n3uMa?o)C!6Fg{VKgHZOGLC_1Ds%0)@8cvi*RX;NJYrji zaa;kC@Mr$qTwS^tr6G%{8P>DgkT0e=y{9=1P+++q8OYF&yy0QR>XFwC2_4q8 z;zScaT~Bx@hIhsdP+;9+&uLps8WCL2^W$LoJJ~*x7usAEq6uu-3q`DRiYziBjiXH2 zU=`!#Gs}|-tPzCg8iom6+@*>`ojjycICigs`_beSp@{}|i13BNf_MvMedL>V1zng!+@sd|Ce=eO?42N?z?ED_(2}edRs+6DD^;arKKr&b|eOSbhh(UsE z(MptyI{q6YhX?|Dkw>n5{j~lSj?ILwB<=2=<$f1t`g5F`M9(Sw$~qCVS3h`;1f_{^ zrP41|U>y+2qJPqt++;$+NeZs(?rgp-uD%2OGBfj$mP(m^Q&H`V)M@?~fqJ%_a(PW6 zbg%ctyw%114tuXxYaHDgSR!NB&<(EO=0dv&(GkyU{|J*LwkZ1K! z;@lxj!XA!Rj-41ZpcTITv<8SY$FnNZ8imZa0Z5y>6i*)YCfuUaob zY8&nQjSnC1^&KFSagU~R--VDJ2V^d{rx>O;Jc*F5hPxMRmJUl~+cxUr{J6vFV1GDW zk>vfXx+}x6U}g8cOqJaIp=lJ~oZv^}m$o*EPE!d#xpO%GI5i^b(Igc#$#Pg@w!u11 zl!BUUwA!$o{0Q$;RvCi`TY?{KOt47TCJ3;hD;`2j3BcQaplQ?|DV1={fk7<>w%6XvLHU

2qQEdzV^@zFMmi$3ZfEz>AZ_v0v6m`P*F>eT8> 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�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 *o~f)c<`0!ubyR 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 literal 0 HcmV?d00001 -- Gitee From 6b08c82e5bf29e362f42333a1a947337f03ae7a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Wed, 4 May 2022 14:07:57 +0000 Subject: [PATCH 06/12] update riscv-linux-timer --- articles/20220501-riscv-linux-timer.md | 69 +++++++++++++++++++------- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/articles/20220501-riscv-linux-timer.md b/articles/20220501-riscv-linux-timer.md index ab1f507..e9655ac 100644 --- a/articles/20220501-riscv-linux-timer.md +++ b/articles/20220501-riscv-linux-timer.md @@ -1,41 +1,60 @@ > Author: Yu Liao
> Date: 2022/05/1
-> Revisor: Wu Zhangjin
+> Revisor: lzufalcon
> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) # RISC-V timer 在 Linux 中的实现 -注:本文对于特权模式的描述参照下图,图片来源参考文档 5。 -![RISC-V 虚拟化特权模式](images/riscv_specs/riscv-privilege-mode.png) - ## RISC-V timer 相关寄存器 -### `mtime`&`mtimecmp` 寄存器 +### mtime & mtimecmp 寄存器 + +按照 RISC-V 定义,系统需要提供两个 64 位的 M 模式寄存器 `mtime` 和 `mtimecmp`,并通过 MMIO 方式映射到地址空间。 + +`mtime` 需要以固定的频率递增,并在发生溢出时回绕。当 `mtime` 大于或等于 `mtimecmp` 时,由核内中断控制器 (CLINT, Core-Local Interrupt Controller) 产生 timer 中断。中断的使能由 `mie` 寄存器中的 `MTIE` 和 `STIE` 位控制,`mip` 中的 `MPIE` 和 `SPIE` 则指示了 timer 中断是否处于 pending。在 RV32 中读取 `mtimecmp` 结果为低 32 位, `mtimecmp` 的高 32 位需要读取 `mtimecmph` 得到。 + +在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 3.2.1 Machine Timer Registers (mtime and mtimecmp) 中详细介绍了这部分。 + +### time CSR + +RISC-V 还定义了一个 64 位非特权 CSR 寄存器 `time`,`time` 计数器是前面提到的 `mtime` 的只读映射。同样,在 RV32 中 `timeh` CSR 是 `mtime` 高 32 位的只读映射,对于 M 模式和 S 模式它们都是可读写的。 + +在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 2.2 CSR Listing 和 3.1.11 Machine Counter-Enable Register (mcounteren) 可以找到这块的规范。 -按照 RISC-V 定义,系统需要提供两个 64 位的 M 模式寄存器 `mtime` 和 `mtimecmp`,并通过 MMIO 方式映射到地址空间。`mtime` 需要以固定的频率递增,并在发生溢出时回绕。当 `mtime` 大于或等于 `mtimecmp` 时,由核间局部中断控制器 (CLINT, Core-Local Interrupt Controller) 产生 timer 中断。中断的使能由 `mie` 寄存器中的 `MTIE` 和 `STIE` 位控制,`mip` 中的 `MPIE` 和 `SPIE` 则指示了 timer 中断是否处于 pending。 在 RV32 中读取 `mtimecmp` 结果为低 32 位, `mtimecmp` 的高 32 位需要读取 `mtimecmph` 得到。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 3.2.1 Machine Timer Registers (mtime and mtimecmp) 中详细介绍了这部分。 +### htimedelta & htimedeltah 寄存器 -### `time` CSR -RISC-V 还定义了一个 64 位非特权 CSR 寄存器 `time`,`time` 计数器是前面提到的 `mtime` 的只读映射。同样,在 RV32 中 `timeh` CSR 是 `mtime` 高 32 位的只读映射,对于 M 模式和 S 模式它们都是可读写的。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 2.2 CSR Listing 和 3.1.11 Machine Counter-Enable Register (mcounteren) 可以找到这块的规范。 +在增加虚拟化扩展以后,特权模式会发生一定变化,如下图(来源于参考文档 5)所示: -### `htimedelta`&`htimedeltah` 寄存器 -`htimedelta` 和 `htimedeltah` 是 hypervisor 扩展里的 CSR,在 VS/VU 模式下读取 `time` 结果是真正的 host 中的 `time` 加上 `htimedelta`。同样的,对于 RV32 `htimedelta` 保存了低 32 位,高 32 位保存在 `htimedeltah`。在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 8.2.7 Hypervisor Time Delta Registers (htimedelta, htimedeltah) 中详细介绍了这部分。 +![RISC-V 虚拟化特权模式](images/riscv_specs/riscv-privilege-mode.png) + +相应地,timer 支持也进行了如下扩展: + +`htimedelta` 和 `htimedeltah` 是 Hypervisor 扩展里的 CSR,在 VS/VU 模式下读取 `time` 结果是真正的 host 中的 `time` 加上 `htimedelta`。同样的,对于 RV32 `htimedelta` 保存了低 32 位,高 32 位保存在 `htimedeltah`。 + +在 [RISC-V 特权 ISA 规范](https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMAFDQC/riscv-spec-20191213.pdf) 的 8.2.7 Hypervisor Time Delta Registers (htimedelta, htimedeltah) 中详细介绍了这部分。 ### Sstc 扩展 + 由于 `mtimecmp` 只能在 M 模式下访问,对于 S/HS 模式下的内核和 VU/VS 模式下的虚拟机需要通过 SBI 才能访问,会造成较大的中断延迟和性能开销。为了解决这一问题,RISC-V 新增了 Sstc 拓展支持(已批准但尚未最终集成到规范中)。 -Sstc 扩展增加了 `stimecmp` 和 `vstimecmp` 寄存器,当 `time`/`time`+`htimedelta` 大于或等于 `stimecmp`/`vstimecmp` 时会产生 timer 中断,不再需要通过 SBI 陷入其他模式。详见 [RISC-V "stimecmp / vstimecmp" 扩展](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) 。 +Sstc 扩展增加了 `stimecmp`(HS) 和 `vstimecmp`(VS) 寄存器,当 $time >= stimecmp$ (HS)或 $time+htimedelta >= vstimecmp$ (VS)时会产生 timer 中断,不再需要通过 SBI 陷入其他模式。 + +详见 [RISC-V "stimecmp / vstimecmp" 扩展](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) 。 ## Linux timer 实现 Linux 将底层时钟硬件抽象为两类设备:clockevent 和 clocksource,前者用来在未来指定的时间产生中断,通常用作定时器;后者则用于维护自系统启动以来所经过的时间。 -当前 Linux 为 RISC-V 根据内核运行模式实现了两套驱动,代码路径为 drivers/clocksource/timer-riscv.c 和 drivers/clocksource/timer-clint.c。本文代码基于最新的 Linux v5.18-rc4 和 OpenSBI v1.0,截止目前 Linux 对 Sstc 扩展的支持还没有合入主线内核,社区已有相关补丁:[Add Sstc extension support](https://lkml.org/lkml/2022/3/4/1175)。 +当前 Linux 为 RISC-V 根据内核运行模式实现了两套驱动,代码路径为 drivers/clocksource/timer-riscv.c 和 drivers/clocksource/timer-clint.c。 + +本文代码基于最新的 Linux v5.18-rc4 和 OpenSBI v1.0,截止目前 Linux 对 Sstc 扩展的支持还没有合入主线内核,社区已有相关补丁:[Add Sstc extension support](https://lkml.org/lkml/2022/3/4/1175)。 `mtime` 频率由设备树 CPU 节点中的 timebase-frequency 定义,不同平台都各不相同,如 Kendryte K210 的频率是 7.8 MHz,平头哥 C910 的频率是 3 MHz,SiFive Unmatched A00 频率为 1 MHz。 -### timer-riscv.c +### NoMMU timer:timer-riscv.c timer-riscv.c 驱动适用于 NoMMU 系统,内核运行在 M 模式下,通过 CONFIG_CLINT_TIMER 使能该驱动。RV64 下 clocksource 是通过直接读取 `mtime` 寄存器实现的,RV32 系统需要分两次读取,并需要考虑产生进位的情况。 + ```c #ifdef CONFIG_64BIT static u64 notrace clint_get_cycles64(void) @@ -56,7 +75,9 @@ static u64 notrace clint_get_cycles64(void) } #endif /* CONFIG_64BIT */ ``` + `clint_get_cycles/clint_get_cycles_hi` 直接通过内存访问寄存器。 + ```c #ifdef CONFIG_64BIT #define clint_get_cycles() readq_relaxed(clint_timer_val) @@ -66,7 +87,9 @@ static u64 notrace clint_get_cycles64(void) #endif ``` + clockevent 是通过使能 `mie` 的 TIMER 中断,并向 `mtimecmp` 寄存器写入期望的计数值实现的。 + ```c static int clint_clock_next_event(unsigned long delta, struct clock_event_device *ce) @@ -80,11 +103,12 @@ static int clint_clock_next_event(unsigned long delta, } ``` -### timer-clint.c +### MMU Timer: timer-clint.c timer-clint.c 驱动适用于有 MMU 的场景,内核运行在 S/HS 模式下,通过 CONFIG_RISCV_TIMER 可以使能该驱动。和 timer-riscv.c 的驱动相比,本质上也是访问 `mtime` 和 `mtimecmp` 寄存器,不过由于 S 模式下无法直接访问它们,需要通过其他方式间接完成。 RV64 的 clocksource 是通过 csrr 直接读取 `time` 寄存器实现的;在 RV32 系统由于一条指令无法读完,需要分两次读取 `time` 和 `timeh`, 并考虑可能发生进位的情况。前面提到 `time` 和 `timeh` 这两个 CSR 是 `mtime` 寄存器的映射,因此频率与精度和 `mtime` 是一致的。 + ```c #ifdef CONFIG_64BIT static inline u64 get_cycles64(void) @@ -114,7 +138,9 @@ static inline u32 get_cycles_hi(void) return csr_read(CSR_TIMEH); } ``` + clockevent 则是通过 SBI 间接访问 `mtimecmp` 实现的。 + ```c static int riscv_clock_next_event(unsigned long delta, struct clock_event_device *ce) @@ -124,6 +150,7 @@ static int riscv_clock_next_event(unsigned long delta, return 0; } ``` + 这里以 OpenSBI 来分析,如果不支持 Sstc 扩展则调用在 SBI 中注册的 `timer_event_start` 函数写入 `mtimecmp`,这个需要具体平台自己去实现。 ```c @@ -149,11 +176,13 @@ void sbi_timer_event_start(u64 next_event) csr_set(CSR_MIE, MIP_MTIP); } ``` -在支持 Sstc 扩展后,可以直接访问 `stimecmp` 寄存器,避免通过 SBI 调用的方式产生的开销。社区已开展相关工作:[RISC-V: Prefer sstc extension if available](https://lore.kernel.org/all/20220426185245.281182-1-atishp@rivosinc.com/)。 +在支持 Sstc 扩展后,可以直接访问 `stimecmp` 寄存器,避免通过 SBI 调用的方式产生的开销。社区已开展相关工作:[RISC-V: Prefer sstc extension if available](https://lore.kernel.org/all/20220426185245.281182-1-atishp@rivosinc.com/)。 ### KVM timer -在 VS 模式下的读取 `time` 时,KVM 会返回真正的 `time` 加上 `htimedelta`。 + +在 VS 模式下读取 `time` 时,KVM 会返回真正的 `time` 加上 `htimedelta`。 + ```c static u64 kvm_riscv_current_cycles(struct kvm_guest_timer *gt) { @@ -161,7 +190,8 @@ static u64 kvm_riscv_current_cycles(struct kvm_guest_timer *gt) } ``` -在 VS 模式下的设置 `mtimecmp` 时,KVM 会开启一个已经创建好的高精度定时器, 并把定时器的到期时间设置为写入 `mtimecmp` 值对应的 ns。 +在 VS 模式下设置 `mtimecmp` 时,KVM 会开启一个已经创建好的高精度定时器,并把定时器的到期时间设置为写入 `mtimecmp` 值对应的 ns。 + ```c int kvm_riscv_vcpu_timer_next_event(struct kvm_vcpu *vcpu, u64 ncycles) { @@ -182,7 +212,9 @@ int kvm_riscv_vcpu_timer_next_event(struct kvm_vcpu *vcpu, u64 ncycles) return 0; } ``` + 在定时器到期后,KVM 会为 Guest 产生 TIMER 中断。 + ```c static enum hrtimer_restart kvm_riscv_vcpu_hrtimer_expired(struct hrtimer *h) { @@ -203,6 +235,7 @@ static enum hrtimer_restart kvm_riscv_vcpu_hrtimer_expired(struct hrtimer *h) return HRTIMER_NORESTART; } ``` + 因此 VS 模式设置时钟事件需要通过 SBI 调用进入 HS 模式然后再进入 M 模式,会产生较大的开销。同样,在支持 Sstc 扩展后,可以直接访问 `vstimecmp` 并产生 timer 中断,社区目前已经开展了相关的工作:[RISC-V: KVM: Support sstc extension](https://lore.kernel.org/all/20220426185245.281182-4-atishp@rivosinc.com/)。 ## 参考文档 @@ -210,5 +243,5 @@ static enum hrtimer_restart kvm_riscv_vcpu_hrtimer_expired(struct hrtimer *h) 1. [RISC-V Platform](https://github.com/riscv/riscv-platform-specs/blob/main/riscv-platform-spec.adoc/) 2. [RISC-V ISA Specification](https://riscv.org/technical/specifications/) 3. [RISC-V "stimecmp / vstimecmp" Extension](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) -4. 基于FPGA与RISC-V的嵌入式系统设计 +4. 基于 FPGA 与 RISC-V 的嵌入式系统设计 5. [RISC-V虚拟化扩展](https://static.sched.com/hosted_files/osseu19/4e/Xvisor_Embedded_Hypervisor_for_RISCV_v5.pdf) \ No newline at end of file -- Gitee From 118882df933abcefe51180b7e42a6078e4558912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Wed, 4 May 2022 14:15:28 +0000 Subject: [PATCH 07/12] update sub-titles of riscv-linux-timer --- articles/20220501-riscv-linux-timer.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/20220501-riscv-linux-timer.md b/articles/20220501-riscv-linux-timer.md index e9655ac..c897603 100644 --- a/articles/20220501-riscv-linux-timer.md +++ b/articles/20220501-riscv-linux-timer.md @@ -37,7 +37,7 @@ RISC-V 还定义了一个 64 位非特权 CSR 寄存器 `time`,`time` 计数 由于 `mtimecmp` 只能在 M 模式下访问,对于 S/HS 模式下的内核和 VU/VS 模式下的虚拟机需要通过 SBI 才能访问,会造成较大的中断延迟和性能开销。为了解决这一问题,RISC-V 新增了 Sstc 拓展支持(已批准但尚未最终集成到规范中)。 -Sstc 扩展增加了 `stimecmp`(HS) 和 `vstimecmp`(VS) 寄存器,当 $time >= stimecmp$ (HS)或 $time+htimedelta >= vstimecmp$ (VS)时会产生 timer 中断,不再需要通过 SBI 陷入其他模式。 +Sstc 扩展为 HS 模式和 VS 模式分别新增了 `stimecmp` 和 `vstimecmp` 寄存器,当 $time >= stimecmp$ (HS)或 $time+htimedelta >= vstimecmp$ (VS)时会产生 timer 中断,不再需要通过 SBI 陷入其他模式。 详见 [RISC-V "stimecmp / vstimecmp" 扩展](https://github.com/riscv/riscv-time-compare/releases/download/v0.5.4/Sstc.pdf) 。 @@ -51,7 +51,7 @@ Linux 将底层时钟硬件抽象为两类设备:clockevent 和 clocksource, `mtime` 频率由设备树 CPU 节点中的 timebase-frequency 定义,不同平台都各不相同,如 Kendryte K210 的频率是 7.8 MHz,平头哥 C910 的频率是 3 MHz,SiFive Unmatched A00 频率为 1 MHz。 -### NoMMU timer:timer-riscv.c +### NoMMU timer-riscv.c timer-riscv.c 驱动适用于 NoMMU 系统,内核运行在 M 模式下,通过 CONFIG_CLINT_TIMER 使能该驱动。RV64 下 clocksource 是通过直接读取 `mtime` 寄存器实现的,RV32 系统需要分两次读取,并需要考虑产生进位的情况。 @@ -103,7 +103,7 @@ static int clint_clock_next_event(unsigned long delta, } ``` -### MMU Timer: timer-clint.c +### MMU timer-clint.c timer-clint.c 驱动适用于有 MMU 的场景,内核运行在 S/HS 模式下,通过 CONFIG_RISCV_TIMER 可以使能该驱动。和 timer-riscv.c 的驱动相比,本质上也是访问 `mtime` 和 `mtimecmp` 寄存器,不过由于 S 模式下无法直接访问它们,需要通过其他方式间接完成。 @@ -179,7 +179,7 @@ void sbi_timer_event_start(u64 next_event) 在支持 Sstc 扩展后,可以直接访问 `stimecmp` 寄存器,避免通过 SBI 调用的方式产生的开销。社区已开展相关工作:[RISC-V: Prefer sstc extension if available](https://lore.kernel.org/all/20220426185245.281182-1-atishp@rivosinc.com/)。 -### KVM timer +### KVM vcpu_timer.c 在 VS 模式下读取 `time` 时,KVM 会返回真正的 `time` 加上 `htimedelta`。 -- Gitee From 5ac451f82f745637cebda987ee2d9870788294ea Mon Sep 17 00:00:00 2001 From: Wu Zhangjin Date: Thu, 5 May 2022 16:39:30 +0800 Subject: [PATCH 08/12] add opensbi-quickstart Signed-off-by: Wu Zhangjin --- articles/20220505-riscv-opensbi-quickstart.md | 531 ++++++++++++++++++ 1 file changed, 531 insertions(+) create mode 100644 articles/20220505-riscv-opensbi-quickstart.md diff --git a/articles/20220505-riscv-opensbi-quickstart.md b/articles/20220505-riscv-opensbi-quickstart.md new file mode 100644 index 0000000..e29eeee --- /dev/null +++ b/articles/20220505-riscv-opensbi-quickstart.md @@ -0,0 +1,531 @@ +> Author: Wu Zhangjin
+> Date: 2022/05/05
+> Project: [RISC-V Linux 内核剖析](https://gitee.com/tinylab/riscv-linux) + +# RISC-V OpenSBI 快速上手 + +## 简介 + +如果要支持 Linux 等现代操作系统,RISC-V 必须提供三种工作模式,即 Machine Mode, Supervisor Mode 和 User Mode。Supervisor 和 User 分别用于运行我们常见的 Linux 与用户态应用程序。而 Machine Mode 则用于运行 Bootloader 并装载和执行 OS。 + +在 RISC-V 上,Machine Mode 还为 Supervisor Mode 提供一些特定的服务,这些服务由 SBI (Supervisor Binary Interface) 规范定义,在运行完 Bootloader 以后,这些服务还驻留在内存,在 Supervisor Mode 可以通过 `ecall` 调用这些处于 Machine Mode 的服务。 + +OpenSBI 是 RISC-V SBI 规范的一种 C 语言参考实现,由西数开发,本文带领大家来上个手。 + +为了方便起见,本文统一使用 [Linux Lab Disk](https://tinylab.org/linux-lab-disk) 或 [Linux Lab](https://tinylab.org/linux-lab) 开发环境,含交叉编译器、模拟器等,可极速开展 RISC-V 开发。 + +另外,本文基于 OpenSBI v1.0 和 Linux v5.17。 + +## 基本用法 + +### 下载 + +OpenSBI 发布在 Github 上,其地址为: + +为了加快下载速度,我们在社区仓库做了镜像: + +接下来,下载到 Linux Lab 的 `src/examples` 目录下: + + $ cd src/examples + $ git clone https://gitee.com/tinylab/qemu-opensbi.git + $ cd qemu-opensbi/ + +### 编译 + +可以分别编译出 32 位和 64 位的版本: + + $ make all PLATFORM=generic LLVM=1 PLATFORM_RISCV_XLEN=32 + or + $ make all PLATFORM=generic LLVM=1 PLATFORM_RISCV_XLEN=64 + +下面简单说明一下编译设定: + +* `PLATFORM` 我们选择了支持 qemu 的 generic platform,关于 platform 的选择,大家可以参考 `docs/platform/platform.md`。 +* `LLVM` 则用于启用 llvm 编译器。 +* `PLATFORM_RISCV_XLEN` 用于指定 RV32 或 RV64。 + +编译结果保存在: + + $ tree build/platform/generic/firmware/ + build/platform/generic/firmware/ + ├── fw_dynamic.bin + ├── fw_dynamic.dep + ├── fw_dynamic.elf + ├── fw_dynamic.elf.ld + ├── fw_dynamic.o + ├── fw_jump.bin + ├── fw_jump.dep + ├── fw_jump.elf + ├── fw_jump.elf.ld + ├── fw_jump.o + ├── fw_payload.bin + ├── fw_payload.dep + ├── fw_payload.elf + ├── fw_payload.elf.ld + ├── fw_payload.o + └── payloads + ├── test.bin + ├── test.dep + ├── test.elf + ├── test.elf.ld + ├── test_head.dep + ├── test_head.o + ├── test_main.dep + ├── test_main.o + └── test.o + +编译后生成了多种不同类型的 firmware 文件,还有一个 payloads 目录。下面单独拿出一个小节来做介绍。 + +### Firmware 说明 + +为了兼容不同的运行需求,OpenSBI 支持三种类型的 Firmware,分别为: + +* dynamic:从上一级 Boot Stage 获取下一级 Boot Stage 的入口信息,以 `struct fw_dynamic_info` 结构体通过 `a2` 寄存器传递。 +* jump:假设下一级 Boot Stage Entry 为固定地址,直接跳转过去运行。 +* payload:在 jump 的基础上,直接打包进来下一级 Boot Stage 的 Binary。 + +下一级通常是 Bootloader 或 OS,比如 U-Boot,Linux。 + +Firmware 相关的源码在 OpenSBI 的 `firmware/` 目录下。 + +### 运行 + +OpenSBI 提供了直接运行的 make 入口: + + $ make run PLATFORM=generic + qemu-system-riscv64 -M virt -m 256M -nographic -bios /labs/linux-lab/src/examples/opensbi/build/platform/generic/firmware/fw_payload.elf + + OpenSBI v1.0-38-g794986f + ____ _____ ____ _____ + / __ \ / ____| _ \_ _| + | | | |_ __ ___ _ __ | (___ | |_) || | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | + | |__| | |_) | __/ | | |____) | |_) || |_ + \____/| .__/ \___|_| |_|_____/|____/_____| + | | + |_| + + Platform Name : riscv-virtio,qemu + Platform Features : medeleg + Platform HART Count : 1 + Platform IPI Device : aclint-mswi + Platform Timer Device : aclint-mtimer @ 10000000Hz + Platform Console Device : uart8250 + Platform HSM Device : --- + Platform Reboot Device : sifive_test + Platform Shutdown Device : sifive_test + Firmware Base : 0x80000000 + Firmware Size : 284 KB + Runtime SBI Version : 0.3 + + Domain0 Name : root + Domain0 Boot HART : 0 + Domain0 HARTs : 0* + Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I) + Domain0 Region01 : 0x0000000080000000-0x000000008007ffff () + Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X) + Domain0 Next Address : 0x0000000080200000 + Domain0 Next Arg1 : 0x0000000082200000 + Domain0 Next Mode : S-mode + Domain0 SysReset : yes + + Boot HART ID : 0 + Boot HART Domain : root + Boot HART ISA : rv64imafdcsu + Boot HART Features : scounteren,mcounteren + Boot HART PMP Count : 16 + Boot HART PMP Granularity : 4 + Boot HART PMP Address Bits: 54 + Boot HART MHPM Count : 0 + Boot HART MIDELEG : 0x0000000000000222 + Boot HART MEDELEG : 0x000000000000b109 + + Test payload running + +`fw_payload.elf` 默认打包进去了 `build/platform/generic/firmware/payloads/test.bin`。如果需要打包 U-boot 或 Linux,可以参考 `docs/firmware/fw_payload.md` 传递 `FW_PAYLOAD_PATH` 参数指定需要打包 image 的路径,更详细用法可分别参考: + +* docs/firmware/payload_linux.md +* docs/firmware/payload_uboot.md + +`firmware/payloads/` 下的 test payload 是一个很好的 Next Boot Stage 的例子: + +* `test_head.S` - 做了一些执行 C 程序前的准备并跳转到 C 程序 +* `test.elf.ldS` - 链接脚本,涉及到 Payload 的内存装载位置, 由 `FW_TEXT_START + FW_PAYLOAD_OFFSET` 确定 +* `test_main.c` - C 程序,主要是通过 `ecall` 调用 OpenSBI 的字符串打印接口写了一行字符串 + +### 调试 + +如果要进一步深入分析 OpenSBI: + +* 一方面可以结合 cscope 等工具摸清各个函数之间的调用关系,进而理解 OpenSBI 的代码结构。 +* 另外一方面可以用 gdb + Qemu 研究 OpenSBI 的整个执行流程 + +`docs/platform/qemu_virt.md` 的最后有描述如何开展 OpenSBI 的调试,这里不做重述。 + +## 在 Linux Lab 下使用 OpenSBI + +### 更新 Linux Lab 中的 OpenSBI 固件 + +作为一套完善的内核实验框架,Linux Lab 为 RISC-V 提供了完整的 Linux 实验支持,提供了 2 套虚拟开发板:`riscv32/virt` 和 `riscv64/virt`。 + +其中,有用到 OpenSBI 作为 Bootloader。 + + $ cd /labs/linux-lab + $ grep BIOS -ur boards/riscv64/virt/Makefile + BIOS ?= $(BSP_BIOS)/opensbi/generic/fw_jump.elf + +其完整路径为: + + $ ls boards/riscv64/virt/bsp/bios/opensbi/generic/fw_jump.elf + boards/riscv64/virt/bsp/bios/opensbi/generic/fw_jump.elf + +在客制化 OpenSBI 以后,可以复制 OpenSBI build 目录中的 `fw_jump.elf` 到 Linux Lab 中的上述路径下进行使用。 + + $ cd /labs/linux-lab + $ cp src/examples/build/platform/generic/firmware/fw_jump.elf boards/riscv64/virt/bsp/bios/opensbi/generic/fw_jump.elf + +复制完以后就可以通过 `make boot` 引导 OpenSBI 和内核: + + $ make BOARD=riscv64/virt + $ make boot + ... + OpenSBI v1.0-38-g794986f + ____ _____ ____ _____ + / __ \ / ____| _ \_ _| + | | | |_ __ ___ _ __ | (___ | |_) || | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | + | |__| | |_) | __/ | | |____) | |_) || |_ + \____/| .__/ \___|_| |_|_____/|____/_____| + | | + |_| + + Platform Name : riscv-virtio,qemu + Platform Features : medeleg + Platform HART Count : 4 + Platform IPI Device : aclint-mswi + Platform Timer Device : aclint-mtimer @ 10000000Hz + Platform Console Device : uart8250 + Platform HSM Device : --- + Platform Reboot Device : sifive_test + Platform Shutdown Device : sifive_test + Firmware Base : 0x80000000 + Firmware Size : 308 KB + Runtime SBI Version : 0.3 + + Domain0 Name : root + Domain0 Boot HART : 0 + Domain0 HARTs : 0*,1*,2*,3* + Domain0 Region00 : 0x0000000002000000-0x000000000200ffff (I) + Domain0 Region01 : 0x0000000080000000-0x000000008007ffff () + Domain0 Region02 : 0x0000000000000000-0xffffffffffffffff (R,W,X) + Domain0 Next Address : 0x0000000080200000 + Domain0 Next Arg1 : 0x0000000082200000 + Domain0 Next Mode : S-mode + Domain0 SysReset : yes + + Boot HART ID : 0 + Boot HART Domain : root + Boot HART ISA : rv64imafdcsu + Boot HART Features : scounteren,mcounteren,time + Boot HART PMP Count : 16 + Boot HART PMP Granularity : 4 + Boot HART PMP Address Bits: 54 + Boot HART MHPM Count : 0 + Boot HART MIDELEG : 0x0000000000000222 + Boot HART MEDELEG : 0x000000000000b109 + Linux version 5.17.0-dirty (ubuntu@linux-lab) (riscv64-linux-gnu-gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #8 SMP Wed Mar 23 17:22:04 CST 2022 + OF: fdt: Ignoring memory range 0x80000000 - 0x80200000 + Machine model: riscv-virtio,qemu + efi: UEFI not found. + Zone ranges: + DMA32 [mem 0x0000000080200000-0x0000000087ffffff] + Normal empty + Movable zone start for each node + Early memory node ranges + node 0: [mem 0x0000000080200000-0x0000000087ffffff] + Initmem setup node 0 [mem 0x0000000080200000-0x0000000087ffffff] + SBI specification v0.3 detected + SBI implementation ID=0x1 Version=0x10000 + SBI TIME extension detected + SBI IPI extension detected + SBI RFENCE extension detected + SBI SRST extension detected + SBI HSM extension detected + riscv: ISA extensions acdfimsu + riscv: ELF capabilities acdfim + percpu: Embedded 16 pages/cpu s24792 r8192 d32552 u65536 + Built 1 zonelists, mobility grouping on. Total pages: 31815 + Kernel command line: route=172.20.169.140 iface=eth0 rw fsck.repair=yes rootwait root=/dev/vda console=ttyS0 + Unknown kernel command line parameters "route=172.20.169.140 iface=eth0", will be passed to user space. + ... + devtmpfs: mounted + Freeing unused kernel image (initmem) memory: 2140K + Hello, RISC-V Linux: https://gitee.com/tinylab/riscv-linux + Happy Hacking ................. + Run /sbin/init as init process + EXT4-fs (vda): re-mounted. Quota mode: disabled. + Starting syslogd: OK + Starting klogd: OK + Initializing random number generator... random: dd: uninitialized urandom read (512 bytes read) + done. + + Welcome to Linux Lab + linux-lab login: root + # + # uname -a + Linux linux-lab 5.17.0-dirty #8 SMP Wed Mar 23 17:22:04 CST 2022 riscv64 GNU/Linux + # poweroff + ... + The system is going down NOW! + Sent SIGTERM to all processes + Sent SIGKILL to all processes + Requesting system poweroff + reboot: Power down + +### 分析 Linux 内核中对 OpenSBI 的调用 + +类似上面的 test payload,在 Linux 内核中,也有通过 `ecall` 调用 OpenSBI 的服务。 + + $ cd src/linux-stable + $ find arch/riscv/ -name "*sbi*" + arch/riscv/include/asm/cpu_ops_sbi.h + arch/riscv/include/asm/kvm_vcpu_sbi.h + arch/riscv/include/asm/sbi.h + arch/riscv/kernel/cpu_ops_sbi.c + arch/riscv/kernel/sbi.c + arch/riscv/kvm/vcpu_sbi.c + arch/riscv/kvm/vcpu_sbi_base.c + arch/riscv/kvm/vcpu_sbi_hsm.c + arch/riscv/kvm/vcpu_sbi_replace.c + arch/riscv/kvm/vcpu_sbi_v01.c + +其中,核心的实现在 sbi.c: + + // arch/riscv/kernel/sbi.c: 25 + + struct sbiret sbi_ecall(int ext, int fid, unsigned long arg0, + unsigned long arg1, unsigned long arg2, + unsigned long arg3, unsigned long arg4, + unsigned long arg5) + { + struct sbiret ret; + + register uintptr_t a0 asm ("a0") = (uintptr_t)(arg0); + register uintptr_t a1 asm ("a1") = (uintptr_t)(arg1); + register uintptr_t a2 asm ("a2") = (uintptr_t)(arg2); + register uintptr_t a3 asm ("a3") = (uintptr_t)(arg3); + register uintptr_t a4 asm ("a4") = (uintptr_t)(arg4); + register uintptr_t a5 asm ("a5") = (uintptr_t)(arg5); + register uintptr_t a6 asm ("a6") = (uintptr_t)(fid); + register uintptr_t a7 asm ("a7") = (uintptr_t)(ext); + asm volatile ("ecall" + : "+r" (a0), "+r" (a1) + : "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6), "r" (a7) + : "memory"); + ret.error = a0; + ret.value = a1; + + return ret; + } + EXPORT_SYMBOL(sbi_ecall); + +其中,而 `a0-a5` 作为参数,`ext` 和 `fid` 一起决定 OpenSBI 服务的 id,而返回的错误信息和返回值通过 `a0-a1` 取回。 + +关于服务的定义,可参考: + + // arch/riscv/include/asm/sbi.h: 13 + + #ifdef CONFIG_RISCV_SBI + enum sbi_ext_id { + #ifdef CONFIG_RISCV_SBI_V01 + SBI_EXT_0_1_SET_TIMER = 0x0, + SBI_EXT_0_1_CONSOLE_PUTCHAR = 0x1, + SBI_EXT_0_1_CONSOLE_GETCHAR = 0x2, + SBI_EXT_0_1_CLEAR_IPI = 0x3, + SBI_EXT_0_1_SEND_IPI = 0x4, + SBI_EXT_0_1_REMOTE_FENCE_I = 0x5, + SBI_EXT_0_1_REMOTE_SFENCE_VMA = 0x6, + SBI_EXT_0_1_REMOTE_SFENCE_VMA_ASID = 0x7, + SBI_EXT_0_1_SHUTDOWN = 0x8, + #endif + SBI_EXT_BASE = 0x10, + SBI_EXT_TIME = 0x54494D45, + SBI_EXT_IPI = 0x735049, + SBI_EXT_RFENCE = 0x52464E43, + SBI_EXT_HSM = 0x48534D, + SBI_EXT_SRST = 0x53525354, + + /* Experimentals extensions must lie within this range */ + SBI_EXT_EXPERIMENTAL_START = 0x08000000, + SBI_EXT_EXPERIMENTAL_END = 0x08FFFFFF, + + /* Vendor extensions must lie within this range */ + SBI_EXT_VENDOR_START = 0x09000000, + SBI_EXT_VENDOR_END = 0x09FFFFFF, + }; + + enum sbi_ext_base_fid { + SBI_EXT_BASE_GET_SPEC_VERSION = 0, + SBI_EXT_BASE_GET_IMP_ID, + SBI_EXT_BASE_GET_IMP_VERSION, + SBI_EXT_BASE_PROBE_EXT, + SBI_EXT_BASE_GET_MVENDORID, + SBI_EXT_BASE_GET_MARCHID, + SBI_EXT_BASE_GET_MIMPID, + }; + + enum sbi_ext_time_fid { + SBI_EXT_TIME_SET_TIMER = 0, + }; + + enum sbi_ext_ipi_fid { + SBI_EXT_IPI_SEND_IPI = 0, + }; + +其中,可以很容易看出 `ext` 和 `fid` 之间的关系,例如,在 base extension 下有 7 个 fid,而 time extension 下只有 1 个 fid,两者一起指定具体的服务函数,有点象 2 级映射。 + +具体地,timer 的 SBI 调用被封装成了: + + // arch/riscv/kernel/sbi.c: 240 + + static void __sbi_set_timer_v02(uint64_t stime_value) + { + #if __riscv_xlen == 32 + sbi_ecall(SBI_EXT_TIME, SBI_EXT_TIME_SET_TIMER, stime_value, + stime_value >> 32, 0, 0, 0, 0); + #else + sbi_ecall(SBI_EXT_TIME, SBI_EXT_TIME_SET_TIMER, stime_value, 0, + 0, 0, 0, 0); + #endif + } + +需要注意地是,SBI 规范是不断演进的,可以看到内核代码中其实还有一个老的 `__sbi_set_timer_v01`,内核是通过 `sbi_probe_extension` 来探测 SBI 是否支持某个具体的 Extension: + + // arch/riscv/kernel/sbi.c: 580 + + /** + * sbi_probe_extension() - Check if an SBI extension ID is supported or not. + * @extid: The extension ID to be probed. + * + * Return: Extension specific nonzero value f yes, -ENOTSUPP otherwise. + */ + int sbi_probe_extension(int extid) + { + struct sbiret ret; + + ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_PROBE_EXT, extid, + 0, 0, 0, 0, 0); + if (!ret.error) + if (ret.value) + return ret.value; + + return -ENOTSUPP; + } + EXPORT_SYMBOL(sbi_probe_extension); + +### OpenSBI 中如何提供服务 + +OpenSBI 通过 `lib/sbi` 注册了相关的 ecall 服务,全部加到了链表 `ecall_exts_list` 中: + + // lib/sbi/sbi_ecall.c: 144 + + int sbi_ecall_init(void) + { + int ret; + + /* The order of below registrations is performance optimized */ + ret = sbi_ecall_register_extension(&ecall_time); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_rfence); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_ipi); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_base); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_hsm); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_srst); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_pmu); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_legacy); + if (ret) + return ret; + ret = sbi_ecall_register_extension(&ecall_vendor); + if (ret) + return ret; + + return 0; + } + +服务和 id 的映射由 `ecall_xxx` 对应的结构体 `struct sbi_ecall_extension` 中的 `extid_xxx` 和 `handle` 进行处理: + + // include/sbi/sbi_ecall.h: 23 + + struct sbi_ecall_extension { + struct sbi_dlist head; + unsigned long extid_start; + unsigned long extid_end; + int (* probe)(unsigned long extid, unsigned long *out_val); + int (* handle)(unsigned long extid, unsigned long funcid, + const struct sbi_trap_regs *regs, + unsigned long *out_val, + struct sbi_trap_info *out_trap); + }; + + // lib/sbi/sbi_ecall_replace.c: 22 + static int sbi_ecall_time_handler(unsigned long extid, unsigned long funcid, + const struct sbi_trap_regs *regs, + unsigned long *out_val, + struct sbi_trap_info *out_trap) + { + int ret = 0; + + if (funcid == SBI_EXT_TIME_SET_TIMER) { + #if __riscv_xlen == 32 + sbi_timer_event_start((((u64)regs->a1 << 32) | (u64)regs->a0)); + #else + sbi_timer_event_start((u64)regs->a0); + #endif + } else + ret = SBI_ENOTSUPP; + + return ret; + } + + struct sbi_ecall_extension ecall_time = { + .extid_start = SBI_EXT_TIME, + .extid_end = SBI_EXT_TIME, + .handle = sbi_ecall_time_handler, + }; + +而具体的服务定义在特定的文件中,比如 `lib/sbi/sbi_timer.c` 中定义 timer 相关的 SBI 服务。 + +### ecall 服务调用过程 + +当发起 Linux 的 `ecall` 调用后,这些 OpenSBI 中的服务具体是怎么触发的呢?这就涉及到如下过程: + +* 在 `firmware/fw_base.S` 中注册了 Machine Mode 的 trap handler,即 `sbi_trap_handler` +* 在 `lib/sbi/sbi_trap.c` 中定义了 `sbi_trap_handler`,处理各种 mcause,比如 Illegal Instructions,Misaligned Load & Store, Supervisor & Machine Ecall 等。 +* 在 `lib/sbi/sbi_ecall.c` 中定义了处理 ecall mcause 的 `sbi_ecall_handler`,它遍历上面 `ecall_exts_list` 中注册的各种 ecall 服务。 +* `sbi_ecall_handler` 根据 Linux 内核传递的 ext (extension id) 找到链表中对应的 ecall 服务,执行其中的 `handle` 函数,该函数根据 fid 执行具体的服务内容。 + +代码细节这里不做展开,大家打开相应源码,检索对应的关键字即可轻松找到。 + +## 小结 + +本文带领大家开展了基本的 OpenSBI 下载、编译、运行和调试实验,并进一步介绍了 Linux 内核如何调用 OpenSBI 的服务。 + +在这个基础上,大家就可以进一步探索更具体的服务实现甚至定制一些自己的服务啦。比如说,通过修改 `sbi_illegal_insn_handler` 在 OpenSBI 模拟处理器未实现的指令。 + +## 参考资料 + +* OpenSBI: docs/firmware/ +* OpenSBI: docs/platform/{generic.md,qemu_virt.md} -- Gitee From 8a8675e4aef8050e99d5b8038b8f1678530212e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Thu, 5 May 2022 15:20:19 +0000 Subject: [PATCH 09/12] update articles/20220505-riscv-opensbi-quickstart.md. --- articles/20220505-riscv-opensbi-quickstart.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/20220505-riscv-opensbi-quickstart.md b/articles/20220505-riscv-opensbi-quickstart.md index e29eeee..121980e 100644 --- a/articles/20220505-riscv-opensbi-quickstart.md +++ b/articles/20220505-riscv-opensbi-quickstart.md @@ -329,7 +329,7 @@ OpenSBI 提供了直接运行的 make 入口: } EXPORT_SYMBOL(sbi_ecall); -其中,而 `a0-a5` 作为参数,`ext` 和 `fid` 一起决定 OpenSBI 服务的 id,而返回的错误信息和返回值通过 `a0-a1` 取回。 +其中,`a0-a5` 作为参数,而 `ext` 和 `fid` 一起决定 OpenSBI 服务的 id,而返回的错误信息和返回值通过 `a0-a1` 取回。 关于服务的定义,可参考: @@ -382,7 +382,7 @@ OpenSBI 提供了直接运行的 make 入口: SBI_EXT_IPI_SEND_IPI = 0, }; -其中,可以很容易看出 `ext` 和 `fid` 之间的关系,例如,在 base extension 下有 7 个 fid,而 time extension 下只有 1 个 fid,两者一起指定具体的服务函数,有点象 2 级映射。 +其中,可以很容易看出 `ext` 和 `fid` 之间的关系,例如,在 base extension 下有 7 个 fid,而 time extension 下只有 1 个 fid,两者一起指定具体的服务函数,有点像 2 级映射。 具体地,timer 的 SBI 调用被封装成了: -- Gitee From 9160ff8b8b9f4106b26b9edd3779ffe9cbeefe48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Thu, 5 May 2022 15:25:08 +0000 Subject: [PATCH 10/12] update articles/20220505-riscv-opensbi-quickstart.md. --- articles/20220505-riscv-opensbi-quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/20220505-riscv-opensbi-quickstart.md b/articles/20220505-riscv-opensbi-quickstart.md index 121980e..8624dbb 100644 --- a/articles/20220505-riscv-opensbi-quickstart.md +++ b/articles/20220505-riscv-opensbi-quickstart.md @@ -329,7 +329,7 @@ OpenSBI 提供了直接运行的 make 入口: } EXPORT_SYMBOL(sbi_ecall); -其中,`a0-a5` 作为参数,而 `ext` 和 `fid` 一起决定 OpenSBI 服务的 id,而返回的错误信息和返回值通过 `a0-a1` 取回。 +其中,`arg0-arg5` 作为参数,而 `ext` 和 `fid` 一起决定 OpenSBI 服务的 id,而返回的错误信息和返回值通过 `a0-a1` 取回。 关于服务的定义,可参考: -- Gitee From 5fe9c3529124070511ed38ee5a1796096c3a6b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E7=AB=A0=E9=87=91?= Date: Sat, 7 May 2022 08:17:55 +0000 Subject: [PATCH 11/12] update meeting/README.md. --- meeting/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/meeting/README.md b/meeting/README.md index 44e63d3..aea026a 100644 --- a/meeting/README.md +++ b/meeting/README.md @@ -15,8 +15,7 @@ 会议和直播均采用腾讯会议软件。 - 会议主题:RISC-V Linux 内核技术分享会 -- 会议时间:2022/03/26 20:30-21:30 中国标准时间 - 北京 -- 重复周期:2022/03/19-2022/06/04 20:30-21:30, 每周 (周六) +- 会议时间:2022/03/19-2022/06/04 20:30-21:30, 每周 (周六) - 参会方式 - 点击链接入会: - 腾讯会议入口:970-916-265 -- Gitee From 4f726a6b4ec894996b146858218a8066e40a41c7 Mon Sep 17 00:00:00 2001 From: yintianyu Date: Sun, 8 May 2022 09:38:58 +0800 Subject: [PATCH 12/12] Pick Multi-tasking --- plan/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plan/README.md b/plan/README.md index 3f3020b..c9f5a13 100644 --- a/plan/README.md +++ b/plan/README.md @@ -129,7 +129,7 @@ * Context switch @尹天宇 * Task implementation @tjytimi -* Multi-tasking +* Multi-tasking @Jack Y. ## User-space Support -- Gitee