具体实施方式
为了使本发明实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为本发明实施例一提供的一种热插拔方法的流程图,如图1所示,该方法包括:
步骤101、接收热插拔卡发送的卡移除信号,该热插拔卡包括至少二个PCIE端点设备;
本实施例中,该热插拔卡可以为HBA卡。本实施例中各步骤可以由热插拔控制装置执行。
步骤102、根据卡移除信号,生成与PCIE端点设备对应的卡移除请求;
本实施例中,可根据卡移除信号和与PCIE端点设备对应的虚拟插槽的 状态信息,生成与PCIE端点设备对应的卡移除请求,与PCIE端点设备对应的卡移除请求携带与PCIE端点设备对应的虚拟插槽的状态信息。
本实施例中,热插拔控制装置可根据获知的与热插拔卡对应的插槽的状态信息和热插拔卡中PCIE端点设备的数量,生成与PCIE端点设备对应的虚拟插槽的状态信息。具体地,当热插拔卡每次插入热插拔控制装置或者热插拔卡每次上电,热插拔控制装置会获知与热插拔卡对应的插槽的状态信息。每个热插拔卡对应于一个插槽,而热插拔卡中包括至少二个PCIE端点设备,因此热插拔卡中的PCIE端点设备对应于一个插槽。热插拔控制装置根据热插拔卡中PCIE端点设备的数量为每个PCIE端点设备设置与PCIE端点设备对应的虚拟插槽,并根据热插拔卡对应的插槽的状态信息生成与PCIE端点设备对应的虚拟插槽的状态信息。其中,每个PCIE端点设备对应于一个虚拟插槽,与PCIE端点设备对应的虚拟插槽的状态信息可用于标识该PCIE端点设备。例如,插槽的状态信息可以包括实际槽位信息、在位信号,按钮信号和LED指示信号,而生成的与PCIE端点设备对应的虚拟插槽的状态信息可以包括虚拟槽位信息、在位信号,按钮信号和LED指示信号。其中,虚拟槽位信息不同于实际槽位信息,该虚拟槽位信息为虚拟插槽的槽位信息;而虚拟插槽的状态信息中的在位信号、按钮信号和LED指示信号可以为插槽的状态信息中的在位信号、按钮信号和LED指示信号。进一步地,插槽的状态信息和生成的虚拟插槽的状态信息均还可以包括其它信息,在此不一一列举。
步骤103、将与PCIE端点设备对应的卡移除请求发送给PCIE交换器,以使PCIE交换器对PCIE端点设备进行下电操作;
本实施例中,需要将与每个PCIE端点设备对应的卡移除请求发送给PCIE交换器,以使PCIE交换器对每个PCIE端点设备进行下电操作。
本实施例中,PCIE交换器接收到与PCIE端点设备对应的卡移除请求可携带与该PCIE端点设备对应的虚拟插槽的状态信息。PCIE交换器在接收到与PCIE端点设备对应的卡移除请求后,可根据与PCIE端点设备对应的卡移 除请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡移除请求的为该PCIE端点设备,并对该PCIE端点设备进行下电操作。
具体地,PCIE端点设备可从热插拔控制装置中获取与PCIE端点设备对应的虚拟插槽的状态信息。根据与PCIE端点设备对应的卡移除请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡移除请求的为该PCIE端点设备具体包括:将获取的与PCIE端点设备对应的虚拟插槽的状态信息与卡移除请求中携带的与PCI E端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出发送卡移除请求的为该PCIE端点设备。
步骤104、向热插拔卡发送电源关闭指令,以关闭该热插拔卡的电源。
本实施例中,根据接收到的热插拔卡的卡移除信号生成每个PCIE端点设备的卡移除请求,由PCIE交换器根据PCIE端点设备的卡移除请求完成对每个PCIE端点设备的下电操作,并在PCIE交换器完成对每个PCIE端点设备的下电操作之后关闭热插拔卡的电源,此时当将热插拔卡拔出时对该热插拔卡中所有的PCIE端点设备执行的均是安全拔出操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量的。
图2为本发明实施例二提供的一种热插拔方法的流程图,如图2所示,该方法包括:
步骤201、热插拔控制装置接收热插拔卡发送的卡移除信号,该热插拔卡包括第一PCIE端点设备和第二PCIE端点设备;
本实施例中,以热插拔卡包括二个PCIE端点设备为例进行详细描述,但本发明实施例并不限于热插拔卡包括二个PCIE端点设备。
步骤202、热插拔控制装置根据卡移除信号,生成与第一PCIE端点设备对应的卡移除请求和与第二PCI E端点设备对应的卡移除请求;
具体地,本实施例中,热插拔控制装置可根据卡移除信号和与第一PCIE 端点设备对应的虚拟插槽的状态信息,生成与第一PCI E端点设备对应的卡移除请求,该与第一PCIE端点设备对应的卡移除请求中携带与第一PCIE端点设备对应的虚拟插槽的状态信息;以及可根据卡移除信号和与第二PCIE端点设备对应的虚拟插槽的状态信息,生成与第二PCIE端点设备对应的卡移除请求,该与第二PCIE端点设备对应的卡移除请求中携带与第二PCIE端点设备对应的虚拟插槽的状态信息。
以下步骤,热插拔控制装置依次将与PCIE端点设备对应的卡移除请求发送给PCIE交换器,例如:先将与第一PCIE端点设备对应的卡移除请求发送给PCIE交换器,再将与第二PCIE端点设备对应的卡移除请求发送给PCIE交换器,具体操作如下:
步骤203、热插拔控制装置将与第一PCIE端点设备对应的卡移除请求发送给PCIE交换器;
具体地,热插拔控制装置向PCIE交换器的根联合体发送与第一PCIE端点设备对应的卡移除请求。
步骤204、PCIE交换器根据与第一PCIE端点设备对应的卡移除请求中携带的与第一PCIE端点设备对应的虚拟插槽的状态信息获知发送卡移除请求的为第一PCIE端点设备;
本实施例中,PCIE交换器可将从热插拔控制装置中获取的与第一PCIE端点设备对应的虚拟插槽的状态信息与卡移除请求中携带的与第一PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡移除请求对应第一PCIE端点设备。
具体地,PCIE交换器可调用热插拔系统驱动程序从热插拔控制装置中读取第一PCIE端点设备的虚拟插槽的状态信息。
步骤205、PCIE交换器检测与第一PCIE端点设备对应的卡移除请求是否有效,如果是则执行步骤206,如果否则执行步骤213;
步骤206、PCIE交换器对第一PCIE端点设备进行下电操作;
步骤206具体包括:
步骤2061、PCIE交换器停止对第一PCIE端点设备执行新操作;
其中,执行新操作可以为:发送新的访问请求、继续执行未完成的访问请求或者发送生成的中断等。具体地,PCIE交换器停止对第一PCIE端点设备执行新操作可以通过停止第一PCIE端点设备的驱动程序来实现。
步骤2062、PCIE交换器断开第一PCIE端点设备的端口与PCIE交换器的端口之间的链路;
断开第一PCIE端点设备的端口与PCIE交换器的端口之间的链路,会引起链路两端的第一PCIE端点设备的端口和PCIE交换器的端口被禁用。
其中,PCIE交换器的端口可以为根端口。
步骤2063、热插拔控制装置接收PCIE交换器发送的第一PCIE端点设备的PCIE参考时钟关闭命令,并将该第一PCIE端点设备的PCIE参考时钟关闭命令发送给第一PCIE端点设备的时钟驱动器;
步骤2064、第一PCIE端点设备的时钟驱动器关闭PCIE参考时钟;
步骤2065、热插拔控制装置接收PCIE交换器发送的第一PCIE端点设备的电源关闭命令;
步骤2066、热插拔控制装置向PCIE交换器返回第一PCIE端点设备的电源关闭响应;
本实施例中,由于热插拔卡包括二个PCIE端点设备,因此热插拔控制装置在接收到PCIE交换器发送的第一PCIE端点设备的电源关闭命令之后,并不将该第一PCIE端点设备的电源关闭命令发送给热插拔卡,而是直接向PCIE交换器返回第一PCIE端点设备的电源关闭响应,PCIE交换器在接收到第一PCIE端点设备的电源关闭响应后认为该第一PCIE端点设备所在的热插拔卡的电源已关闭。
步骤207、热插拔控制装置将与第二PCIE端点设备对应的卡移除请求发送给PCIE交换器;
具体地,热插拔控制装置向PCIE交换器的根联合体发送与第二PCIE端点设备对应的卡移除请求。
步骤208、PCIE交换器根据与第二PCIE端点设备对应的卡移除请求中携带的与第二PCIE端点设备对应的虚拟插槽的状态信息获知发送卡移除请求的为第二PCIE端点设备;
本实施例中,PCIE交换器可将从热插拔控制装置中获取的与第二PCIE端点设备对应的虚拟插槽的状态信息与卡移除请求中携带的与第二PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡移除请求对应第二PCIE端点设备。
具体地,PCIE交换器可调用热插拔系统驱动程序从热插拔控制器中读取第二PCIE端点设备的虚拟插槽的状态信息。
步骤209、PCIE交换器检测与第二PCIE端点设备对应的卡移除请求是否有效,如果是则执行步骤210,如果否则执行步骤213;
步骤210、PCIE交换器对第二PCIE端点设备进行下电操作;
步骤210具体包括:
步骤2101、PCIE交换器停止对第二PCIE端点设备执行新操作;
其中,执行新操作可以为:发送新的访问请求、继续执行未完成的访问请求或者发送生成的中断等。具体地,PCIE交换器停止对第二PCIE端点设备的访问操作可以通过停止第二PCIE端点设备的驱动程序来实现。
步骤2102、PCIE交换器断开第二PCIE端点设备的端口与PCIE交换器的端口之间的链路;
断开第二PCIE端点设备的端口与PCIE交换器的端口之间的链路,会引起链路两端的第二PCIE端点设备的端口和PCIE交换器的端口被禁用。
其中,PCI E交换器的端口可以为根端口。
步骤2103、热插拔控制装置接收PCIE交换器发送的第二PCIE端点设备的PCIE参考时钟关闭命令,并将该第二PCIE端点设备的PCIE参考时钟 关闭命令发送给第二PCIE端点设备的时钟驱动器;
步骤2104、第二PCIE端点设备的时钟驱动器关闭PCIE参考时钟;
步骤2105、热插拔控制装置接收PCIE交换器发送的第二PCIE端点设备的电源关闭命令;
步骤2106、热插拔控制装置向PCIE交换器返回第二PCIE端点设备的电源关闭响应;
本实施例中,热插拔控制装置在接收到PCIE交换器发送的第二PCIE端点设备的电源关闭命令之后,并不将该第二PCIE端点设备的电源关闭命令发送给热插拔卡,而是直接向PCIE交换器返回第二PCIE端点设备的电源关闭响应,PCIE交换器在接收到第二PCIE端点设备的电源关闭响应后认为该第二PCIE端点设备所在的热插拔卡的电源已关闭。
步骤211、热插拔控制装置向热插拔卡发送电源关闭指令;
本实施例中,由于热插拔卡仅包括二个PCIE端点设备,因此在PCIE交换器完成对二个PCIE端点设备进行的下电操作之后,热插拔控制装置即可以向热插拔卡发送电源关闭指令,以关闭热插拔卡的电源。
步骤212、热插拔卡接收到电源关闭指令后关闭电源,流程结束;
进一步地,本步骤中,热插拔卡在关闭电源之后还会关闭电源指示灯,以提示用户可以安全的移除该热插拔卡。
步骤213、PCIE交换器拒绝执行卡移除请求。
本实施例中该方法还可以为:热插拔控制装置同时将与第一PCIE端点设备对应的卡移除请求和与第二PCIE端点设备对应的卡移除请求发送给PCIE交换器;并执行步骤204至步骤206以及步骤208至步骤210;再执行步骤211至步骤212。
图3为本发明实施例三提供的一种热插拔方法的流程图,如图3所示,该方法包括:
步骤301至步骤304与实施例二中的步骤201至步骤204相同,此处不 再赘述。
步骤305、热插拔控制装置接收PCIE交换器发送的电源指示器闪烁指令,并将该电源指示器闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器闪烁指令后开始闪烁;
在电源指示器开始闪烁之后的规定时间内,如果热插拔卡向热插拔控制装置发送中断卡移除操作信号,则热插拔控制装置会向PCIE交换设备发送与第一PCIE端点设备对应的中断卡移除请求,从而停止卡移除操作;如果热插拔卡未向热插拔控制装置发送任何中断卡移除操作信号,则继续执行步骤306。
步骤306、PCIE交换器检测与第一PCIE端点设备对应的卡移除请求是否有效,如果是则执行步骤307,如果否则执行步骤317;
在PCIE交换设备检测与第一PCIE端点设备对应的卡移除请求是否有效期间,电源指示器会一直呈闪烁状态。
步骤307、热插拔控制装置接收PCIE交换器发送的电源指示器停止闪烁指令,并将该电源指示器停止闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器停止闪烁指令后停止闪烁;
步骤308至步骤310与实施例二中步骤206至步骤208相同,此处不再赘述。
步骤311、热插拔控制装置接收PCIE交换器发送的电源指示器闪烁指令,并将该电源指示器闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器闪烁指令后开始闪烁;
因PCIE交换器已经完成了对第一PCIE端点设备的下电操作,因此在电源指示器开始闪烁之后,不允许热插拔卡向热插拔控制装置发送任何中断卡移除操作信号。
步骤312、PCIE交换器检测与第二PCIE端点设备对应的卡移除请求是否有效,如果是则执行步骤313,如果否则执行步骤317;
在PCIE交换设备检测与第二PCIE端点设备对应的卡移除请求是否有效期间,电源指示器会一直呈闪烁状态。
步骤313、热插拔控制装置接收PCIE交换器发送的电源指示器停止闪烁指令,并将该电源指示器停止闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器停止闪烁指令后停止闪烁;
步骤314至步骤316与实施例二中步骤210至步骤212相同,此处不再赘述。
步骤317、PCIE交换器拒绝执行卡移除请求。
上述实施例三和实施例四中,根据接收到的热插拔卡的卡移除信号生成每个PCIE端点设备的卡移除请求,由PCIE交换器根据每个PCIE端点设备的卡移除请求依次完成对每个PCIE端点设备的下电操作,并在PCIE交换器完成对每个PCI E端点设备的下电操作之后关闭热插拔卡的电源,此时当将热插拔卡拔出时对该热插拔卡中所有的PCIE端点设备执行的均是安全拔出操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量的。。
图4为本发明实施例四提供的一种热插拔方法的流程图,如图4所示,该方法包括:
步骤401、接收热插拔卡发送的卡插入信号,该热插拔卡包括至少二个PCIE端点设备;
本实施例中,该热插拔卡可以为HBA卡。本实施例中各步骤可以由热插拔控制装置执行
步骤402、根据卡插入信号,生成与PCIE端点设备对应的卡插入请求;
本实施例中,可根据卡插入信号和与PCIE端点设备对应的虚拟插槽的状态信息,生成与PCIE端点设备对应的卡插入请求,与PCIE端点设备对应的卡插入请求携带与PCIE端点设备对应的虚拟插槽的状态信息。
步骤403、将与PCIE端点设备对应的卡插入请求发送给PCIE交换器,以使PCIE交换器对PCIE端点设备进行上电操作;
本实施例中,需要将与每个PCIE端点设备对应的卡移除请求依次发送给PCIE交换器,以使PCIE交换器对每个PCIE端点设备进行上电操作。
本实施例中,PCIE交换器接收到与PCIE端点设备对应的卡插入请求可携带与该PCIE端点设备对应的虚拟插槽的状态信息。PCIE交换器在接收到与PCIE端点设备对应的卡插入请求后,可根据与PCIE端点设备对应的卡插入请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡插入请求的为该PCIE端点设备,并对该PCIE端点设备进行上电操作。
具体地,PCIE端点设备可从热插拔控制装置中获取与PCIE端点设备对应的虚拟插槽的状态信息。根据与PCIE端点设备对应的卡插入请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡插入请求的为该PCIE端点设备具体包括:将获取的与PCIE端点设备对应的虚拟插槽的状态信息与卡插入请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡插入请求对应该PCIE端点设备。
步骤404、向热插拔卡发送电源开启指令,以开启该热插拔卡的电源。
本实施例中,根据接收到的热插拔卡的卡插入信号生成每个PCIE端点设备的卡插入请求,由PCIE交换器根据每个PCIE端点设备的卡插入请求完成对每个PCIE端点设备的上电操作,并在PCIE交换器完成对每个PCIE端点设备的上电操作之后开启热插拔卡的电源,此时对该热插拔卡中所有的PCIE端点设备执行的均是安全插入操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量。
图5为本发明实施例五提供的一种热插拔方法的流程图,如图5所示,该方法包括:
步骤501、热插拔控制装置接收热插拔卡发送的卡插入信号,该热插拔卡包括第一PCIE端点设备和第二PCIE端点设备;
本实施例中,以热插拔卡包括二个PCIE端点设备为例进行详细描述,但本发明实施例并不限于热插拔卡包括二个PCIE端点设备。
步骤502、热插拔控制装置根据卡插入信号,生成与第一PCIE端点设备对应的卡插入请求和与第二PCIE端点设备对应的卡插入请求;
具体地,本实施例中,热插拔控制装置可根据卡插入信号和与第一PCIE端点设备对应的虚拟插槽的状态信息,生成与第一PCIE端点设备对应的卡插入请求,该与第一PCIE端点设备对应的卡插入请求中携带与第一PCIE端点设备对应的虚拟插槽的状态信息;以及可根据卡插入信号和与第二PCIE端点设备对应的虚拟插槽的状态信息,生成与第二PCIE端点设备对应的卡插入请求,该与第二PCIE端点设备对应的卡插入请求中携带与第二PCIE端点设备对应的虚拟插槽的状态信息。
以下步骤,热插拔控制装置依次将与PCIE端点设备对应的卡插入请求发送给PCIE交换器,例如:先将与第一PCIE端点设备对应的卡插入请求发送给PCIE交换器,再将与第二PCIE端点设备对应的卡插入请求发送给PCIE交换器,具体操作如下:
步骤503、热插拔控制装置将与第一PCI E端点设备对应的卡插入请求发送给PCIE交换器;
具体地,热插拔控制装置向PCIE交换器的根联合体发送与第一PCIE端点设备对应的卡插入请求。
步骤504、PCIE交换器根据与第一PCIE端点设备对应的卡插入请求中携带的与第一PCIE端点设备对应的虚拟插槽的状态信息获知发送卡插入请求的为第一PCIE端点设备;
本实施例中,PCIE交换器可将从热插拔控制装置中获取的与第一PCIE端点设备对应的虚拟插槽的状态信息与卡插入请求中携带的与第一PCIE端 点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡插入请求对应第一PCIE端点设备。
具体地,PCIE交换器可调用热插拔系统驱动程序从热插拔控制器中读取第一PCIE端点设备的虚拟插槽的状态信息。
步骤505、PCIE交换器检测与第一PCIE端点设备对应的卡插入请求是否有效,如果是则执行步骤506,如果否则执行步骤513;
步骤506、PCIE交换器对第一PCIE端点设备进行上电操作;
步骤506具体包括:
步骤5061、PCIE交换器向热插拔控制装置发送第一PCIE端点设备的电源开启命令;
步骤5062、热插拔控制装置向PCIE交换器返回第一PCIE端点设备的电源开启响应;
本实施例中,由于热插拔卡包括二个PCIE端点设备,因此热插拔控制装置在接收到PCIE交换器发送的第一PCIE端点设备的电源开启命令之后,并不将该第一PCIE端点设备的电源开启命令发送给热插拔卡,而是直接向PCIE交换器返回第一PCIE端点设备的电源开启响应,PCIE交换器在接收到第一PCIE端点设备的电源开启响应后认为该第一PCIE端点设备所在的热插拔卡的电源已开启。
步骤5063、热插拔控制装置接收PCIE交换器发送的第一PCIE端点设备的PCIE参考时钟开启命令,并将该第一PCIE端点设备的PCIE参考时钟开启命令发送给第一PCIE端点设备的时钟驱动器;
步骤5064、第一PCIE端点设备的时钟驱动器开启PCIE参考时钟;
步骤5065、PCIE交换器建立第一PCIE端点设备的端口与PCIE交换器的端口之间的链路;
建立第一PCIE端点设备的端口与PCIE交换器的端口之间的链路之后,该链路两端的第一PCIE端点设备的端口和PCIE交换器的端口也被开启。
其中,PCI E交换器的端口可以为根端口。
步骤5066、PCIE交换器开启对第一PCIE端点设备的操作功能;
其中,对第一PCIE端点设备的操作功能可以为:发送访问请求或者发送生成的中断等。具体地,PCIE交换器开启对第一PCIE端点设备的操作功能可以通过开启第一PCIE端点设备的驱动程序来实现。
步骤507、热插拔控制装置将与第二PCIE端点设备对应的卡插入请求发送给PCIE交换器;
具体地,热插拔控制装置向PCIE交换器的根联合体发送与第二PCIE端点设备对应的卡插入请求。
步骤508、PCIE交换器根据与第二PCIE端点设备对应的卡插入请求中携带的第二PCIE端点设备对应的虚拟插槽的状态信息获知发送卡插入请求的为第二PCIE端点设备;
本实施例中,PCIE交换器可将从热插拔控制装置中获取的与第二PCIE端点设备对应的虚拟插槽的状态信息与卡插入请求中携带的与第二PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡插入请求对应第二PCIE端点设备。
具体地,PCIE交换器可调用热插拔系统驱动程序从热插拔控制器中读取第二PCIE端点设备的虚拟插槽的状态信息。
步骤509、PCIE交换器检测与第二PCIE端点设备对应的卡插入请求是否有效,如果是则执行步骤510,如果否则执行步骤513;
步骤510、PCIE交换器对第二PCIE端点设备进行下电操作;
步骤510具体包括:
步骤5101、PCIE交换器向热插拔控制装置发送第二PCIE端点设备的电源开启命令;
步骤5102、热插拔控制装置向PCIE交换器返回第二PCIE端点设备的电源开启响应;
本实施例中,由于热插拔卡包括二个PCIE端点设备,因此热插拔控制装置在接收到PCIE交换器发送的第二PCIE端点设备的电源开启命令之后,并不将该第二PCIE端点设备的电源开启命令发送给热插拔卡,而是直接向PCIE交换器返回第二PCIE端点设备的电源开启响应,PCIE交换器在接收到第二PCIE端点设备的电源开启响应后认为该第二PCIE端点设备所在的热插拔卡的电源已开启。
步骤5103、热插拔控制装置接收PCIE交换器发送的第二PCIE端点设备的PCIE参考时钟开启命令,并将该第二PCIE端点设备的PCIE参考时钟开启命令发送给第二PCIE端点设备的时钟驱动器;
步骤5104、第二PCIE端点设备的时钟驱动器开启PCIE参考时钟;
步骤5105、PCIE交换器建立第二PCIE端点设备的端口与PCIE交换器的端口之间的链路;
建立第二PCIE端点设备的端口与PCIE交换器的端口之间的链路之后,该链路两端的第二PCIE端点设备的端口和PCIE交换器的端口也被开启。
其中,PCIE交换器的端口可以为根端口。
步骤5106、PCIE交换器开启对第二PCIE端点设备的操作功能;
其中,对第二PCIE端点设备的操作功能可以为:发送访问请求或者发送中断等。具体地,PCIE交换器开启对第二PCIE端点设备的操作功能可以通过开启第二PCIE端点设备的驱动程序来实现。
步骤511、热插拔控制装置向热插拔卡发送电源开启指令;
本实施例中,由于热插拔卡仅包括二个PCIE端点设备,因此在PCIE交换器完成对二个PCIE端点设备进行的上电操作之后,热插拔控制装置即可以向热插拔卡发送电源开启指令,以开启热插拔卡的电源。
步骤512、热插拔卡接收到电源开启指令后开启电源,流程结束;
进一步地,本步骤中,热插拔卡在开启电源之后还会开启电源指示灯,以提示用户可以安全的移除该热插拔卡。
步骤513、PCIE交换器拒绝执行卡插入请求。
本实施例中该方法还可以为:热插拔控制装置同时将与第一PCIE端点设备对应的卡插入请求和与第二PCIE端点设备对应的卡插入请求发送给PCIE交换器;并执行步骤504至步骤506以及步骤508至步骤510;再执行步骤511至步骤512。
图6为本发明实施例六提供的一种热插拔方法的流程图,如图6所示,该方法包括:
步骤601至步骤604与实施例二中的步骤501至步骤504相同,此处不再赘述。
步骤605、热插拔控制装置接收PCIE交换器发送的电源指示器闪烁指令,并将该电源指示器闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器闪烁指令后开始闪烁;
在电源指示器开始闪烁之后的规定时间内,如果热插拔卡向热插拔控制装置发送中断卡插入操作信号,则热插拔控制装置会向PCIE交换设备发送与第一PCIE端点设备对应的中断卡插入请求,从而停止卡插入操作;如果热插拔卡未向热插拔控制装置发送任何中断卡插入操作信号,则继续执行步骤606。
步骤606、PCIE交换器检测与第一PCIE端点设备对应的卡插入请求是否有效,如果是则执行步骤607,如果否则执行步骤617;
在PCIE交换设备检测与第一PCIE端点设备对应的卡插入请求是否有效期间,电源指示器会一直呈闪烁状态。
步骤607、热插拔控制装置接收PCIE交换器发送的电源指示器停止闪烁指令,并将该电源指示器停止闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器停止闪烁指令后停止闪烁;
步骤608至步骤610与实施例二中步骤506至步骤508相同,此处不再赘述。
步骤611、热插拔控制装置接收PCIE交换器发送的电源指示器闪烁指令,并将该电源指示器闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器闪烁指令后开始闪烁;
因PCI E交换器已经完成了对第一PCIE端点设备的上电操作,因此在电源指示器开始闪烁之后,不允许热插拔卡向热插拔控制装置发送任何中断卡插入操作信号。
步骤612、PCIE交换器检测与第二PCIE端点设备对应的卡插入请求是否有效,如果是则执行步骤613,如果否则执行步骤617;
在PCIE交换设备检测与第二PCIE端点设备对应的卡插入请求是否有效期间,电源指示器会一直呈闪烁状态。
步骤613、热插拔控制装置接收PCIE交换器发送的电源指示器停止闪烁指令,并将该电源指示器停止闪烁指令发送给热插拔卡的电源指示器,电源指示器在接收到该电源指示器停止闪烁指令后停止闪烁;
步骤614至步骤616与实施例二中步骤510至步骤512相同,此处不再赘述。
步骤617、PCIE交换器拒绝执行卡插入请求。
上述实施例五和实施例六中,根据接收到的热插拔卡的卡插入信号生成每个PCIE端点设备的卡插入请求,由PCIE交换器根据每个PCIE端点设备的卡插入请求依次完成对每个PCIE端点设备的上电操作,并在PCIE交换器完成对每个PCIE端点设备的上电操作之后开启热插拔卡的电源,此时对该热插拔卡中所有的PCIE端点设备执行的均是安全插入操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量。
图7为本发明实施例七提供的一种热插拔控制装置的结构示意图,如图7所示,该装置包括信号接收模块11、请求生成模块12和请求发送模块13。
信号接收模块11用于接收热插拔卡发送的卡移除信号,该热插拔卡包括至少二个PCIE端点设备;请求生成模块12用于根据卡移除信号,生成与PCIE端点设备对应的卡移除请求;请求发送模块13用于将与PCIE端点设备对应的卡移除请求发送给PCIE交换器,以使PCIE交换器对PCIE端点设备进行下电操作;以及用于向热插拔卡发送电源关闭指令,以关闭该热插拔卡的电源。或者,信号接收模块11用于接收热插拔卡发送的卡插入信号,该热插拔卡包括至少二个PCIE端点设备;请求生成模块12用于根据卡插入信号,生成与PCIE端点设备对应的卡插入请求;请求发送模块13用于将与PCIE端点设备对应的卡插入请求发送给PCIE交换器,以使PCIE交换器对PCIE端点设备进行上电操作;以及用于向热插拔卡发送电源开启指令,以开启该热插拔卡的电源。
本实施例中热插拔控制装置,根据接收到的热插拔卡的卡移除信号生成每个PCIE端点设备的卡移除请求,由PCIE交换器根据每个PCIE端点设备的卡移除请求完成对每个PCIE端点设备的下电操作,并在PCIE交换器完成对每个PCI E端点设备的下电操作之后关闭热插拔卡的电源,此时当将热插拔卡拔出时对该热插拔卡中所有的PCIE端点设备执行的均是安全拔出操作,采用本实施例中的方法可以实现对包括多个PCIE端点设备的热插拔卡执行安全拔出操作,或者根据接收到的热插拔卡的卡插入信号生成每个PCIE端点设备的卡插入请求,由PCIE交换器根据每个PCIE端点设备的卡插入请求完成对每个PCIE端点设备的上电操作,并在PCIE交换器完成对PCIE端点设备的上电操作之后开启热插拔卡的电源,此时对该热插拔卡中所有的PCIE端点设备执行的均是安全插入操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量。
图8为本发明实施例八提供的一种热插拔控制装置的结构示意图,如图 8所示,本实施例在上述实施例七的基础上,当信号接收模块11接收到卡移除信号时,请求生成模块12可以根据所述卡移除信号和与PCIE端点设备对应的虚拟插槽的状态信息,生成与PCIE端点设备对应的卡移除请求,所述卡移除请求携带与PCIE端点设备对应的虚拟插槽的状态信息;当信号接收模块11接收到卡插入信号时,请求生成模块12可以根据卡插入信号和与PCIE端点设备对应的虚拟插槽的状态信息,生成与PCIE端点设备对应的卡插入请求,所述卡插入请求携带与PCIE端点设备对应的虚拟插槽的状态信息。
该装置还可以包括:信息获知模块14用于获知PCIE端点设备的插槽的状态信息和热插拔卡中PCIE端点设备的数量;信息生成模块15用于根据信息获知模块14获知的PCIE端点设备的插槽的状态信息和热插拔卡中PCIE端点设备的数量,生成与PCIE端点设备对应的虚拟插槽的状态信息,所述虚拟插槽的状态信息用于标识PCIE端点设备。
PCIE交换器接收到请求发送模块13发送的与PCIE端点设备对应的卡移除请求后,可与PCIE端点设备对应的卡移除请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡移除请求的为该PCIE端点设备。具体地,PCIE交换器可从信息生成模块15中获取与PCIE端点设备对应的虚拟插槽的状态信息,将获取的与PCIE端点设备对应的虚拟插槽的状态信息与卡移除请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡移除请求对应该PCIE端点设备。并当识别出卡移除请求对应的PCIE端点设备后,对该PCIE端点设备执行下电操作。或者,本实施例中,PCIE交换器接收到请求发送模块13发送的与PCIE端点设备对应的卡插入请求后,可与PCIE端点设备对应的卡插入请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息获知发送卡插入请求的为该PCIE端点设备。具体地,PCIE交换器可从信息生成模块15中获取与PCIE端点设备对应的虚拟插槽的状态信息,将获取的与PCIE端点设备对应的虚 拟插槽的状态信息与卡插入请求中携带的与PCIE端点设备对应的虚拟插槽的状态信息进行匹配,当匹配成功时识别出卡插入请求对应的该PCIE端点设备。并当识别出卡插入请求对应的PCIE端点设备后,对该PCIE端点设备执行上电操作。
本实施例中的热插拔控制装置可根据获知的PCIE端点设备的插槽的状态信息,为PCIE端点设备设置一个虚拟插槽并生成与PCIE端点设备对应的虚拟插槽的状态信息,生成的与PCIE端点设备对应的卡移除请求或者卡插入请求中可携带与该PCIE端点设备对应的虚拟插槽的状态信息,以使PCIE交换器根据从热插拔控制装置获取到的与PCIE端点设备对应的虚拟插槽的状态信息识别出卡移除请求或者卡插入请求对应该PCIE端点设备,并对该PCIE端点设备进行下电或者上电操作,以实现对包括多个PCIE端点设备的热插拔卡执行安全插入或者安全拔出操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量。
图9为本发明实施例九提供的一种热插拔卡系统的结构示意图,如图9所示,该系统包括热插拔控制装置1、PCIE交换器2和热插拔卡3,该热插拔卡3包括至少二个PCIE端点设备。
其中,热插拔控制装置1,用于当接收到热插拔卡3发送的卡移除信号时,根据卡移除信号生成与PCIE端点设备对应的卡移除请求;将与PCIE端点设备对应的卡移除请求发送给PCIE交换器2,以使PCIE交换器2对PCIE端点设备进行下电操作;向热插拔卡3发送电源关闭指令,以关闭热插拔卡3的电源;或者,当接收到热插拔卡3发送的卡插入信号时,根据卡插入信号,生成与PCIE端点设备对应的卡插入请求;将与PCIE端点设备对应的卡插入请求发送给PCIE交换器2,以使PCIE交换器2对PCIE端点设备进行上电操作;向热插拔卡3发送电源开启指令,以开启热插拔卡3的电源;
PCIE交换器2,用于当接收到所述热插拔控制装置1发送的与PCIE端点设备对应的卡移除请求时,对PCIE端点设备进行下电操作;或者当接收到所述热插拔控制装置1发送的与PCIE端点设备对应的卡插入请求时,对PCIE端点设备进行上电操作。
本实施例中热插拔卡,根据卡移除信号生成每个PCIE端点设备的卡移除请求,由PCIE交换器根据每个PCIE端点设备的卡移除请求依次完成对每个PCIE端点设备的下电操作,并在PCIE交换器完成对每个PCIE端点设备的下电操作之后关闭热插拔卡的电源,此时当将热插拔卡拔出时对该热插拔卡中所有的PCI E端点设备执行的均是安全拔出操作,可以实现对包括多个PCIE端点设备的热插拔卡执行安全拔出操作,或者根据卡插入信号生成每个PCIE端点设备的卡插入请求,由PCIE交换器根据每个PCIE端点设备的卡插入请求完成对每个PCIE端点设备的上电操作,并在PCIE交换器完成对PCIE端点设备的上电操作之后开启热插拔卡的电源,此时对该热插拔卡中所有的PCIE端点设备执行的均是安全插入操作,通过采用本发明实施例中的技术方案,当热插拔卡包括多个PCIE端点设备时,仍然能够对热插拔卡执行安全拔出或插入操作,使得增加热插拔卡的接口数量成为可能,有效提高了HBA卡接口数量。
通过以上的实施方式的描述,本领域的普通技术人员可以清楚地了解到本发明实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备、或者服务器、或者其他网络设备执行本发明各个实施例或者实施例的某些部分所述的方法。
以上仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。