已关闭
[Requirement|需求建议]: 统一 soc version chipType 获取链路 #431
daijinling创建于 4月24日关闭于 5月15日
4月24日 添加了label:requirement
4月24日 关联了pull request:refactor: 统一 soc version chipType 获取链路
4月27日 将 daijinling 设为负责人
5月15日 issue状态由 进行中 改变为 已完成
5月15日 关闭了 issue
5月15日 添加了label:resolved
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
Runtime 当前
chipType获取存在两套来源:Runtime 初始化阶段通过halGetSocVersion获取socVersion后依赖各平台dev_info_reg.cc注册的DEV_INFO全局表反查chipType;rtSetSocVersion阶段依赖SOC_INFO全局表反查chipType。同时 Runtime 已具备基于 ini 的平台配置读取能力,但socVersion -> chipType映射仍散落在各平台静态数组中,新增或调整产品形态时需要同步修改代码和配置,维护成本较高。本需求要求将
socVersion -> chipType的数据源统一收敛到平台 ini 配置中的[version].Chip_type字段,并清理 Runtime 中不再需要的DEV_INFO/SOC_INFO注册表逻辑。对于910C之前芯片,继续保留hardwareVersion -> chipType/socVersion的 legacy fallback 能力;对于910C及之后芯片,统一依赖halGetSocVersion返回的socVersion和平台 ini 中的Chip_type。Origin(信息来源)
设计团队提出的需求
Benefit / Necessity (价值/作用)
该需求可以将
rtSetSocVersion与 Runtime 初始化路径的chipType来源统一为平台配置,避免同一映射在代码注册表和 ini 配置中重复维护。新增或调整 SoC 形态时,Runtime 侧无需继续扩展BATCH_REGISTER_SOC_INFO/BATCH_REGISTER_DEV_INFO静态数组,有助于降低平台适配成本,并减少配置与代码映射不一致带来的运行时风险。清理
DevInfoManage中socInfo/devInfo注册、存储和查询逻辑后,各平台dev_info_reg.cc文件只保留平台 so、feature、properties 等仍有效的注册职责,模块边界更清晰。通过补齐当前仓 ini 的Chip_type字段、适配跨仓 SoC 的 UT stub,并增加缺失、非数字、越界、查询失败等负向用例,可以提升新链路的可验证性和异常处理一致性。Design(设计方案)
总体设计为:以平台 ini 的
[version].Chip_type作为socVersion -> chipType的唯一来源,公共读取逻辑集中在soc_info.h/.cc,Runtime 初始化和rtSetSocVersion共同复用该接口。新增统一平台读取接口:
src/runtime/core/src/common/soc_info.h/.cc新增GetChipTypeFromPlatform。PlatformManagerV2::Instance().GetSocSpec(socName, "version", "Chip_type", value)读取 ini 配置。rtChipType_t。[CHIP_BEGIN, CHIP_END)等场景返回RT_ERROR_INVALID_VALUE。改造
rtSetSocVersion:GetChipTypeFromPlatform(ver, chipType)替换旧的GetSocInfoFromRuntimeByName(ver, socInfo)。hardwareSocVersion一致性校验。GlobalContainer::SetRtChipType(chipType)、SetUserSocVersion(ver)、SetSocVersion(ver),并调用Runtime::UpdateDevProperties(chipType, ver)。改造 Runtime 初始化链路:
Runtime::InitSocVersionAndChipType优先调用halGetSocVersion。halGetSocVersion成功且返回非空socVersion时,直接通过GetChipTypeFromPlatform(socVersion, chipType_)读取chipType_,不再访问DevInfoManage::GetDevInfo。halGetSocVersion不支持或返回空时,继续走halGetDeviceInfo(... INFO_TYPE_VERSION ...)legacy fallback,通过hardwareVersion得到chipType_,再由GetSocVersionByHardwareVer补齐socVersion_。GetSocVersionByHardwareVer仅保留910C之前芯片分支,删除CHIP_910_B_93、CHIP_MC62CM12A、CHIP_MC32DM11A以及废弃CHIP_MINI -> Ascend310等不再由 fallback 推断的路径。清理旧注册表:
DevInfoManage中RegisterSocInfo、BatchRegSocInfo、GetSocInfo、RegisterDevInfo、BatchRegDevInfo、GetDevInfo。socInfos/devInfos容器、读写锁及REGISTER_SOC_INFO、BATCH_REGISTER_SOC_INFO、REGISTER_DEV_INFO、BATCH_REGISTER_DEV_INFO宏。src/runtime/config/*/dev_info_reg.cc中的rtSocInfo_t全局数组及批量注册代码,保留平台 so、feature、properties、proc func 等注册逻辑。补齐平台配置:
src/platform/platform_config/**/*.ini的[version]段补齐Chip_type字段。Chip_type使用 RuntimertChipType_t的十进制枚举值,例如Ascend910A为1、Ascend910B1为5、Ascend950PR_9599为15、Kirin9030为20。PlatformManagerV2::GetSocSpecstub 模拟;真实安装形态需由聚合后的data/platform_config提供对应 ini。测试适配:
dev_info_manage_test中旧GetSocInfo/GetDevInfo用例迁移为GetChipTypeFromPlatform正向和负向用例。platform_stub.cc增加表驱动 SoC 配置,覆盖Ascend910A、Ascend910B1、BS9SX1AA、Ascend610Lite、AS31XM1X、MC62CM12AA、MC32DM11AA、Ascend950PR_9599等场景。Chip_type缺失、非数字、越界、查询错误等场景增加稳定错误注入。rtSetSocVersion、InitSocVersionAndChipType、GetSocVersionByHardwareVer相关用例,验证新平台配置链路和 legacy fallback 边界。