-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
针对前面 RVCK PR #183 对应的 vector crypto PR,可能会引入不对齐访问问题,需要 backport 上游提交:
torvalds/linux@1cd5bb6
在 backport 该提交时需要解决一些依赖问题,因此针对这些 patch 整理一个 PR,并对相关提交说明如下。
规划backport 上游针对非对齐访问相关的5组patch,每组patch的介绍如下
第一组相关 patch 链接
https://lore.kernel.org/all/20231004151405.521596-3-cleger@rivosinc.com/
1.1 这组 patch 的主要功能
- 在 S-mode(内核态)实现非对齐访存 trap 的软件模拟/修复:当硬件或 M-mode/SBI 不处理,或者将 misaligned trap 委派给 S-mode 时,由内核解码指令并完成等效的 load/store,然后继续执行用户态。
- 增加
prctl(PR_UNALIGN)支持:- 默认:内核模拟非对齐访问(应用不崩)
- 可选:关闭模拟,让非对齐访问直接触发 SIGBUS
第二组相关 patch 链接
https://lore.kernel.org/all/20240308-disable_misaligned_probe_config-v9-0-a388770ba0ce@rivosinc.com/
2.1 这组 patch 的主要功能
- 如果硬件的非对齐访问(unaligned access)速度在编译时就已知,则可以通过跳过非对齐访问速度探测(probe)来加快启动时间。
- 在编译阶段可以通过配置这些config,来选择针对非对齐访问的处理逻辑
- RISCV_PROBE_UNALIGNED_ACCESS(启动时探测)/RISCV_EMULATED_UNALIGNED_ACCESS(不探测,如果硬件不支持则使用软件模拟)/RISCV_SLOW_UNALIGNED_ACCESS(不探测,默认硬件支持slow非对齐访问)/RISCV_EFFICIENT_UNALIGNED_ACCESS(不探测,默认硬件支持fast非对齐访问)
第三组相关 patch 链接
https://lore.kernel.org/all/20241017-jesse_unaligned_vector-v10-0-5b33500160f8@rivosinc.com/
3.1 这组 patch 的主要功能
- 让内核能够“探测并向用户态报告”向量(Vector)非对齐访问(unaligned/misaligned vector load/store)的支持情况与性能速度,并同时完善/修正标量(scalar)非对齐访问的探测与一致性处理。
第四组相关 patch 链接
https://lore.kernel.org/all/20250304120014.143628-10-ajones@ventanamicro.com/
4.1 这组 patch 的主要功能
- 优化和修正了一些探测非对齐访问相关的bug。
- 用命令行直接指定速度,跳过测速。新增两个 boot 参数(__setup):
- unaligned_scalar_speed=slow|fast|unsupported
- unaligned_vector_speed=slow|fast|unsupported
- 如果指定了这些参数,内核不再运行对应的测速/探测线程,而是把所有在线 CPU直接设置为你指定的值
第五组相关 patch 链接
https://lore.kernel.org/all/20251206213750.81474-1-ebiggers@kernel.org/#
5.1 这组 patch 的主要功能
- 把 RISC‑V 向量加速密码算法(AES/ChaCha20/GHASH/SHA/SM3/SM4 等)的 Kconfig 依赖条件,从“只要有 RVV(RISCV_ISA_V)”提升为“必须保证向量非对齐访问不仅支持而且足够高效”,也就是改为依赖一个更严格的新选项 RISCV_EFFICIENT_VECTOR_UNALIGNED_ACCESS
Metadata
Metadata
Assignees
Labels
No labels