searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Option ROM软硬联调问题分析专题——Option ROM调试问题分析

2023-09-21 08:17:31
15
0

在云盘系统启动盘联调时遇到如下问题。

首先我们的测试场景1:

【1】测试用例:一个pf做系统盘,测试云盘系统盘启动是否正常,系统功能是否正常;

IO数据的路径为:

IO request 请求: HOST (1个blk-PF)---> SOC (spdk) ---> MAC ---> 远端19镜像

IO reqonse回应:  (进入来了远端的操作系统) <---   HOST (1个blk-PF) <--- SOC(spdk) <--- MAC <--- 远端19镜像

SOC;侧只需要执行分流操作,挂起SPDK,确认远端挂盘成功即可,当前FPGA中默认的分流规则就可以支持;

问题1:PF下看不到扩展ROM。

在北七家20机器上多次尝试后,仍在BIOS启动过程中看不HEX文件所加的调试打印信息,进一步也看不到用于云盘启动的centos镜像; 通过lspci -s 定位到PF下expansion ROM空间没有使能;

分析与解决:经分析FPGA内已打开扩展ROM,并且同样的版本之前是可以看到扩展ROM,故怀疑是bios的配置的问题。

更掉之前20机器,使用14机器上可以在PF下看到Expansion rom空间,可以读到相关驱动。(20上的BIOS设置与14的BIOS差异需要研究,最好有BIOS相关人员支撑,后续在适配不同品牌服务器,毕竟每家的bios设置都不统一);可以看到PF下的扩展ROM。

问题2.由于刚开始调试,云盘启动系统盘不成功,也无任何打印,需先确定是软件HEX还是硬件内访问optionrom的问题。

分析与解决::可用如下打印确认是否软件读到了FPGA中ROM的HEX文件,若可以以读到,且打印输出的与编译FPGA版本时加载的HEX可以正确比对,说明硬件内访问optionrom无问题。同时说明软件HEX有问题,需要进一步排查。

命令如下:

echo 1 > /sys/bus/pci/devices/0000\:19\:00.0/rom 

hexdump /sys/bus/pci/devices/0000\:19\:00.0/rom

[root@inf-bqj710-computer-10e1e250e13 ~]# hexdump /sys/bus/pci/devices/0000\:19\:00.0/rom 

0000000 aa55 0016 0ef1 0000 000b 8664 0000 0000

0000010 0000 0000 0000 0080 001c 0000 4350 5249

0000020 1af4 1041 0000 001c 0003 0000 0016 0000

0000030 0003 0000 0000 0000 ffff ffff ffff ffff

0000040 ffff ffff ffff ffff ffff ffff ffff ffff 

问题3.云盘启动系统盘不成功,在UEFI shell中 手动加载HEX文件未见打印。

分析与解决:结合添加信息的上板打印,通过梳理生成HEX文件的代码 内的vonder id /device id 以及驱动层加载到Grub的相关,最终发现,经确定原因是生成HEX的驱动代码中vendor id(1001) 与PF的vendor id(1042)不一致导致,HEX的驱动代码修改vendor id为1042
后目前可以顺利打印出调试信息,同时也看到了系统启动盘;

问题4.在登录云盘系统盘的过程中,一直卡在某一步骤出不来,无法继续。

分析与解决:通过分析打印以及请教同事,确定根因。

grub的cmdline里添加下面这个参数避免开机启动,重启后,开机的时候,在grub选项的时候,手动编辑下cmdline添加一下上面参数

modprobe.blacklist=virtio,virtio_ring,virtio_pci,virtio_blk,virtio_net

结果:可以见到登录页面了:

 

0条评论
0 / 1000