Skip to content

fix(axvm): preserve PSCI in generated guest FDT - #1926

Merged
pengzechen merged 1 commit into
rcore-os:devfrom
doubao-coding:debin/virtio-dma-fix
Aug 9, 2026
Merged

fix(axvm): preserve PSCI in generated guest FDT#1926
pengzechen merged 1 commit into
rcore-os:devfrom
doubao-coding:debin/virtio-dma-fix

Conversation

@luodeb

@luodeb luodeb commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

问题

AxVM 根据宿主设备树动态生成 guest FDT 时,现有过滤规则会删除 PSCI 固件节点。依赖 PSCI 的 ArceOS guest 因而可能在平台初始化阶段无法取得 CPU 电源管理方法。

修改

  • 生成 guest FDT 时保留兼容 arm,psciarm,psci-0.2arm,psci-1.0 的节点。
  • runtime patch 完成序列化后重新解析输出,避免将无效 FDT 交给 guest。
  • 增加回归测试,验证未作为直通设备配置的 PSCI 节点仍会出现在生成的 guest FDT 中。

实现逻辑

PSCI 描述的是 guest 启动所必需的固件接口,不属于普通设备直通范围,因此应作为生成 FDT 的基础节点显式保留。序列化后的重新解析位于最终输出边界,可在加载到 guest 内存前发现结构错误。

Reviewer 指出的 DMA polling capability 没有生产消费者的问题已通过拆分处理:本 PR 已移除该 API;DMA polling capability 与真实的 AxVisor virtio-net consumer、设备注册及端到端测试一并放入 #1927

验证

已通过:

cargo fmt --all --check
cargo xtask clippy --package axvm

尝试执行 cargo test -p axvm --lib boot::fdt,但 host 测试链接阶段缺少 AxVM 运行环境提供的 STACK_SIZEPAGE_SIZE 和 per-CPU linker symbols,因此未将该命令列为通过项。

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本 PR 试图为异步 DMA polling 提供按回调作用域限制的 guest-memory access:axdevice 增加 DMA poller 注册/授权,axvm 在 vCPU0 主循环及 notify 路径调用它;同时保留 PSCI FDT 节点并在写回前校验 FDT。它新增了共享虚拟化接口,feature-development.md 适用;从当前提交与 PR 描述未见独立设计材料,且实际消费方尚未接入。

影响范围是共享的 axdevice/axvm 设备运行时和 VM DMA 内存访问。除下列问题外,FDT/PSCI 修改与既有 VM 轮询模式未发现独立阻塞;但 DMA 路径并不隔离,因为它目前无法推进任何真实设备请求。

验证:cargo fmt --checkcargo test --manifest-path virtualization/axdevice/Cargo.toml --all-features(47 项通过)及对应 axdevice clippy 通过;cargo test --manifest-path virtualization/axvm/Cargo.toml --all-features(251 项通过)。axvm 全特性 clippy 被 base 中未改动的 os/arceos/modules/axtask/src/run_queue.rs:182clippy::needless_return 阻塞。组织 CI 当前为 36 success、37 skipped、1 cancelled、1 failure;失败的 Test axvisor x86_64 ACPI direct and OVMF boot (vmx) / run_host 在 Run command 失败,但 API 未提供可判定根因的日志,且其覆盖 VM 运行面,不能据此排除关联性。

既有 review/讨论均为空。重复检索确认 dev 尚无同名能力;但开放 PR #1927 正在实现实际 VirtIO DMA poll 消费方,因此两者存在直接依赖/重叠,当前 PR 不能单独实现其“修复”目标。

Review todo 已审计:格式、axdevice 测试/clippy、axvm 测试、基础模式、FDT、CI、既有评论及重叠 PR 均已核查;唯一未解决的阻塞项如下。请先完成真实设备接入及可回归验证后再请求复审。

Powered by gpt-5.6-terra

Comment thread virtualization/axdevice/src/registration.rs Outdated
@mai-team-app
mai-team-app Bot requested a review from ZR233 August 8, 2026 17:44
@luodeb
luodeb force-pushed the debin/virtio-dma-fix branch from c944253 to f56b496 Compare August 9, 2026 00:40
@luodeb luodeb changed the title fix(axdevice): scope guest DMA polling access fix(axvm): preserve PSCI in generated guest FDT Aug 9, 2026

@mai-team-app mai-team-app Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

本 PR 已将此前未接入生产消费者的 DMA polling 改动移出,当前只修复 AxVM 生成 guest FDT 时错误过滤 PSCI firmware 节点的问题,并在 runtime patch 序列化后重新解析输出以便在交给 guest 前返回 InvalidDataarm,psciarm,psci-0.2arm,psci-1.0 均被明确保留;新增单元测试通过真实 FDT API 验证 arm,psci-0.2 节点会留在输出中。变更只影响 axvm 的 FDT 生成/校验边界,未改变 PSCI hypercall、设备直通或其他 guest 配置契约。

feature-development.md 不适用:这是已有 FDT 过滤行为的 bug 修复,不新增公共接口或功能。已检查基线 PSCI/FDT 处理和相邻 FDT tree 实现,未发现重复实现或层次/错误传播问题;开放 PR #1927 是已拆分出去的 VirtIO DMA 功能消费者,与当前 FDT 修复不再重叠。既有 DMA review thread 的问题已由本 head 移除相关 API 并转入 #1927,当前变更已解决该意见。

验证:组织 CI 中格式检查通过;原 Test axvisor aarch64 qemu (smoke + axtest) / run_host 显示失败但只暴露 Run command 的 exit code 1,未提供可诊断日志。已在当前 head 按 CI 配置完整复现并通过:cargo xtask axvisor test qemu --arch aarch64 --test-case smoke(1/1 passed)以及 cargo xtask ktest qemu -p axvisor --test axtest --arch aarch64(AXTEST_SUITE_OK,36 passed/0 failed)。cargo fmt --check 通过;全特性 axvm clippy 被 base 中未修改的 os/arceos/modules/axtask/src/run_queue.rs:182needless_return 阻塞;host cargo test 链接缺少 AxVM 运行环境的 STACK_SIZEPAGE_SIZE 和 per-CPU linker symbols,故不将其归因为本 PR。

审核清单已完成:无需新增 app/Starry syscall/unsafe/文档或 reviewer 分派;没有遗留阻塞问题或测试缺口。

Powered by gpt-5.6-terra

@pengzechen
pengzechen merged commit 9df31a1 into rcore-os:dev Aug 9, 2026
140 of 149 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants