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

一种管理背板设备热插拔的方法、系统与流程

2023-02-06 17:13:06 来源:中国专利 TAG:


1.本发明涉及背板热拔插管理技术领域,具体涉及一种管理背板设备热插拔的方法、系统。


背景技术:

2.硬盘背板是用于接入更多硬盘的电路板,一般应用于服务器领域,也有被用于搭建个人存储系统。nvme背板上可挂载nvme协议的硬盘。
3.服务器上硬盘的热插拔是一种经正常现象。pcie硬件可支持热插拔,并实现基本的bar空间、配置空间的申请释放等基本功能。
4.现有的大部分厂商的硬件支持这些基本功能,但一些辅助功能比如说背板设备的电源管理、led灯的控制等辅助功能仅仅通过主控芯片逻辑来实现,adaptor(本技术中指的是主机)无法直接控制背板插槽的电源、led灯等。有些厂商将主控芯片注册成为ses设备,从而实现主机对背板插槽的电源、led灯的控制,但这样会增加大量代码、硬件设计复杂。


技术实现要素:

5.针对背板设备的电源管理、led灯的控制等辅助功能仅仅通过主控芯片来实现,主机无法直接控制背板插槽的电源、led灯的问题,本发明一种管理背板设备热插拔的方法、系统。
6.第一方面本发明技术方案提供一种管理背板设备热插拔的方法,包括如下步骤:
7.背板上设备发生热插拔后,背板向主控芯片发送中断;
8.主控芯片接收到背板中断后读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断;
9.主机接收到主控芯片中断后,读取配置空间中设备的在位状态,根据设备的在位状态控制背板上设备的电源并更改对应的配置空间中控制led的位;
10.主机处理完成后,向主控芯片发送中断;
11.主控芯片接收主机中断,发现配置空间中控制led的位被修改后,通过i2c操作对应背板上的led。
12.作为本发明技术方案的进一步限定,主控芯片接收到背板中断后读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断的步骤包括:
13.主控芯片接收背板中断;
14.根据发生中断的输入接口设置全局位图,并将接收到的中断进行清除;
15.接收中断后读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断。
16.作为本发明技术方案的进一步限定,读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断的步骤包括:
17.根据位图解析中断输入接口号并找到相应的连接器;
18.通过i2c获取该连接器所挂载设备的在位状态;
19.根据发生热拔插设备的portid设置对应配置空间的寄存器;
20.向主机发送中断。
21.作为本发明技术方案的进一步限定,主控芯片接收到主机中断的步骤之后包括:
22.根据发生中断的输入接口设置全局位图,并将接收到的中断进行清除;
23.检测发现被更改的配置空间。
24.作为本发明技术方案的进一步限定,检测发现被更改的配置空间的步骤包括:
25.根据位图解析发生了中断的port组;其中一个port组中的所有port存在一块共用的配置空间;
26.通过读取配置空间中port状态寄存器,获取发生中断的port。
27.作为本发明技术方案的进一步限定,操作对应背板上的led的步骤包括:
28.读取发生中断的port所在配置空间中slot_ctrl寄存器中的led状态位;
29.判断状态位是否有变化;
30.若是,调用设备对应的用于设置led灯状态的回调函数点灯;
31.若否,选择下一个设备,执行步骤:读取发生中断的port所在配置空间中slot_ctrl寄存器中的led状态位。
32.作为本发明技术方案的进一步限定,该方法还包括:
33.创建中断服务处理线程并进行初始化;中断服务处理线程用于处理背板中断和主机中断;
34.创建led控制线程,led控制线程用于控制led灯状态。
35.作为本发明技术方案的进一步限定,中断服务处理线程初始化的步骤包括:
36.从非易失存储介质中读取配置文件;
37.将连接器相关配置文件转化为结构体并挂载在连接器链表中;
38.将设备相关配置文件转化为结构体并挂载在对应的连接器下;
39.遍历所有的connector根据下挂在该connector的背板类型调用相应的背板初始化并且注册各种回调函数
40.遍历所有的设备设置其port的配置空间使其支持热拔插;
41.通过i2c确定各个connector上挂载的设备的在位状态;
42.根据设备的在位状态设置配置空间的slot_status、link_status寄存器;
43.将初始化结果记录事件日志;最终进入下一个阶段,开始处理背板中断与主机中断。
44.第二方面,本发明技术方案提供一种管理背板设备热插拔的系统,包括主机、主控芯片、背板,背板上设置有用于连接硬盘的若干个插槽;
45.主机与主控芯片连接;
46.主控芯片设置有若干port分别与背板上的插槽连接;
47.所述系统通过如第一方面所述的方法进行管理。
48.中断服务处理线程和led控制线程设置在主控芯片中。
49.第三方面,本发明技术方案提供一种服务器,所述服务器包括如第二方面所述的管理背板设备热插拔的系统。
50.从以上技术方案可以看出,本发明具有以下优点:硬盘发生热插拔后背板会发送一个中断通知主控芯片。主控芯片会通过i2c总线来访问背板获取到哪个硬盘发生了热插拔,然后通过中断发送给主机。主机接收到中断之后可以进行对slot上下电、操作led等操作。主机处理完成之后会通过中断通知主控芯片。实现过程代码量较少,硬件实现简单。可以支持ubm、vpp甚至自研协议背板,可以支持多块背板。
51.此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
52.由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
54.图1是本发明一个实施例的方法的示意性流程图。
55.图2是本发明一个实施例的系统架构图。
56.图3是处理设备热插拔总体流程图。
57.图4是处理背板中断流程图。
58.图5是处理adaptor中断流程图。
59.图6是初始化hotplughdr线程流程图。
60.图7是connector配置文件及作用示图。
61.图8是drive配置文件及作用示图。
具体实施方式
62.现有的大部分厂商的硬件支持这些基本功能,但一些辅助功能比如说背板设备的电源管理、led灯的控制等辅助功能仅仅通过主控芯片来实现,adaptor(本技术中指的是主机)无法直接控制背板插槽的电源、led灯等。有些厂商将主控芯片注册成为ses设备,从而实现主机对背板插槽的电源、led灯的控制,但这样会增加大量代码、硬件设计复杂。为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
63.文中英文注释如下:
64.pcie(peripheral component interconnect express):一种高速串行计算机扩展总线标准。
65.nvme(non volatile memory express):是一个逻辑设备接口规范。用于访问通过pcie总线附加的非易失性存储器介质。
66.bar(base address register):基地址寄存器,存储peie内部空间的基地址。
67.adaptor:本文中特指主机。
68.ses(scsi enclosure services):使用scsi协议的机箱管理协议。
69.drive:背板上slot所插的设备,本技术中的设备即drive。
70.slimelane:一种连接线,里面集成了传输peie数据的信号线以及一些边带信号,例如i2c,中断信号等。
71.connector:连接器。
72.i2c(inter-integrated circuit):由philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
73.ubm(universal backplane management):博通公司开发的一种背板管理协议。
74.vpp(visual pin port):intel公司开发的一种背板管理协议。
75.slot:本文中特指背板上与盘连接的槽位。
76.gpio(general porpose intput output):通用输入输出,本文中只使用了它的输入功能,用于接收背板发送过来的中断,本技术中的输入接口即为gpio。
77.lane:一组pcie差分信号线。
78.port:本文中特指pcie port,其为一种逻辑概念,拥有自己的pcie配置空间,其可有多个lane组成,并且多少条lane可以通过配置空间配置。
79.dp(downstream port):下联port。
80.group:本文中特指pcie group,一个或多个port组成的一个逻辑组合,由16条lane组成,拥有共用的配置空间。
81.如图1所示,本发明实施例提供一种管理背板设备热插拔的方法,包括如下步骤:
82.步骤1:背板上设备发生热插拔后,背板向主控芯片发送中断;
83.步骤2:主控芯片接收到背板中断后读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断;
84.步骤3:主机接收到主控芯片中断后,读取配置空间中设备的在位状态,根据设备的在位状态控制背板上设备的电源并更改对应的配置空间中控制led的位;
85.步骤4:主机处理完成后,向主控芯片发送中断;
86.步骤5:主控芯片接收主机中断,发现配置空间中控制led的位被修改后,通过i2c操作对应背板上的led。
87.硬盘发生热插拔后背板会发送一个中断通知主控芯片。主控芯片会通过i2c总线来访问背板获取到哪个硬盘发生了热插拔,然后通过中断发送给主机。主机接收到中断之后可以进行控制对背板上的插槽上下电,并改变相应的配置空间寄存器的状态,主机处理完成之后会通过中断通知主控芯片,主控芯片发现配置空间寄存器状态发生变化时通过i2c操作对应背板上的led。
88.在有些实施例中,主控芯片接收到背板中断后读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断的步骤包括:
89.步骤21:主控芯片接收背板中断;
90.步骤22:根据发生中断的gpio设置全局位图,并将接收到的中断进行清除;
91.步骤23:读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断。
92.进一步要说明的是,读取背板上设备的在位状态,将设备的在位状态设置在配置空间中,并向主机发送中断的步骤包括:
93.步骤231:根据位图解析中断gpio号并找到相应的连接器;
94.步骤232:通过i2c获取该连接器所挂载设备的在位状态;
95.步骤233:根据发生热拔插设备的portid设置对应配置空间的寄存器;
96.步骤234:向主机发送中断。
97.在有些实施例中,步骤5中,主控芯片接收到主机中断的步骤之后包括:
98.步骤51:根据发生中断的gpio设置全局位图,并将接收到的中断进行清除;
99.步骤52:检测发现被更改的配置空间。
100.相应的,检测发现被更改的配置空间的步骤包括:
101.步骤521:根据位图解析发生了中断的port组;其中一个port组中的所有port存在一块共用的配置空间;
102.步骤522:通过读取配置空间中port状态寄存器,获取发生中断的port。
103.步骤5中,操作对应背板上的led的步骤包括:
104.步骤53:读取发生中断的port所在配置空间中slot_ctrl寄存器中的led状态位;判断状态位是否有变化;
105.若是,执行步骤54,若否,选择下一个设备,执行步骤53;
106.步骤54:调用设备对应的用于设置led灯状态的回调函数点灯;
107.需要说明的是,在有些实施例中,该方法还包括:
108.创建中断服务处理线程并进行初始化;中断服务处理线程用于处理背板中断和主机中断;
109.创建led控制线程,led控制线程用于控制led灯状态。
110.在这里,中断服务处理线程初始化的步骤包括:
111.s01:从非易失存储介质中读取配置文件;
112.s02:将连接器相关配置文件转化为结构体并挂载在链表中;
113.s03:将设备相关配置文件转化为结构体并挂载在对应的连接器下;
114.s04:判断是否是最后一个连接器;
115.若是,执行步骤s05,若否,执行步骤s06;
116.s05:循环处理背板中断与主机中断;
117.s06:根据连接器的背板类型调用相应的背板初始化函数;
118.s07:根据连接器的背板类型调用注册各种回调函数;
119.s08:遍历所有的设备设置其port的配置空间使其支持热拔插;
120.s09:通过i2c确定各个连接器上挂载的设备的在位状态;
121.s10:根据设备的在位状态设置配置空间的slot_status、link_status寄存器;
122.s11:注册所有设备的主机中断;
123.s12:设置连接器对应的gpio的属性信息;
124.s13:注册背板中断;
125.s14:记录事件日志,执行步骤s04;
126.如图2所示,本发明实施例提供一种管理背板设备热插拔的系统,包括adaptor、主控芯片、背板,背板上设置有用于连接硬盘的若干个插槽;
127.adaptor与主控芯片连接;
128.主控芯片分别与背板上的插槽连接;
129.如图3所示,所述系统的热拔插管理流程如下:
130.(1)整个流程起端为背板上设备发生热插拔。热插拔之后,背板会通过gpio向主控芯片发送一个中断(图3中的中断1);
131.(2)主控芯片接收到中断之后会通过i2c读取背板上设备的在位状态。然后将在位状态通过设置配置空间寄存器中的状态,并向adaptor发送一个中断(图3中的中断2);
132.(3)adaptor接收到主控芯片发送的中断后会读取配置空间中设备的在位状态,然后根据设备的在位状态控制背板上设备的电源与并设置对应配置空间寄存器状态;
133.(4)adaptor处理完成后会向主控芯片发送一个中断(图3中的中断3),以告诉主控芯片处理完成;
134.(5)主控芯片接收到adaptor发送的中断,发现配置空间寄存器状态发生改变后,通过i2c操作对应背板上的led。
135.本技术提供的管理方法中,adaptor控制led,是通过更改设备的配置空间中的slot_ctrl寄存器即slot_ctrl寄存器来实现的,主控芯片发现slot_ctrl寄存器被更改会通过i2c操作背板上的led。
136.adaptor控制背板插槽的电源是通过slimelane线缆直接控制,不经过主控芯片。
137.步骤(2)中,主控芯片中设置有中断服务处理线程,如图4所示,主控芯片处理背板中断的流程如下:
138.(21)主控芯片接收背板中断;
139.(22)中断服务函数根据发生中断的gpio设置全局位图,并将接收到的中断进行清除;唤醒中断服务处理线程,在这里,中断服务处理线程为hotplughdr线程;
140.(23)中断服务处理线程复制全局bitmap;
141.(24)参照复制的bitmap按位清理全局bitmap;
142.(25)根据bitmap解析中断gpio号并找到相应的connector结构体;
143.(26)根据connector的背板类型通过i2c获取该connector所挂drive的在位情况;
144.(27)根据发生热拔插drive的pirtid设置对应pcie配置空间的slot_status、link_status寄存器;
145.(28)向adaptor发送中断。
146.需要说明的是,(1)hotplughdr线程是一个常驻的线程,并且会一直循环等待背板与adaptor中断服务函数唤醒,并处理事务;
147.(2)在中断服务函数中仅仅执行设置全局bitmap位、清中断、唤醒hotplughdr线程,不做其事情,可以有效减少中断服务函数的运行时间。
148.(3)bitmap是一个两个32位的无符号数,其中一个32位数每一位都代表一个gpio中断,某bit位为0,则说明该位代表的gpio没有接收到中断,若某bit位为1,则说明该位代表代表的gpio接收到了中断,需要进行处理。并且bitmap可以将多个热插拔中断合并在一起处理——当同一条connector中断过多时,该connector的所有的中断服务函数都会改同一个bitmap位。另外一个32位数每一位代表一个adaptor发送过来的中断;
149.(4)由于更改bitmap在唤醒线程之前,并且hotplughdr首先执行将全局bitmap复制一份,根据复制的bitmap按位清理全局bitmap,若在hotplughdr运行过程中发生了多次
热插拔中断,可以保证最后一次中断之后,hotplughdr会再执行一次查询drive在位状态的操作,保证drive的最终状态正确,中间的状态不保证,且没有必要保证。按位清理全局bitmap而不是将整个bitmap全部清零可以有效的防止错误清理发生的其他connector的中断。drive配置文件如图7所示。
150.如图5所示,步骤(5)中,主控芯片与adaptor的交互流程如下:
151.(51)主控芯片接收到adaptor中断;
152.(52)中断服务函数根据发生中断的gpio设置全局位图,并将接收到的中断进行清除;唤醒hotplughdr线程;
153.(53)hotplughdr线程复制全局bitmap;
154.(54)参照复制的bitmap按位清理全局bitmap;
155.(55)根据bitmap解析发生了中断的port组;其中一个port组中的所有port存在一块共用的配置空间;也就是说,根据bitmap解析哪个group发生了中断;
156.(56)通过读取配置空间中port状态寄存器,获取发生中断的port;也就是,通过port_intr_status寄存器获取哪个port发生了中断;
157.(57)执行oem提供的回调函数或默认的记录事件日志函数。
158.需要说明的是,一个group中的所有的port有一块共用的配置空间,adaptor产生的中断标志位、port_intr_status寄存器均在该配置空间中。
159.步骤(57)中,执行oem提供的回调函数的目的实际上是对背板led更的控制过程;主控芯片中设置有ledctrl线程,对led的控制过程如下:
160.读取发生中断的port所在配置空间中slot_ctrl寄存器中的led状态位;
161.判断状态位是否有变化;
162.若是,调用设备对应的用于设置led灯状态的回调函数点灯;
163.若否,选择下一个设备,执行步骤判断状态位是否有变化;
164.需要说明的是,通过上述,adaptor处理过程中会设置背板上灯的状态,也就是,会设置配置空间中slot_ctrl寄存器中的led状态位,ledctrl线程会轮训该位,若发生改变则调用connector对应的设置led状态回调函数点灯。在这里,drive存储在循环链表中,所以不存在下一个drive为空的情况。
165.实际应用时,创建中断服务处理线程并进行初始化;中断服务处理线程用于处理背板中断和主机中断;创建led控制线程,led控制线程用于控制led灯状态。中断服务处理线程,即hotplughdr线程和led控制线程,即ledctrl线程,设置在主控芯片,初始化时,如图6所示,中断服务处理线程初始化的步骤包括:
166.s01:从非易失存储介质中读取配置文件;
167.s02:将连接器相关配置文件转化为结构体并挂载在链表中;
168.s03:将设备相关配置文件转化为结构体并挂载在对应的连接器下;
169.s04:判断是否是最后一个连接器;
170.若是,执行步骤s05,若否,执行步骤s06;
171.s05:循环处理背板中断与主机中断;
172.s06:根据连接器的背板类型调用相应的背板初始化函数;
173.s07:根据连接器的背板类型调用注册各种回调函数;
174.s08:遍历所有的设备设置其port的配置空间使其支持热拔插;
175.s09:通过i2c确定各个连接器上挂载的设备的在位状态;
176.s10:根据设备的在位状态设置配置空间的插槽状态、连接状态寄存器;
177.s11:注册所有设备的主机中断;
178.s12:设置连接器对应的gpio的属性信息;
179.s13:注册背板中断;
180.s14:记录事件日志,执行步骤s04;
181.需要说明的是,部分初始化流程放在hotplughdr线程中的原因是该部分初始化需要使用i2c总线时间较长;主控芯片较adaptor启动时间快很多,drive状态之后设置slot_status、link_status寄存器,主机启动之后会读取这两个寄存器,方便adaptor展示在位状态;gpio设置支持中断mask是因为若电平不稳,可能会同时出现大量的中断,会让主控芯片的一个核一直处于中断服务函数中,造成其他线程无法正常工作。
182.初始化线程的相关配置文件分两部分:connector、drive配置文件及作用如图7、8所示。
183.部分实现数据结构如下:
184.[0185][0186]
其中:bplanemonitorfunctions中实现了各个背板协议的获取drive状态、设置灯状态、获取灯状态、获取盘类型等函数。
[0187]
[0188][0189]
本发明实施例还提供一种服务器,所述服务器包括上述实施例所述的管理背板设备热插拔的系统。
[0190]
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

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

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

相关文献