跳到主要内容

驱动框架迁移记录

宿主物理设备已经从旧 ax-driver 全局容器模型迁移到 rdrive + rdif 驱动框架。迁移围绕设备发现、能力接口、领域服务和上层消费路径分阶段完成。

迁移阶段

Phase 1: rdrive backend 分发

  • 增加 PlatformSource::{Static,Fdt,Acpi}ProbeKind::{Static,Fdt,Acpi,Pci}
  • 新增 probe::acpi 模块;ACPI 初始化提供 MCFG、GSI controller routing、PCI _PRT 和普通设备 IRQ metadata。
  • probe_pre_kernel()probe_all() 改为 backend 分发,保留当前 FDT 与 PCI 能力。
  • Manager 保持只管理 register 和 typed device registry。

Phase 2: 补齐 rdif-display/input/vsock

  • 新增三个 interface crate 并接入 workspace。
  • 每个 crate 按 error/types/interfaceaddr/event/interface 拆文件。
  • 不依赖 ax-driverax-runtimeax-hal 或平台 crate。

Phase 3: block volume service

  • 抽出唯一分区扫描实现,支持 GPT、MBR、raw disk。
  • 产出 BlockVolume 和裁剪后的 block reader。
  • ax-fs / ax-fs-ng 只消费 volume 和 FS block trait。

Phase 4: NET / NET-NG 硬切

  • ax-net / ax-netAxNetDevice 切到 rd-net 或 net service。
  • DHCP/static IP policy 留在 net service 或 NET/NET-NG,不回到 platform glue。

Phase 5: display / input / vsock 硬切

  • 新增 runtime wrapper rd-displayrd-inputrd-vsock
  • 上层 display/input/vsock 模块消费领域 service,不接收 AxDeviceContainer

Phase 6: ax-runtime 切主线

  • 删除宿主初始化主线中的 ax-driver::init_drivers()AllDevices 拆包。
  • 平台 later init 后调用 rdrive::probe_all(false)
  • 调用领域 service 初始化 FS、NET、display、input、vsock。

Phase 7: feature 映射切换

  • ax-runtime 中旧 ax-driver/virtio-*driver-*bus-* 映射到 rdrive probe feature。
  • legacy ax-driver feature 只保留给未迁移代码,不作为新宿主路径入口。