一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种识别PCIE终端设备的方法和计算设备与流程

2022-11-23 17:01:58 来源:中国专利 TAG:

一种识别pcie终端设备的方法和计算设备
技术领域
1.本技术实施例涉及服务器领域,尤其涉及一种识别pcie终端设备的方法和计算设备。


背景技术:

2.随着服务器技术的不断发展和进步,一台服务器上可以安装的高速串行计算机扩展总线(peripheral component interconnect express,pcie)设备的数量和种类也不断上升,基板管理控制器(baseboard management controller,bmc)作为服务器的带外管理系统,需要识别并管理服务器上安装的pcie设备。
3.当前bcm与基本输入输出系统(basic input/output system,bios)协同,由bios在系统启动阶段对所有设备进行初始化和扫描,并将所有设备的资产信息存储到cpu的寄存器中,bmc需要对服务器中的所有cpu的rootport进行遍历,查找找到pcie设备,效率较低。随着一台服务器上可以安装的pcie设备数量和种类的增加,如何高效准确识别pcie终端设备,就成了当前技术人员亟需解决的问题。


技术实现要素:

4.本技术实施例提供了一种识别pcie终端设备的方法和计算设备,用于高效识别pcie终端设备。
5.本发明的第一方面提供了一种识别pcie终端设备的方法,包括:获取第一在位信息,第一在位信息指示第一pcie槽位与第一pcie终端设备物理连接;基于第一在位信息,获取第一pcie槽位信息,第一pcie槽位信息指示第一pcie槽位与第一root port对应;查询第一root port下挂的bus号范围;遍历bus号范围内的pcie设备,以识别bus号范围内所有pcie终端设备。
6.该方法中,通过获取指示第一pcie槽位与第一pcie终端设备物理连接的第一在位信息,并基于第一在位信息获取第一pcie槽位信息,第一槽位信息指示第一pcie槽位与第一root port对应;bmc向cpu查询第一root port下挂的bus号范围后,遍历bus号范围内的pcie设备,以识别bus号范围内所有pcie终端设备。在对计算设备的cpu挂载的pcie设备进行遍历之前,先获取指示pcie设备物理连接的第一在位信息,对挂载了pcie终端设备的root port进行遍历,减少了遍历的工作量,提升了识别pcie终端设备的效率。
7.在第一方面可能的实现方式中,第一pcie槽位信息包括第一映射关系,第一映射关系为第一pcie槽位与第一root port之间的映射关系;第一映射关系保存在bmc的固件中。
8.该方法中,第一pcie槽位信息包括第一映射关系,其中第一映射关系为第一pcie槽位与第一root port之间的映射关系,第一映射关系保存在bmc固件中。第一映射关系存储于bmc固件中,避免了第一映射关系存储于bios中,在pcie设备更新时,需要bios重新扫描pcie设备带来的不便。
9.在第一方面可能的实现方式中,查询第一root port下挂的bus号范围,包括:向cpu发送第一指令查询第一root port下挂的bus号范围。
10.该方法中,bmc通过向cpu发送第一指令查询第一root port下挂的bus号范围,利用bmc与cpu之间的第一链路查询第一root port下挂的bus号范围,提升了识别pcie终端设备的效率。
11.在第一方面可能的实现方式中,第一指令为cpu pci configuration read。该方法通过bmc与cpu之间的smlink总线向cpu发送cpu pci configuration read获取第一root port下挂的bus号范围。通过cpu pci configuration read指令获取第一root port下挂的bus号范围,获取到第一root port在下挂的bus号相对与该root port的索引,降低了获取全局bus号范围可能出现的由于数据错误导致的遍历错误几率。
12.在第一方面可能的实现方式中,第一指令为rdpciconfiglocal。该方法通过bmc与cpu之间的peci链路向cpu发送rdpciconfiglocal获取第一root port下挂的bus号范围,获取到第一root port在下挂的bus号相对与该root port的索引,降低了获取全局bus号范围可能出现的由于数据错误导致的遍历错误几率。
13.在第一方面可能的实现方式中,获取第一在位信息包括以下任意一种方式:bmc通过gpio接口与pcie槽位连接的链路,获取第一在位信息;bmc通过i2c总线和io扩展芯片与pcie槽位连接的链路,获取第一在位信息;bmc通过localbus总线和cpld与pcie槽位连接的链路,获取第一在位信息。
14.该方法中,获取第一在位信息可以由bmc通过gpio接口与pcie槽位连接的链路,获取第一在位信息;或,bmc通过i2c总线和io扩展芯片与pcie槽位连接的链路,获取第一在位信息;或,bmc通过localbus总线和cpld与pcie槽位连接的链路,获取第一在位信息。bmc可以通过不同链路获取第一在位信息,提升了获取第一在位信息的稳定性。
15.在第一方面可能的实现方式中,遍历bus号范围内的pcie设备,识别到bus号范围内所有pcie终端设备,包括:遍历bus号范围内的pcie设备,获得第一pcie设备,第一pcie设备为bus号范围内的任一个pcie设备;获取第一pcie设备的base class,若base class为预设值,则第一pcie设备为终端设备。
16.该方法中,通过遍历bus号范围内的pcie设备,获得第一pcie设备,第一pcie设备为bus号范围内的任一pcie设备,获取第一pcie设备的base class,若该base class为预设值,则第一pcie设备为终端设备。利用第一pcie设备的base class判断第一pcie设备是否为终端设备,提升了识别第一pcie设备是否为终端设备的效率。
17.在第一方面可能的实现方式中,该方法还包括:若bus号范围内的pcie设备中不存在终端设备,生成pcie设备异常信息。该方法中,若bus号范围内的pcie设备中不存在终端设备,说明第一pcie终端设备发生故障,生成pcie设备异常信息。在快速识别pcie终端设备的同时,还可以判断是否存在pcie终端设备发生故障的情况,进一步提升了计算设备的工作效率。
18.在第一方面可能的实现方式中,该方法还包括:从第一pcie终端设备处获取pcie终端设备的第一标识;根据第一标识,在bmc固件中查找与第一标识对应的pcie配置文件;根据pcie配置文件对pcie设备进行管理。
19.该方法中,从第一pcie终端设备处获取第一pcie终端设备的第一标识,并根据第
一标识在bmc固件中查找与第一标识对应的pcie配置文件,并根据pcie配置文件对第一pcie终端设备进行管理。通过第一标识获取预先存储于bmc固件的第一标识对应的配置文件,便于工作人员随时根据需求调整第一标识对应的配置文件的具体内容,提升了更新配置文件的便捷性。
20.在第一方面可能的实现方式中,第一标识包括vender id,device id,subsystem vendor id和subsystem id。该方法中,第一标识可以为针对不同厂商不同批次的pcie设备设置的vendor id,device id,subsystem vendor id和subsystem id。节约了用户预先设置第一标识的工作,提升了工作效率。
21.在第一方面可能的实现方式中,pcie配置文件包括pcie终端设备的资产信息、pcie终端设备上的i2c拓扑与器件地址、pcie终端设备的调速策略中的至少一个或多个。该方法中,pcie配置文件包括pcie终端设备的资产信息、pcie终端设备上的i2c拓扑与器件地址、pcie终端设备的调速策略中的至少一个或多个。该方法通过为pcie终端设备准备多种pcie配置文件以提升获取pcie终端设备的配置文件的效率,进而提升了计算设备的工作效率。
22.本发明的第二方面提供了一种计算设备,包括:电路板,电路板上设有cpu、bmc芯片和至少一个pcie槽位;cpu,与至少一个pcie槽位电连接,用于处理指令;bmc芯片,与cpu通过第一链路电连接,与至少一个pcie槽位通过第二链路电连接,bmc芯片用于通过第二链路获取第一在位信息,第一在位信息指示第一pcie设备与第一pcie槽位物理连接,第一pcie槽位为至少一个pcie槽位中的任一个pcie槽位;bmc芯片基于第一在位信息,通过第一链路获取第一pcie槽位信息,第一pcie槽位信息指示第一pcie槽位与第一root port对应;bmc芯片向cpu查询第一root port下挂的bus号范围;通过遍历bus号范围内的pcie设备,以识别bus号范围内所有pcie终端设备。
23.在第二方面可能的实现方式中,第一链路包括bmc与cpu之间的smlink总线,或bmc与cpu之间的peci链路。
24.在第二方面可能的实现方式中,第二链路包括bmc通过gpio与pcie槽位连接的链路、bmc通过i2c总线和pca9555与pcie槽位连接的链路和bmc通过localbus总线和cpld与pcie槽位连接的链路中的任意一个或多个。
25.本发明的第三方面提供了一种计算设备,包括:pcie设备在位检测模块,用于获取第一在位信息,所述第一在位信息指示所述第一pcie槽位与第一pcie终端设备物理连接;root port信息获取模块,用于基于所述第一在位信息,获取第一pcie槽位信息,所述第一pcie槽位信息指示所述第一pcie槽位与第一root port对应;所述root port信息获取模块,还用于基于所确定的所述第一root port,查询所述第一root port下挂的bus号范围;pcie设备判断模块,用于遍历所述bus号范围内的pcie设备,以识别所述bus号范围内所有pcie终端设备。
26.在第三方面可能的实现方式中,所述第一pcie槽位信息包括第一映射关系,所述第一映射关系为所述第一pcie槽位与所述第一root port之间的映射关系;所述第一映射关系保存在bmc的固件中。
27.在第三方面可能的实现方式中,所述root port信息获取模块,具体用于向cpu发送第一指令查询所述第一root port下挂的bus号范围。
28.在第三方面可能的实现方式中,所述第一指令为cpu pci configuration read。
29.在第三方面可能的实现方式中,所述第一指令为rdpciconfiglocal。
30.在第三方面可能的实现方式中,pcie设备在位检测模块,具体用于通过以下任意一种或多种方式获取第一在位信息:通过gpio接口与pcie槽位连接的链路,获取第一在位信息;通过扩展芯片与pcie槽位连接的链路,获取第一在位信息;通过cpld与pcie槽位连接的链路,获取第一在位信息。
31.在第三方面可能的实现方式中,pcie设备判断模块,具体用于:遍历所述bus号范围内的pcie设备,获得第一pcie设备,所述第一pcie设备为所述bus号范围内的任一个pcie设备;获取所述第一pcie设备的base class,若所述base class为预设值,则所述第一pcie设备为终端设备。
32.在第三方面可能的实现方式中,该计算设备还包括:pcie设备异常处理模块,用于若所述bus号范围内的pcie设备中不存在终端设备,生成pcie设备异常信息。
33.在第三方面可能的实现方式中,所述计算设备还包括:pcie设备配置文件匹配模块,用于:从所述第一pcie终端设备处获取所述pcie终端设备的第一标识;根据所述第一标识,在bmc固件中查找与所述第一标识对应的pcie配置文件;根据所述pcie配置文件对所述第一pcie终端设备进行管理。
34.在第三方面可能的实现方式中,所述第一标识包括vender id,device id,subsystem vendor id和subsystem id。
35.在第三方面可能的实现方式中,所述pcie配置文件包括所述pcie终端设备的资产信息、pcie终端设备上的i2c拓扑与器件地址、pcie终端设备的调速策略中的至少一个或多个。
36.本发明的第四方面提供了一种计算设备,包括:处理器和存储器;存储器用于存储计算机执行指令;处理器用于执行存储器所存储的计算机执行指令,以使电子设备执行前述第一方面和第一方面可能的实现方式中任一项描述的方法。
37.本发明的第五方面提供了一种计算机可读存储介质,包括程序,当其在计算机上运行时,使得计算机执行如前述第一方面和第一方面可能的实现方式中任一项描述的方法。
38.本技术的第六方面提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述第一方面和第一方面可能的实现方式中任一项描述的方法。
附图说明
39.图1为本技术实施例提供的计算设备的一种结构示意图;
40.图2为本技术实施例提供的pcie总线的一种结构示意图;
41.图3为本技术实施例提供的计算设备的另一种结构示意图;
42.图4为本技术实施例提供的数据处理方法的一种流程示意图;
43.图5为本技术实施例提供的计算设备的另一种结构示意图。
具体实施方式
44.下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术
一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
45.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
46.为了便于理解,首先对本技术提出的方案的应用场景进行简单的介绍,请参阅图1,图1为本技术实施例提供的计算设备的一种结构示意图,计算设备包括:处理器101、存储器102、内存103、通信接口104和总线系统105。
47.总线系统105,用于将计算设备的各个硬件组件耦合在一起。总线系统105可以是外设部件互连(pci)总线或扩展工业标准结构(eisa)总线等。总线系统105可以分为地址总线、数据总线、控制总线等。
48.通信接口104,用于实现计算设备与其他设备之间的通信连接,可以为有线接口(例如以太网接口),可以为内部接口(例如高速串行计算机扩展总线(pcie)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口)。
49.内存103,用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据。
50.存储器102,用于存储程序指令和数据,可以包括易失性存储器,例如随机存取存储器(ram);存储器102也可以包括非易失性存储器,例如只读存储器(rom)、快闪存储器、硬盘(hdd)或固态硬盘(ssd);存储器102还可以包括上述种类的组合。
51.处理器101,用于读取存储器102中存储指令和数据,可以由至少一个通用处理器构成,例如中央处理器(cpu),或者cpu和硬件芯片的组合。上述硬件芯片可以是专用集成电路(asic)、可编程逻辑器件(pld)或其组合。上述pld可以是复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、通用阵列逻辑(gal)或其任意组合。
52.以处理器为cpu为例,cpu可以与pcie总线相连,pcie是一个树状的接口总线,用于为cpd提供访问外围设备的总线接口。请参阅图2,图2为本技术实施例提供的pcie总线的一种结构示意图。
53.由图2可以看出cpu设置有根端口(root port),而一个cpu下可以设有多个rootport,此处以其中一个root port为例,与root port直接连接的pci总线被称之为bus0,bus0可以连接端点(endpoint)和/或交换机(switch),在图2所示的结构中,root port通过bus0连接了endpoint1和switch1,而switch1又通过bus1连接了endpoint2和switch2。进一步的,switch2通过bus2连接了endpoint3和endpoint4。
54.在图2所示的pcie拓扑结构中,pcie协议支持256个bus,每条bus最多支持32个device,每个device最多支持8个function,由bus,device和function构成了每个pcie设备节点的身份标识。
55.需要注意的是,图2对pcie总线的结构示意图仅为示例,在实际应用中,cpu可以通
过bus0连接任意数量的endpoint和/或switch,此处不做限制。
56.bmc在启动后需要获取通过总线与cpu连接的所有pcie设备的信息对这些设备进行初始化。
57.随着硬件和软件的不断更新,如何进一步的提升获取pcie资产信息的效率,就成了当前技术人员不得不面对的问题。相关技术中,完全依赖于bios在设备启动阶段对所有设备进行初始化和扫描,以获得pcie设备的资产信息,并将这些信息写入对应的cpu的寄存器中,以便后续取用。当与计算机连接的pcie设备增加或减少时,需要对新增或减少的资产信息进行更新,而bios只能在计算机启动阶段更新bios固件,以更新pcie设备的资产信息,就使得pcie设备的资产信息只能在计算机启动阶段进行更新,如何消除这一局限性,使得pcie设备的资产信息更新不受限于计算机运行阶段。
58.基于前述图1介绍的计算设备架构和图2介绍的pcie总线的架构,下面将结合图3对本技术具体的应用场景进行举例,图3为本技术实施例提供的计算设备的另一种结构示意图。
59.该计算设备包括电路板30,电路板30上设置有cpu301,bmc芯片302和至少一个pcie槽位303。
60.其中,cpu301的任一个root port与pcie槽位303电连接,用于在root port与pcie槽位的通路之中传递pcie信号。
61.bmc芯片302通过第二链路与至少一个pcie槽位303电连接,用于获取第一在位信息,第一在位信息指示第一pcie终端设备与第一pcie槽位物理连接,第一pcie槽位为至少一个pcie槽位中的任一个pcie槽位。
62.具体的,第二链路可以为,bmc芯片302通过gpio链路与至少一个pcie槽位303电连接。
63.可选的,第二链路还可以为,bmc芯片302通过i2c总线与io扩展芯片电连接,io扩展芯片与至少一个pcie槽位303电连接,其中,io扩展芯片可以为pca9555。
64.可选的,第二链路还可以为,bmc芯片302通过localbus总线与cpld电连接,cpld与至少一个pcie槽位303电连接。
65.bmc芯片302,通过第一链路与cpu301电连接,用于在带外获取第一pcie槽位信息,其中第一pcie槽位信息指示第一pcie槽位与第一root port对应。
66.具体的,第一链路可以为,cpu301通过peci总线与bmc芯片302电连接。
67.可选的,电路板30上还可以设置有pch(platform controller hub,南桥)304,第一链路还可以为,cpu301通过dmi与pch304电连接,其中,pch304通过smlink总线与bmc芯片302电连接。
68.bmc芯片302,还用于通过第一链路向cpu301发送第一指令,以查询第一root port下挂的bus号范围,并遍历该bus号范围内的pcie设备以识别bus号范围内所有的pcie终端设备。
69.结合前述图3所描述的计算设备,下面对本技术提出的方案进行介绍,请参阅图4,图4为本技术实施例提供的数据处理方法的一种流程示意图。
70.401、获取第一在位信息;
71.在此,bmc芯片可以通过第二链路从第一pcie槽位获取第一在位信息,第一在位信
息指示第一pcie终端设备与第一pcie槽位物理连接。
72.示例性的,bmc芯片可以以一定时间间隔进行主动轮询的方式获取第一pcie槽位的在位信息,进而获知第一pcie槽位上的pcie设备在位情况变化,还可以由获取第一pcie槽位上的在位信号变化触发一次第一pcie槽位的在位信息获取,进而获知第一pcie槽位上的在位情况变化。
73.在另一示例中,bmc芯片以一定时间间隔进行主动轮询的方式依次获取主板上每个pcie槽位的在位信息,在此将存在在位信息的pcie槽位称为第一pcie槽位;应当理解,在同一时刻,可以有一个或多个第一pcie槽位。需要注意的是,本技术实施例提出的获取第一pcie槽位的在位信息的方式仅为示例,在实际应用中,对第一pcie槽位的在位信息的获取方式不做限定。
74.该方法中,bmc芯片可以通过不同链路获取第一在位信息,提升了获取第一在位信息的稳定性。
75.402、基于第一在位信息,获取第一pcie槽位信息;
76.bmc芯片在获取到第一在位信息后,从bmc固件中获取第一pcie槽位信息,第一pcie槽位信息指示第一pcie槽位与第一root port对应,第一pcie槽位与第一root port的对应关系可以以第一映射关系的形式存储于bmc固件中。
77.403、基于所确定的第一root port,查询第一root port下挂的bus号范围;
78.bmc芯片通过第一链路向cpu查询第一root port下挂的bus区间。
79.根据第一链路的不同,获取第一root port下挂的bus号范围有不同的方式。具体的,请参阅下述两种情况:
80.情况一:bmc通过smlink总线向cpu查询时,通过cpu pci configuration read命令,实现通过smlink总线从寄存器中的偏移地址19h获取secbus信息,并从寄存器的偏移地址1ah获取subbus信息,由于secbus代表下一级bus号,subbus代表当前pcie子树中,最大的pcie bus号。进而获得第一root port下挂的bus号范围。
81.其中,还可以通过将byte4的bit6置位为1,以第一root port在cpu下的相对偏移的形式,获取到第一root port下挂的bus号区间。
82.可选的,还可以通过将byte4的bit6置位为0,以bus号在计算设备的全局偏移的形式,获取到第一root port下挂的bus号区间。
83.情况二:bmc还可以通过peci总线向cpu查询,通过rdpciconfiglocal命令,实现通过peci总线从寄存器中的偏移地址19h获取secbus信息,并从寄存器的偏移地址1ah获取subbus信息,由于secbus代表下一级bus号,subbus代表当前pcie子树中,最大的pcie bus号。以bus号在第一root port下的相对偏移的形式,获取到第一root port下挂的bus号区间。
84.可选的,还可以通过rdpciconfig命令,以bus号在计算设备的全局偏移的形式,获取到第一root port下挂的bus号区间。
85.需要注意的是,此处对bmc芯片通过第一链路从cpu获取第一root port下挂的bus号范围的介绍仅为示例,在实际应用中,可以结合实际情况进行调整,本技术不做限制。
86.该方法中,利用bmc与cpu之间的不同链路查询第一root port下挂的bus号范围,提升了识别pcie终端设备的效率的同时,还可以提升获取第一root port下挂的bus号区间
的稳定性。
87.404、遍历bus号范围内的pcie设备,获得第一pcie设备;
88.在获取第一root port的bus号范围后,bmc芯片遍历这个bus号范围中的pcie设备的身份标识,根据前述图2的描述中,可以了解到在标准中,每个bus号可能的device参数为[0,31]中任一个,function参数为[0,7]中任一个。
[0089]
根据这一条件,依次将第一root port的总线号依次取值为secbus,secbus 1,secbus 2,...,subbus,对device和function进行遍历。
[0090]
若bus,device,function组合没有对应的pcie设备,收到访问失败提示;
[0091]
若bus,device,function组合有对应的pcie设备,则该设备为第一pcie设备。
[0092]
需要注意的是,此处对bus、device、function进行遍历的介绍仅为示例,在实际应用中不做具体的限制。
[0093]
405、获取第一pcie设备的基类数据(base class),并根据base class判断第一pcie设备是否为终端设备;
[0094]
bmc芯片从第一pcie设备的寄存器偏移地址0bh获取base class,若该base class的数值不为06h,则认为该第一pcie设备为终端设备。
[0095]
若该base class的数值为06h,则认为该第一pcie设备为switch。
[0096]
该方法中,利用第一pcie设备的base class判断第一pcie设备是否为终端设备,提升了识别第一pcie设备是否为终端设备的效率。
[0097]
406、bmc芯片判断是否存在与第一root port电连接的pcie终端设备;
[0098]
当bmc芯片对第一root port对应的bus号遍历完成后,判断是否存在与第一root port电连接的pcie终端设备。
[0099]
若存在pcie终端设备,执行步骤407。
[0100]
若不存在pcie终端设备,执行步骤409。
[0101]
407、从所述第一pcie终端设备处获取所述pcie终端设备的第一标识;
[0102]
若存在与root port连接的终端设备,从终端设备的寄存器偏移0h,2h,2ch,2eh分别获取到厂商标识(vendor id),设备标识(device id),子系统厂商标识(subsystem vendor id)和子系统标识(subsystem id),也就是第一标识。
[0103]
需要注意的是,此处的第一标识仅为示例,在实际应用中,可以根据需要进行配置,此处不做限定。
[0104]
该方法中,可以利用厂商针对不同批次的pcie设备设置的vendor id,device id,subsystem vendor id和subsystem id。节约了用户预先设置第一标识的工作,提升了工作效率。
[0105]
408、根据所述第一标识,在bmc固件中查找与所述第一标识对应的pcie配置文件;
[0106]
此处以第一pcie设备为终端设备为例,在获取第一标识后,在bmc固件中查找第一标识,根据第一标识与第一pcie配置文件的映射关系,获得第一pcie设备的pcie配置文件。
[0107]
其中第一pcie配置文件为用户通过bmc通过交互界面提供的接口配置,并保存于bmc固件的信息,具体可以包括pcie设备规范中规定的第一pcie设备的资产信息、第一pcie设备上的i2c拓扑与器件地址和第一pcie设备的调速策略中的至少一种或多种。
[0108]
需要注意的是,此处对pcie配置文件的举例仅为示意,意在阐述,本技术提及的
pcie配置文件中,除了pcie设备规范中规定的pcie设备的资产信息之外,还可以包含用户根据需要配置的信息,作为第一配置文件的内容,以供bmc取用,在实际应用中,本技术对pcie配置文件的具体内容不做限制。
[0109]
该方法中,利用第一标识从bmc固件中获取第一配置文件,第一配置文件中除了可以包括pcie设备规范中规定的第一pcie设备的资产信息外,还可以包括第一pcie设备上的i2c拓扑与器件地址和第一pcie设备的调速策略,提升了bmc芯片获取第一配置文件的便捷性,提升了计算设备的工作效率。
[0110]
示例的,当第一pcie设备更新或第一配置文件更新时,bmc开发人员根据第一标识从确定第一配置文件,并对该第一配置文件进行修改,获得更新后的第一配置文件,或,通过使用命名相同的新的第一配置文件替代当前已经存在的第一pcie配置文件,获得更新后的第一配置文件,达成配置pcie配置文件的目的,并根据更新后的第一配置文件生成新的bmc固件,用户通过bmc提供的全球广域网(world wide web,web)接口、红鱼(redfish)接口或简单网络管理协议(simple network management protocol,snmp)提供的交互界面升级bmc固件的方式,将新的bmc固件更新到bmc中。
[0111]
需要注意的是,此处对第一配置文件的更新方式仅为示例,在实际应用中,可以结合实际情况采用不同手段对第一配置文件进行更新,此处不做限制。
[0112]
该方法中,bmc芯片利用第一标识从bmc固件中获取第一配置文件,相较于当前从bios获取配置文件的方式,bmc固件升级无需对硬件设备进行扫描以获取到pcie设备对应的配置文件,进而无需在更新pcie设备时中断业务对pcie设备进行扫描,利用bmc固件升级的便利性,避免了由于pcie终端设备的升级而中断业务的情况,提升了计算设备工作的稳定性,除此以外,利用从bios获取配置文件的方式中,仅可以利用bios从pcie设备获取到pcie设备规范中规定的pcie设备的资产信息,而利用对bmc固件升级的方式对配置文件进行更新的方式,还可以根据用户需求,为pcie设备配置除pcie设备规范中规定的pcie设备的资产信息任意内容作为配置文件。
[0113]
409、生成pcie设备异常信息。
[0114]
若未遍历到第一root port下的pcie终端设备,生成第一root port与第一pcie终端设备物理连接,却在遍历中未发现第一pcie终端设备的情况的异常信息,标记第一root port下无任何关联终端,以便用户查阅。
[0115]
并且通过交互界面推送第一root port出现终端设备异常,以提示用户进行检查。
[0116]
或,响铃以警示用户,root port出现终端设备异常的情况。
[0117]
需要注意的是,此处对第一root port不存在电连接的终端设备的操作行为不做限制,在实际应用中,当不存在与第一root port电连接的终端设备时,对用户进行提醒和/或备份以便用户查阅即可。
[0118]
该方法,在获取到第一pcie终端设备与第一root port物理连接后,若在遍历第一root port下挂的bus号区间后发现不存在与第一root port电连接的终端设备,相较于当下的技术手段,本方法可以区分第一root port未与pcie终端设备连接的情况,和第一root port与pcie终端设备连接,但是pcie终端设备无法识别的情况。并且在获知第一root port发生终端设备异常,还可以通过不同方式对用户进行提醒,提升了计算设备管理pcie终端设备的效率。
[0119]
本技术实施例中,通过将pcie槽位与cpu root port的映射关系和pcie设备的配置文件保存在bmc固件中,当bmc固件检测到第一pcie槽位有pcie设备在位时,通过bmc固件中保存的第一pcie槽位与第一root port的映射关系找到第一root port,并查询第一root port的secbus和subbus信息后,根据第一root port的secbus和subbus区间和device,function的所有可能的取值,确定由bus,device,function组成的身份标识是否存在对应的pcie设备,若存在通过获取base class获知该pcie设备是终端设备或switch。本技术实施例无需对cpu的所有root port进行遍历,大幅减少了计算量,提升了识别pcie终端设备的效率。
[0120]
下面结合图5对本技术提出的计算设备的一种可能的结构进行介绍,图5为本技术实施例提供的计算设备的另一种结构示意图。
[0121]
该计算设备包括:
[0122]
pcie设备在位检测模块501,用于获取第一在位信息,所述第一在位信息指示所述第一pcie槽位与第一pcie终端设备物理连接;
[0123]
root port信息获取模块502,用于基于所述第一在位信息,获取第一pcie槽位信息,所述第一pcie槽位信息指示所述第一pcie槽位与第一root port对应;
[0124]
所述root port信息获取模块502,还用于基于所确定的所述第一root port,查询所述第一root port下挂的bus号范围;
[0125]
pcie设备判断模块503,用于遍历所述bus号范围内的pcie设备,以识别所述bus号范围内所有pcie终端设备。
[0126]
可选的,所述第一pcie槽位信息包括第一映射关系,所述第一映射关系为所述第一pcie槽位与所述第一root port之间的映射关系;
[0127]
所述第一映射关系保存在bmc的固件中。
[0128]
可选的,所述root port信息获取模块502,具体用于向cpu发送第一指令查询所述第一root port下挂的bus号范围。
[0129]
可选的,所述第一指令为cpu pci configuration read。
[0130]
可选的,所述第一指令为rdpciconfiglocal。
[0131]
可选的,pcie设备在位检测模块501,具体用于通过以下任意一种或多种方式获取第一在位信息:
[0132]
通过gpio接口与pcie槽位连接的链路,获取第一在位信息;
[0133]
通过扩展芯片与pcie槽位连接的链路,获取第一在位信息;
[0134]
通过cpld与pcie槽位连接的链路,获取第一在位信息。
[0135]
可选的,pcie设备判断模块503,具体用于:
[0136]
遍历所述bus号范围内的pcie设备,获得第一pcie设备,所述第一pcie设备为所述bus号范围内的任一个pcie设备;
[0137]
获取所述第一pcie设备的base class,若所述base class为预设值,则所述第一pcie设备为终端设备。
[0138]
可选的,该计算设备还包括:pcie设备异常处理模块504,用于若所述bus号范围内的pcie设备中不存在终端设备,生成pcie设备异常信息。
[0139]
可选的,pcie设备配置文件匹配模块505,用于:
[0140]
从所述第一pcie终端设备处获取所述pcie终端设备的第一标识;
[0141]
根据所述第一标识,在bmc固件中查找与所述第一标识对应的pcie配置文件;
[0142]
根据所述pcie配置文件对所述第一pcie终端设备进行管理。
[0143]
可选的,所述第一标识包括vender id,device id,subsystem vendor id和subsystem id。
[0144]
可选的,所述pcie配置文件包括所述pcie终端设备的资产信息、pcie终端设备上的i2c拓扑与器件地址、pcie终端设备的调速策略中的至少一个或多个。
[0145]
本技术实施例还提供一种计算机可读存储介质,包括计算机可读指令,当计算机可读指令在计算机上运行时,使得计算机执行如前述方法实施例所示任一项实现方式。
[0146]
本技术实施例还提供的一种计算机程序产品,计算机程序产品包括计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行如前述方法实施例所示任一项实现方式。
[0147]
本技术还提供一种芯片或芯片系统,该芯片可包括处理器。该芯片还可包括存储器(或存储模块)和/或收发器(或通信模块),或者,该芯片与存储器(或存储模块)和/或收发器(或通信模块)耦合,其中,收发器(或通信模块)可用于支持该芯片进行有线和/或无线通信,存储器(或存储模块)可用于存储程序或一组指令,该处理器调用该程序或该组指令可用于实现上述方法实施例、方法实施例的任意一种可能的实现方式中由终端或者网络设备执行的操作。该芯片系统可包括以上芯片,也可以包含上述芯片和其他分立器件,如存储器(或存储模块)和/或收发器(或通信模块)。
[0148]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0149]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0150]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0151]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0152]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全
部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献