键盘DFT测试主要内容

问题描述

使用DFT ID = 0x41的测试项,查看手册为键盘DFT测试项,是否可以拦截kvm故障(将BMC与CPU的PCIE通道断开。kvm与vga均无显示了,但运行DFT ID = 0x41的测试项能正常通过)。

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509]

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

知道键盘DFT测试主要内容,是否可以拦截KVM故障

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

答案内容由AI生成,仅供参考:

:small_blue_diamond: 总结

项目 结论
键盘 DFT 测试主要内容 是对外设(键盘)接口的功能性自检,不涵盖 PCIe 链路完整性检测
能否拦截 KVM 故障 :cross_mark: 不能,因其测试范围未包含 KVM 所依赖的关键通信路径
根本原因 DFT 测试粒度不足,缺乏对共享基础设施(如 PCIe 总线)的健康检查机制
建议行动 :white_check_mark: 应在 DFT 测试套件中增加 PCIe 通道状态检测、KVM 视频服务心跳检测、FDM 故障查询联动 等专项测试项,以提升故障覆盖能力
点击此处查看详细分析解答

键盘DFT测试与KVM故障拦截能力分析

:small_blue_diamond: 问题概述

在执行 DFT(Design for Test)测试时,使用 DFT ID = 0x41 的测试项标识为“键盘DFT测试”,但在将 BMC 与 CPU 的 PCIe 通道断开后,尽管 KVM 和 VGA 均无显示,该测试仍能正常通过。这引发疑问:键盘DFT测试是否能够有效拦截KVM相关的硬件故障?


:small_blue_diamond: 环境信息

  • 操作系统:Ubuntu 24.04
  • 软件版本:OpenUBMC2509(或 OpenUBMC 25.12 LTS)
  • 硬件配置:kunpeng_920_server / X86 Server(Intel Core i7-12700K + 32GB 内存)
  • 运行环境:物理机或 WSL2 虚拟化环境中的 Ubuntu 24.04

:white_check_mark: 所述环境符合 openUBMC 开发和测试的标准构建环境。


:small_blue_diamond: 重现步骤

  1. 在系统启动并运行 OpenUBMC 后,通过 IPMI 工具发送 Raw 命令执行 Start DFT Test,参数设置为 DFT_ID = 0x41
  2. 断开 BMC 与 CPU 之间的 PCIe 通信链路(模拟物理断链)。
  3. 观察 KVM 功能状态(画面冻结、鼠标键盘无响应)。
  4. 再次执行 Get Test Result 查询 DFT ID = 0x41 的测试结果。

:small_blue_diamond: 期望结果

  • 预期 DFT 测试失败,从而表明系统具备检测关键链路故障的能力;
  • 期望键盘 DFT 测试能 覆盖 KVM 所依赖的 PCIe 通道连通性检测,实现对 KVM 故障的有效拦截。

:small_blue_diamond: 实际结果

  • 虽然 KVM 显示完全失效,且 VGA 无输出,但:
  • DFT ID = 0x41 测试返回“Success”
  • 说明当前键盘 DFT 测试 未能识别 PCIe 通道中断这一硬件级故障

:small_blue_diamond: 分析结论

1. :red_question_mark: 键盘 DFT 测试的主要内容是什么?

根据 openUBMC 架构和 Manufacture_App 组件设计:

  • DFT_ID = 0x41 对应的是 键盘接口的局部功能测试,可能仅验证:
    • 键盘控制器是否响应;
    • 是否能读取简单的键码输入;
    • PS/2 或 USB HID 接口初始化状态;
  • 不涉及底层 PCIe 链路完整性检测显卡/图像传输通路验证

:white_check_mark: 因此,键盘 DFT 测试主要聚焦于 外设接口的功能性自检,而非系统总线级通信健康状态评估。


2. :prohibited: 为什么无法拦截 KVM 故障?

原因分析:

项目 说明
KVM 依赖链 KVM 功能依赖:PCIe 通道 → 显卡/视频编码 → BMC 视频处理模块(obmc_ikvm)→ WebSocket 传输
DFT 测试范围 当前键盘 DFT 仅测试输入设备接口,未包含 PCIe 链路检测机制
故障隔离性 即使 PCIe 链路断开,若 BMC 固件未主动探测链路状态,仍可能判定“本地控制器就绪”为通过

相关支持证据:

  • 在知识图谱中提到:

    "Failed DFT Test" 的原因是 "Invalid Data Field in Request"(IPMI 数据字段错误),而本例中并未报错,说明命令被正常接收处理。

  • Raw Command 可用于发送底层 IPMI 命令,但需要显式包含链路检测逻辑才能发现异常。
  • Get FDM Info 才是用于查询 硬件故障记录(Hardware Fault) 的正确接口,应结合使用以全面诊断。

3. :white_check_mark: 如何改进以拦截 KVM 故障?

推荐解决方案:

措施 说明
增强 DFT 测试项设计 DftHwChannel 或新增 DFT 测试中引入 PCIe Link Status Polling 机制
添加链路状态检查点 Start DFT 前调用 ipmitool raw 0x0c 0x02 查询 PCIe 健康状态
联动 FDM 故障记录 使用 Get FDM Info 检查历史硬件故障,确保无挂起错误
扩展制造测试范围 manufacture SIG 的 compute_manufacture_app.lua 中补充 PCIe 通道连通性测试逻辑
启用 KVM 相关传感器监控 监控 obmc_ikvm 进程状态、视频流心跳等指标作为辅助判断

:small_blue_diamond: 总结

项目 结论
键盘 DFT 测试主要内容 是对外设(键盘)接口的功能性自检,不涵盖 PCIe 链路完整性检测
能否拦截 KVM 故障 :cross_mark: 不能,因其测试范围未包含 KVM 所依赖的关键通信路径
根本原因 DFT 测试粒度不足,缺乏对共享基础设施(如 PCIe 总线)的健康检查机制
建议行动 :white_check_mark: 应在 DFT 测试套件中增加 PCIe 通道状态检测、KVM 视频服务心跳检测、FDM 故障查询联动 等专项测试项,以提升故障覆盖能力

:small_blue_diamond: 参考命令示例(用于增强检测)

# 查询 PCIe 设备状态(需适配平台)
ipmitool raw 0x0c 0x02 0x00 0x00 0x00 0x00

# 执行 DFT Start 测试(DFT_ID = 0x41)
ipmitool raw 0x30 0x93 0x01 0x41

# 获取测试结果
ipmitool raw 0x30 0x93 0x02 0x41

# 获取 FDM 故障信息(检测硬件故障)
ipmitool dcmi get_fdm_info

建议将上述命令组合成自动化测试脚本,在执行 DFT 前先行验证 PCIe 链路可用性。

测试的是虚拟usb键鼠功能

BMC web kvm无显示的情况下,使用这个测试项会报错吗

虚拟usb键鼠功能和页面的显示没有关系的,kvm键鼠正常就不会报错