基于CScripts进行Purley平台CPU端PCIeTxEq调整的方法与流程

文档序号:11233876阅读:4298来源:国知局
基于CScripts进行Purley平台CPU端PCIe Tx Eq调整的方法与流程

本发明涉及一种基于cscripts进行purley平台cpu端pcietxeq调整的方法。



背景技术:

由于pcie3.0的速率已经达到8gb/s,而且传输的通道往往需要经历主板至板卡,整个链路会比较长,这样就会导致高速信号比较大的损耗。为补偿通道的损耗,确保接收端信号眼图能够张开,通过使用相应的加重(去加重或者预加重)及均衡技术是非常有必要的。因此,pcie3.0在发送端使用了施加去加重(de-emphasis)和前冲(preshoot)功能。实际上,pcie3.0的去加重(de-emphasis)和前冲(preshoot)功能是通过一个三阶fir滤波器实现的。如图1所示,其中:c-1,c0与c+1三个参数值即我们所说的txeq值。现有方案是通过在bios中对dntxpreset选项进行修改来调整,选项中有auto、p0、p1、p2、p3、p4、p5、p6、p7、p8、p9总共11种设置。当选择auto时,pcie链路在training完成后将cpu端的pcietxeq自动设置为理论上的最优值,选择p0到p9这10中设置时,txeq会被固定为p0到p9对应的参数。

由于需要开机进入bios界面进行设置,且为使设置的参数值生效,需要重启系统,该过程所需要的时间较长,在需要调整试验多种txeq参数时,会占用测试工程师较多的时间,检验效率低。



技术实现要素:

本发明的目的是提供一种基于cscripts进行purley平台cpu端pcietxeq调整的方法,该方法在修改完txeq参数后,可立即执行相关测试,无需重启系统,可极大缩短测试的时间。

为实现上述目的,本发明采用下述技术方案:

一种基于cscripts进行purley平台cpu端pcietxeq调整的方法,包括以下步骤:

s1、进行txeq调整前,需先将cpuhalt,使cpu只响应修改txeq参数的命令,不进行其他计算操作;

s2、确认当前cpuuniphy所有lane的状态,判断待调整的pcieport是否处在l0状态,是,确认该port所有lane的状态;否,在bios中调整或者重启机台;

s3、确认当前的pcie拓扑,确认待调整pcieport的portnumber;

s4、对相应pcieport的txeq进行调整;

s5、判断参数修改是否有效,若修改无效,则判断当前pcieport是否处在gen3状态下,如果当前pcieport处在gen3状态下,重启系统后从步骤s1执行;如果当前pcieport回退到了gen1状态下,则通过re-enable该pcieport,然后判断参数修改是否有效,若仍然无效,则重启系统后从步骤s1执行;有效,结束。

进一步地,步骤s1中,需先将cpuhalt是通过输入命令unistart(),使以uni.为前缀的命令可以执行实现的。

进一步地,步骤s2中,执行命令uni.showstatus(),确认当前cpuuniphy部分所有lane的状态,具体包括upiport,dmiport,pcieport的lane的状态,读取pcieport的lane的状态。

进一步地,步骤s3中,执行命令pcie.topology(),确认当前的pcie拓扑,执行命令pcie.port_map(),确认待调整port的portnumber。

进一步地,步骤s4中,执行uni.settxeq()命令,对相应pcieport的txeq进行调整。

进一步地,对相应pcieport的txeq进行调整具体包括对cm1、c0、cp1参数的调整,cm1、c0、cp1分别对应三阶fir滤波器的c-1、c0与c+1,根据链路的实际情况采用下表中这十组值或其他取值

进一步地,其他取值需要满足cm1+c0+cp1=63。

进一步地,步骤s5中,执行uni.gettxeq()命令,确认参数修改是否有效,若修改无效,则执行pcie.topology()命令确认当前pcieport是否处在gen3状态下,如果当前port回退到了gen1状态下,则通过re-enable该port,然后再次执行uni.gettx()命令来确认参数修改是否有效。

本发明的有益效果是,

本发明通过cscripts对purley平台cpu的pcietxeq进行更改,更改完成后进行eq参数确认。若更改完后pcie链路降速到gen1,则通过re-enable相应pcieport的方法使相应链路重新training回gen3,再次确认eq参数修改是否有效。实现在无需频繁重启系统的情况下对cpu端pcietxeq进行连续修改,可以做到即改即测,可以极大地提高测试效率。

附图说明

图1是三阶fir滤波器示意图;

图2是本发明流程图;

图3是cpuuniphy部分所有lane的状态图。

具体实施方式

如图2所示,一种基于cscripts进行purley平台cpu端pcietxeq调整的方法,包括以下步骤:s1、进行txeq调整前,需先将cpuhalt,使cpu只响应修改txeq参数的命令,不进行其他计算操作;s2、确认当前cpuuniphy所有lane的状态,如图3所示,判断待调整的pcieport是否处在l0状态,是,确认该port所有lane的状态;否,在bios中调整或者重启机台;s3、确认当前的pcie拓扑,确认待调整pcieport的portnumber;s4、对相应pcieport的txeq进行调整;s5、判断参数修改是否有效,若修改无效,则判断当前pcieport是否处在gen3状态下,如果当前pcieport处在gen3状态下,重启系统后从步骤s1执行;如果当前pcieport回退到了gen1状态下,则通过re-enable该pcieport,然后判断参数修改是否有效,若仍然无效,则重启系统后从步骤s1执行;有效,结束。

下面以将连接在x8带宽下的cpu0pcieport1atxeq修改为preset8为例,通过具体实施方式对本发明进一步说明:该方法的实现步骤如下:

1、在待检验的主板上安装上cpu、内存、服务器电源;

2、接通ac电源,并开机进入bios设置界面,将evdfxfeatures选项设置为enable,重启系统。

3、用intel的itp工具将主板的xdp接口与pc连接。在pc端打开cscripts脚本。

4、执行命令halt(),将cpu停住。

5、执行命令uni.showstatus(),查看cpu0的port1a所有lane的状态,确认是否link在x8的gen3速率下。

6、执行命令pcie.topology(),查看cpu0的pcie拓扑。执行pcie.port_map(),确认cpu0port1a对应的portnumber。

7、执行命令uni.settxeq(cpu0,”p1”,lanemask=0xff,cm1=0x8,c0=0x2f,cp1=0x8),将cpu0port1a的txeq参数设置为preset8所对应的参数。

8、执行命令uni.gettxeq(cpu0,”p1”),确认参数修改是否有效。若无效,则先后执行命令pcie.linkdisable(0,2)与pcie.linkenable(0,2),将该pcieport重新激活。再次执行命令uni.gettxeq(cpu0,”p1”)确认参数,一般情况下,此时参数修改已经生效。若参数修改仍无效,则重启系统,重新执行以上步骤。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1