Replies: 11 comments
第一周工作总结(7/17 - 7/19):上一阶段工作收尾整理了上一阶段的工作,并 rebase 到最新的 dev 分支。上一阶段的方案是基于 linker section discovery 的设备注册,经讨论认为该方案欠考虑:显式 composition root 多一行设备注册是合理且可审计的依赖,不需要用隐式链接机制消除,因此该方案未合入,本周工作主要是收尾和基线对齐。 第二周计划(7/20 - 7/26):多页共享内存管理。
|
第二周工作总结(7/20 - 7/26):多页共享内存管理完成 IVC 通道从单页到多页的扩展,并按 TDD 策略开发:先写确定性回归测试并验证其在旧实现上必然失败,再实现功能使测试通过。
第三周计划(7/27 - 8/2):双工通信完善
|
第三周工作总结(7/27 - 8/2):双工通信与 Message V1 协议加固本周围绕双工通信继续推进。排查 Linux subscriber 只读路径后,确认仅恢复一次 ACK 写入不足以形成可扩展、可验证的双向协议:现有 Linux 镜像中的
Linux 端尚不能直接使用当前 tgosimages v0.0.10:其中的内核模块仍实现 region v2。后续需要同步更新 第四周计划(8/3 - 8/9):完成 Linux Message V1 互操作与发布闭环
|
第四周工作总结(8/3 - 8/9):Linux 侧 region v3 与 Message V1 迁移本周主要在
目前还剩两个收尾项:一是走通 第五周计划(8/10 - 8/16):IVC 设备向 PCI(ivshmem)迁移
|
第五周工作总结(8/10 - 8/16):vPCI 基础实现与 AArch64 主线接入本周围绕 ivshmem 迁移所需的 PCI 基础设施开展工作,完成了架构无关的虚拟 PCI Type-0/ECAM 基础,并将 PCI 设备接入 AArch64 主线 VM 构建流程。
本阶段完成的是后续 ivshmem endpoint 所需的 PCI 枚举、配置空间、BAR 路由和 AArch64 固件基础,PCI 中断暂未接入;后续 ivshmem 中断路径计划先仅实现 MSI-X,不支持 INTx fallback。 第六周计划(8/17 - 8/23):最小 ivshmem 与 Linux/Zephyr 通信本周计划基于已经完成的 vPCI 基础实现一个最小化 ivshmem endpoint,并以 ArceOS/AxVisor 作为 root cell,启动 Linux 和 Zephyr 两个客户机,优先跑通共享内存基本通信。
本周以“设备可枚举、共享区可映射、MSI-X doorbell 可定向通知、Linux 与 Zephyr 可双向交换并校验数据”为完成标准。完整 Message V1、多 peer 权限隔离和完整错误矩阵暂不作为本周目标;现有 HVC IVC 路径继续保留,避免 PCI 接口尚未稳定时影响已有通信基线。 |
第六周工作总结(8/17 - 8/23):vPCI 设计收敛与最小设备框架上周继续推进 PR #2169。在重新审查前期代码后,对 PCI 架构设计进行了调整,重点收敛职责边界,移除冗余流程和非必要抽象,并优先形成可以运行和验证的最小实现。
当前已经形成一个可运行、可验证的最小 PCI 设备框架。下一阶段将在此基础上实现完整的 ivshmem 功能,并补充相应的设计与使用文档。 第七周计划(8/24 - 8/30):完成 ivshmem 功能与相关文档下一周优先实现完整的 ivshmem 功能,在数据面和通知路径稳定后,再完善 PCI 与 ivshmem 文档。
下一周以“ivshmem 设备能够被 Guest 正常枚举和初始化,Guest 间可以通过 BAR2 共享内存与 MSI-X 通知完成稳定通信”为主要完成标准;功能闭环后同步完成 PCI 和 ivshmem 文档,保证实现、设计和使用方式保持一致。 |
第七周工作总结(8/24 - 8/30):CI 收尾与 ivshmem 功能推进PR #2068 第七周主要处理 Linux 测试镜像和 CI 的收尾问题。此前测试需要在本地拉取 Linux 源码并现场编译内核模块,但 CI 环境经常因网络问题无法完成下载和构建。现在改为在本地编译并打包包含新版 PR #2169 ,第七周重点处理这些改动在 CI 和 OrangePi 板卡上的兼容问题。原先 PCI host 使用的地址范围可能与 OrangePi 上已有设备的 MMIO 区域冲突,即使虚拟机没有配置 PCI endpoint,也会创建不需要的 PCI host。 当前实现改为仅在配置文件中存在 PCI endpoint 时初始化 PCI host,未使用 PCI 设备的虚拟机保持原有设备布局。同时扩大 PCI host 的资源搜索范围,从 4 GiB 以下的可用 MMIO 空间中选择不冲突的 ECAM 和 PCI memory aperture,避免与板载设备竞争固定地址。该调整兼顾了 QEMU 中的虚拟 PCI 用例和实体板卡上原有虚拟机配置。 PR #2239 在已有 vPCI 基础上,初步完成了 ivshmem PCI 设备的大部分功能,包括设备标识、BAR 布局、共享内存 backing、状态表、访问权限以及设备生命周期管理。 Guest 镜像中加入了 第八周计划(8/31 - 9/6):解决多 VM 通信并完成通知闭环本周优先解决多个 VM 同时启动失败的问题,重点检查 ivshmem link 的 reservation、runtime attachment、peer ID 分配、共享 backing 生命周期和 BAR2 stage-2 映射,确认多个 endpoint 能够加入同一 link,并在退出或失败时正确释放资源。在此基础上增加确定性的双 VM QEMU 用例,验证两个 Guest 都能枚举设备、映射同一块共享内存,并看到对方发布的状态和数据。 多 VM 基础路径稳定后,继续完善 doorbell 通知。当前通知主要依赖 Event Status 轮询,本周计划进一步检查 MSI-X table、PBA 和中断注入路径,争取完成从 doorbell 写入到目标 Guest 接收中断的闭环。如果 MSI-X 接入无法在本周全部完成,至少固定寄存器和 doorbell 行为,并保留可重复运行的轮询测试。 |
第八周工作总结(8/31 - 9/6):完成多 peer 接入上周主要完成了 接下来的重点是整理配套 Guest 镜像,把所需驱动、用户态程序和测试工具纳入固定版本镜像,减少联调过程中手工准备环境的步骤。 第九周工作计划(9/7 - 9/13):镜像集成与跨仓库合入本周按照三仓库协同计划处理镜像及配套改动,正式推进顺序为 整理协议与驱动源码从 接入常规镜像流程在 前期使用 fork 的明确提交验证;待 迁移测试镜像并验证官方镜像发布验证通过后,按 验证保留已有 IVC 协议覆盖,并按各分支范围检查 PCI 枚举、BAR 访问、Linux/ArceOS peer、双/三 peer、轮询和 MSI-X 通知。中断测试要求真实跨 peer 送达,不能以模块加载成功代替通信验证。 本周目标是推进这条官方镜像集成与消费链路;各阶段按前置条件逐项完成,不跳过上游合入和正式发布关卡。记录各仓库提交、镜像版本、验证结果及剩余阻塞,满足条件后再推进后续分支合入和解除 draft。 |
第九周工作总结(9/7 - 9/13):Guest 侧代码整理与镜像构建集成第九周主要整理了 axvisor-tools 代码整理PR #9 已合入。
tgosimages 镜像构建集成PR #19 已合入。
目前源码整理和构建集成已经合入,剩余前置条件是包含上述改动的官方镜像正式发布。源码合入和本地构建通过,尚不等同于发布镜像及跨 peer 通信验证完成。 第十周工作计划(9/14 - 9/20):发布镜像验证与消费端迁移第十周重点转向镜像发布后的使用方式调整,完成“官方镜像发布 → TGOSKits 消费端迁移 → 干净环境回归”的闭环。
镜像发布前先梳理消费端改动和测试入口;发布验收通过后再切换正式引用,并根据回归结果推进后续分支合入。 |
第十周工作总结(9/14 - 9/20):统一内核模块与消费端协议对齐本周原计划在官方镜像发布后完成消费端迁移,实际推进时先把跨仓库构建链路收敛为“一个内核模块 + 一套镜像”: axvisor-tools:统一模块构建 PR #10 。
tgosimages:镜像构建适配 PR #20 。
TGOSKits:协议布局对齐与 StarryOS 迁移
统一构建和镜像适配已经合入,协议对齐与 StarryOS 迁移已经更新到 PR #2068,当前剩下的依赖是镜像。 第十一周工作计划(9/21 - 9/27):镜像重建与跨仓库回归
镜像重建和端到端回归是本周的主线;官方镜像未发布前先用固定提交的 fork 镜像验证,发布验收通过后再切换正式引用。 |
第十一周工作总结(9/21 - 9/27):审查意见收尾与 PR 合入推进本周主要围绕三个 PR 的审查反馈做收尾,推进合入:PR #2068(Message V1)、PR #2517(AArch64 ECAM PCI host 与初始 ivshmem endpoint)和 PR #2239(ivshmem 多 peer,仍为 draft)。包含统一 PR #2068:Message V1 阻塞项修复与 CI 收敛
PR #2517:vPCI 与初始 ivshmem endpoint 按审查意见重构
PR #2239:ivshmem guest 侧与构建链路完善
第十二周工作计划(9/28 - 10/4):推进合入与依赖收敛
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
AxVisor 实习计划 - 客户机之间通信
当前已有工作
目前工作已经从 IVC 基础数据面的补全推进到 vPCI/ivshmem 客户机接口迁移阶段。
IVC 数据面方面,通道已经从单页扩展为最大 1 MiB 的连续多页共享内存,并完成 ArceOS 双 VM 全双工通信。协议从固定 slot 升级为 region v3 + Message V1:每条逻辑消息可以跨多个 cell 和 ring 瞬时容量传输,使用 FIRST/LAST/ABORT、message ID、分片序号和声明长度完成重组,同时通过 endpoint ownership 和单 subscriber 约束保护 SPSC 不变量。Linux 侧也已完成 region v3、Message V1 和消息级读写接口迁移,现有 HVC publish/subscribe/notify ABI 保持不变。
vPCI 基础方面,
axdevice已加入架构无关的 PCI Type-0/ECAM、类型化 BDF/BAR、配置空间和 capability 模型,并接入 resolved device graph 的资源规划、运行时路由和事务回滚。AArch64 主线 VM 构建流程可以在存在 PCI endpoint 时按需创建 generic ECAM host,从统一 MMIO 池分配 ECAM 和 memory aperture,并从同一份解析结果生成pci-host-ecam-genericFDT 节点。当前 PCI 中断尚未接入;后续 ivshmem 中断路径计划仅实现 MSI-X,不提供 INTx fallback。因此,当前已经具备多页共享内存、双工消息协议、Linux/ArceOS 基线以及 AArch64 vPCI 枚举与 BAR 路由基础,下一阶段重点是把这些能力组合成可由 Linux 和 Zephyr 使用的最小 ivshmem 设备。
待完成工作
后续任务分为四类:
现有 HVC IVC 路径在 PCI 接口稳定前继续保留,不在迁移初期直接删除或改变 ABI。
三个月大致规划
每周记录
dev;放弃 linker section 隐式设备发现方案,回到显式、可审计的 composition root。#1read/write、协议错误处理和有界等待;跨仓库发布与干净镜像端到端验证进入收尾阶段。#4近两周计划
第六周计划(8/17 - 8/23):最小 ivshmem 与 Linux/Zephyr 基本通信
本周以“设备可枚举、共享区可映射、MSI-X 可定向通知、Linux 与 Zephyr 可双向交换并校验数据”为完成标准。
第七周计划(8/24 - 8/30):ivshmem 协议迁移与稳定化
第七周以“Message V1 可通过 ivshmem 稳定双向传输,失败路径不遗留资源,三 cell smoke 可重复通过”为完成标准。多 peer 权限隔离、完整状态表、quota/ACL 和性能优化继续放在接口稳定后推进。
All reactions