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

紫金DPU卡PF热插拔问题分析<二>

2023-06-19 08:21:09
43
0

一、背景

       紫金DPU硬件平台升级,基于新的硬件平台做接口升级替换、代码移植。

 

二、现象

       新硬件平台出现PF热拔出成功,但是热添加失败问题。

 

三、分析

      1、热拔出成功软件的打印:

     

                                                                                图1

      2、热插入失败的软件打印与FPGA抓到的信号:

       

                                                                              图2        

   

                                                                               图3

     3、现象推断

      结合软件打印信息与逻辑分析仪采到的信号,可以分析出热插入失败是对0x18000寄存器读操作无响应,导致lmi总线挂住,并且后续的读操作都无法返回而引起。这也解释了为何热删除不会出问题,因为热删除动作并不会读0x18000寄存器。

       经过硬件软件各自对0x18000寄存器的分析,认为该寄存器并无作用,读回的寄存器值也并不参与软件运算,因此可以屏蔽该寄存器操作来验证问题是否消除。

       另外通过获取旧的硬件平台热插入成功的打印(如下图4所示),可以发现旧硬件平台上对0x18000读操作也是返回了0x5a5a5a5a,这说明对这个寄存器的读操作也是超时不响应,因此返回了一个缺省值。这个时候已经可以判断出对这个寄存器读操作并无意义。

       

                                                                         图4

      使用去掉对0x18000寄存器读操作的软件版本,对PF的热插入操作能成功完成。

     

四、根因定位

     进一步分析新硬件平台紫金DPU卡0x18000寄存器的读失败且阻塞后续读操作的根因,发现是lmi接口中并未支持对0x18000寄存器的读操作;阻塞后续读操作问题是由于新的硬件平台在PCIE接口与lmi接口增加做了跨时钟处理,跨时钟处理模块由于未收到0x18000读请求响应就会一直挂起,结果就是后续的读操作也都无法正常响应,最终都被上级模块做超时处理返回给软件0x5a5a。

 

五、修改方案

    对avmm接口的跨时钟处理模块增加超时处理机制,避免下级模块超时后AVMM总线被异常挂起。

0条评论
0 / 1000
o****n
2文章数
0粉丝数
o****n
2 文章 | 0 粉丝
o****n
2文章数
0粉丝数
o****n
2 文章 | 0 粉丝
原创

紫金DPU卡PF热插拔问题分析<二>

2023-06-19 08:21:09
43
0

一、背景

       紫金DPU硬件平台升级,基于新的硬件平台做接口升级替换、代码移植。

 

二、现象

       新硬件平台出现PF热拔出成功,但是热添加失败问题。

 

三、分析

      1、热拔出成功软件的打印:

     

                                                                                图1

      2、热插入失败的软件打印与FPGA抓到的信号:

       

                                                                              图2        

   

                                                                               图3

     3、现象推断

      结合软件打印信息与逻辑分析仪采到的信号,可以分析出热插入失败是对0x18000寄存器读操作无响应,导致lmi总线挂住,并且后续的读操作都无法返回而引起。这也解释了为何热删除不会出问题,因为热删除动作并不会读0x18000寄存器。

       经过硬件软件各自对0x18000寄存器的分析,认为该寄存器并无作用,读回的寄存器值也并不参与软件运算,因此可以屏蔽该寄存器操作来验证问题是否消除。

       另外通过获取旧的硬件平台热插入成功的打印(如下图4所示),可以发现旧硬件平台上对0x18000读操作也是返回了0x5a5a5a5a,这说明对这个寄存器的读操作也是超时不响应,因此返回了一个缺省值。这个时候已经可以判断出对这个寄存器读操作并无意义。

       

                                                                         图4

      使用去掉对0x18000寄存器读操作的软件版本,对PF的热插入操作能成功完成。

     

四、根因定位

     进一步分析新硬件平台紫金DPU卡0x18000寄存器的读失败且阻塞后续读操作的根因,发现是lmi接口中并未支持对0x18000寄存器的读操作;阻塞后续读操作问题是由于新的硬件平台在PCIE接口与lmi接口增加做了跨时钟处理,跨时钟处理模块由于未收到0x18000读请求响应就会一直挂起,结果就是后续的读操作也都无法正常响应,最终都被上级模块做超时处理返回给软件0x5a5a。

 

五、修改方案

    对avmm接口的跨时钟处理模块增加超时处理机制,避免下级模块超时后AVMM总线被异常挂起。

文章来自个人专栏
PCIE PF 热插拔
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0