Commit 72952af
committed
feat(audit): 恢复 AArch64 浮点并补审计支撑
本轮按审计反馈完成问题 2/3/5/6 的可执行部分,并保留 DMA 真机语义为后续设计决策。
AArch64 hardfloat 恢复
- target 从 aarch64-unknown-none-softfloat 切回 aarch64-unknown-none,并同步 rust-toolchain、rust-analyzer、deny、CI、Dev Container、xtask 和 docs
- 参考历史实现恢复 TrapContext 中 q0-q31 + FPSR/FPCR 的保存恢复,CalleeSavedContext 中恢复 d8-d15
- 在 _boot 早期设置 CPACR_EL1.FPEN=0b11,避免 hardfloat 指令进入 Rust 后触发 FP/SIMD access trap
- 新增 arch-test,强制生成并执行 f64 硬件浮点路径
测试与调试支撑
- 新增 paging-test/tlb-shootdown,等待从核上线后通过 update_range_flags 覆盖 TLB shootdown IPI/ACK 路径
- 暴露 tlb_shootdown::online_core_count() 作为系统测试诊断接口
- 新增 debug.gdb,并让 xtask debug 打印 gdb-multiarch ... -x debug.gdb 连接命令
- 日志后端新增按 module path 前缀过滤能力,默认空配置保持现有输出行为
文档结构与 ADR 目录
- 将 ADR 目录从 docs/decisions/ 迁移为 docs/adr/,并同步 AGENTS、README、审计文档、设计文档和模板中的路径引用
- 参考 project_template 补齐 docs/README、docs/conventions、docs/git、PR 模板、CONTRIBUTING、SECURITY、CODE_OF_CONDUCT
- 新增 SAD/SDD/RFC/Spec/Plan/硬件设计/供应商记录/SOP 等可复制模板和目录入口
- 更新 audit-progress,记录 DMA/QEMU 结论:QEMU virtio 能覆盖功能路径,但不能证明真机 non-coherent cache/MAIR/PTE 属性正确
验证
- Docker 内 cargo fmt --all -- --check 通过
- Docker 内 cargo xtask check --arch riscv64 通过(保留既有 warning)
- Docker 内 cargo xtask check --arch aarch64 通过(保留既有 warning)
- Docker 内 cargo xtask test --arch riscv64 --name paging-test/tlb-shootdown --timeout 30 通过
- Docker 内 cargo xtask test --arch aarch64 --name arch-test --timeout 30 通过
- llvm-objdump 确认 arch-test 生成 fadd/fmul
- git diff --cached --check 通过
已知限制
- cargo deny check 现在能解析配置,但仍按既有策略失败在 path/workspace wildcard dependency 和 paste unmaintained advisory;本轮只同步 target 与新版 cargo-deny schema,不展开依赖策略整改
Signed-off-by: Niu Zhihong <zhihong@nzhnb.com>1 parent acf2d91 commit 72952af
77 files changed
Lines changed: 1688 additions & 132 deletions
File tree
- .cargo
- .devcontainer
- .github
- workflows
- crates
- config/src
- paging
- docs
- adr
- audit
- design
- hardware
- plans
- production
- rfcs
- sop
- specs
- superpowers/plans
- suppliers
- templates
- src
- arch/aarch64
- tests
- arch-test
- src
- paging-test
- src
- xtask/src
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | | - | |
| 14 | + | |
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
44 | | - | |
| 43 | + | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
233 | 233 | | |
234 | 234 | | |
235 | 235 | | |
236 | | - | |
| 236 | + | |
237 | 237 | | |
238 | 238 | | |
239 | 239 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments