掌桥专利:专业的专利平台
掌桥专利
首页

热插拔方法、PCIE设备及管理控制器

文献发布时间:2024-04-18 19:58:30


热插拔方法、PCIE设备及管理控制器

技术领域

本申请涉及计算机技术领域,尤其涉及一种热插拔方法、PCIE设备及管理控制器。

背景技术

热插拔(Hot Swap),即带电插拔,指的是在不关闭计算设备的电源的情况下,将计算设备上的快速外设组件互联(peripheral component interconnect express,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设备支持热插拔时,对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设备基于配置内容进行配置,有助于提高热插拔的配置操作的执行便利性。另外,相对于将配置命令存储于管理控制器中,能够将配置命令与管理控制器解耦,这样,在为PCIE设备新增配置内容时,不必刷新管理控制器的软件代码,使得管理控制器配置用于设置新增配置内容的配置命令,有助于提高管理控制器的通用性。

另一种可能的实现方式中,向PCIE设备发送配置命令,包括:基于系统管理总线(system management bus,SMBus)协议、改进型集成电路总线(improved interintegrated circuit,I3C)协议、管理组件传输(management component transportprotocol,MCTP)协议或网络控制器边带接口(network controller sideband interface,NC-SI)协议,向PCIE设备发送配置命令。

另一种可能的实现方式中,基于I3C协议,向PCIE设备发送配置命令,包括:基于配置命令以及I3C协议中的写操作指令,向PCIE设备发送配置命令。

另一种可能的实现方式中,PCIE设备中还存储有热插拔配置标识;获取热插拔配置信息,包括:获取热插拔配置标识,用于指示PCIE设备中存储有热插拔配置信息或未存储热插拔配置信息;若热插拔配置标识指示存储有热插拔配置信息,获取热插拔配置信息。

该实现方式,通过在PCIE设备中存储热插拔配置标识,用于指示PCIE设备中存储有配置信息或未存储有配置信息,这样,便可以根据热插拔配置标识先确定PCIE设备中是否存储有配置信息,并在热插拔配置标识指示存储有配置信息时,再读取PCIE设备中的热插拔配置信息,由于热插拔配置信息占用的字节数比较多,因此,相对于直接读取PCIE设备获取热插拔配置信息,有助于节省程序处理的开销。

另一种可能的实现方式中,获取热插拔标识、热插拔配置信息或热插拔配置标识,包括:基于系统管理总线SMBus协议、改进型集成电路总线I3C协议、管理组件传输MCTP协议或网络控制器边带接口NC-SI协议,向PCIE设备发送获取请求;其中,获取请求用于请求获取热插拔属性;热插拔属性包括热插拔标识、热插拔配置标识和热插拔配置信息,或者,热插拔属性包括热插拔标识和热插拔配置标识。

该实现方式中,可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,向PCIE设备发送获取请求,从而实现获取热插拔标识、热插拔配置信息或热插拔配置标识,提高了PCIE设备获取信息的多样性和可实现性。

另一种可能的实现方式中,获取请求包括命令字段,命令字段的值指示了热插拔属性。

该实现方式中,获取命令字段的值指示获取请求所请求获取的具体内容,有助于提高从PCIE设备获取不同内容的便利性和可实现性。

另一种可能的实现方式中,基于I3C协议,向PCIE设备发送获取请求,包括:基于I3C协议的读操作命令,向PCIE设备发送获取请求。

可选地,该方法还包括:向中央处理器CPU发送完成通知,该完成通知用于通知PCIE设备的热插拔的配置操作已完成。

该实现方式中,有助于中央处理器CPU了解PCIE设备的热插拔流程所处的阶段,进而有助于中央处理器CPU确定后续所执行的操作。

另一种可能的实现方式中,PCIE设备的热插拔配置信息包括PCIE设备的通用输入输出口(general purpose input/output,GPIO)的配置信息、寄存器的配置信息、端口模式的配置信息和可选只读存储器(option read only memory,OptionROM)的配置信息中的一项或多项。

另一种可能的实现方式中,该方法还包括:若热插拔标识指示PCIE设备不支持热插拔,输出提示信息;提示信息用于提示PCIE设备不支持热插拔。

该实现方式,若热插拔标识指示PCIE设备不支持热插拔,则输出提示信息,以指示PCIE设备不支持热插拔,一方面,在用户将PCIE设备从PCIE槽位热拔出前,通知用户该PCIE设备不支持热插拔,能够避免用户将不支持热插拔的PCIE设备热拔出,导致PCIE设备热拔出时损坏。另一方面,在用户将PCIE设备热插入PCIE槽位后,通知用户该PCIE设备不支持热插拔,能够使得用户及时了解PCIE设备工作异常的原因是PCIE设备不支持热插拔,提高PCIE设备工作异常原因的定位效率,以便于及时解决问题。

另一种可能的实现方式中,在PCIE设备热插入PCIE槽位的情况下,该方法还包括:若热插拔标识指示PCIE设备不支持热插拔,为PCIE设备下电。

该实现方式,在PCIE设备热插入PCIE槽位之后,若热插拔标识指示PCIE设备不支持热插拔,则为PCIE设备下电,这样,可以避免PCIE设备所在的计算设备的中央处理器CPU访问PCIE设备,进而避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

另一种可能的实现方式中,在PCIE设备热插入PCIE槽位的情况下,热插拔的配置操作包括计算设备启动时,中央处理器CPU对PCIE设备执行的多个配置操作中的至少一个配置操作。

该实现方式,能够保证PCIE设备热插入PCIE槽位后,与PCIE设备跟随计算设备重新启动时具有相同的配置,这样,有助于保证PCIE设备的配置的完善性和准确性,避免由于对PCIE设备执行的热插拔的配置操作不完整,导致PCIE设备工作异常或部分功能无法实现,从而有助于PCIE设备的热插拔过程更加完整,进而有助于进一步提高PCIE设备热插入的可靠性。

另一种可能的实现方式中,在PCIE设备被请求热拔出的情况下,热插拔的配置操作用于修改PCIE设备的当前配置内容,以使修改后的配置内容与热拔出相匹配。

该实现方式,在PCIE设备热拔出PCIE槽位之前,提前修改那些可能会导致PCIE设备损坏的配置内容,从而保证PCIE设备的修改后的配置内容与热拔出相匹配,进而有助于避免由于对PCIE设备执行的配置操作不完整,导致PCIE设备热拔出时损坏,有助于提高PCIE设备热拔出的可靠性。

另一种可能的实现方式中,PCIE槽位设置于计算设备上,计算设备包括中央处理器CPU;在PCIE设备热插入PCIE槽位的情况下,对PCIE设备执行热插拔的配置操作,包括:中央处理器CPU为PCIE设备分配PCIE资源。

该实现方式,在确定热插拔标识指示PCIE设备支持热插拔时,再为PCIE设备分配PCIE资源,避免了为不支持热插拔的PCIE设备分配PCIE资源,提高了PCIE资源的利用率。

另一种可能的实现方式中,PCIE槽位设置于计算设备上,计算设备包括中央处理器CPU;在PCIE设备热插入PCIE槽位的情况下,对PCIE设备执行热插拔的配置操作,包括:中央处理器CPU加载PCIE设备的驱动程序。

该实现方式中,由于中央处理器CPU需要通过驱动程序访问PCIE设备,因此,在确定热插拔标识指示PCIE设备支持热插拔时,再加载PCIE设备的驱动程序,能够避免在不确定PCIE设备是否支持热插拔的情况下,中央处理器CPU通过驱动程序访问PCIE设备,进而有助于避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

另一种可能的实现方式中,在PCIE设备被请求热拔出的情况下,对PCIE设备执行热插拔的配置操作,包括:中央处理器CPU释放PCIE设备的PCIE资源。

该实现方式,在PCIE设备从PCIE槽位热拔出之前,再释放PCIE设备的PCIE资源,能够避免不再使用的PCIE设备占用PCIE资源,有助于提高PCIE资源的利用率。

另一种可能的实现方式中,在PCIE设备被请求热拔出的情况下,该方法还包括:接收中央处理器CPU返回的第三完成通知,第三完成通知用于通知PCIE设备已卸载。

该实现方式,有助于管理控制器了解PCIE设备当前的状态,进而继续执行其他操作。

另一种可能的实现方式中,在PCIE设备被请求热拔出的情况下,若热插拔标识指示所述PCIE设备支持热插拔,该方法还包括:中央处理器CPU停止访问PCIE设备。

该实现方式,在PCIE设备从PCIE槽位热拔出之前,中央处理器CPU不再访问PCIE设备,有助于避免在PCIE设备热拔出后,中央处理器CPU继续访问PCIE设备,导致由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

另一种可能的实现方式中,在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槽位属于计算设备的部件,而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设备中还存储有热插拔配置信息,热插拔配置信息指示了对PCIE设备进行热插拔的配置操作时的配置内容。

另一种可能的实现方式中,PCIE设备中还存储有热插拔配置标识,该热插拔配置标识用于指示PCIE设备中存储有热插拔配置信息或未存储有热插拔配置信息。

第四方面,提供了一种管理控制器,管理控制器与快速外设组件互联PCIE设备连接,PCIE设备中存储有热插拔标识;管理控制器用于在PCIE设备热插入PCIE槽位或在PCIE设备被请求热拔出之前,获取热插拔标识,热插拔标识用于指示PCIE设备支持热插拔或不支持热插拔;管理控制器还用于若热插拔标识指示PCIE设备支持热插拔,对PCIE设备执行热插拔的配置操作。

需要说明的,在第四方面中,管理控制器还可以用于执行上述第一方面提供的任意一种可能的实现方式。

第五方面,提供一种管理控制器,包括:处理器和存储器,处理器和存储器了连接,存储器存储有计算机执行指令,处理器执行存储器存储的计算机执行指令,以使管理控制器实现上述第一方面提供的任意一种方法;该处理器不是上述中央处理器CPU。

第六方面,提供了一种芯片,芯片包括:处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器,用于运行代码指令以执行上述第一方面提供的任意一种方法。该处理器不是上述中央处理器CPU。

第七方面,提供了一种计算机可读存储介质,存储有计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。

第八方面,提供了一种计算机程序产品,包括:计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法。

其中,第二方面至第八方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。

附图说明

图1为本申请实施例提供的一种计算设备的结构示意图;

图2为本申请实施例提供的一种计算设备的层级示意图;

图3为本申请实施例提供的一种数据格式的示意图;

图4为本申请实施例提供的一种热插拔方法的流程图;

图5为本申请实施例提供的一种管理控制器与中央处理器CPU的交互示意图;

图6为本申请实施例提供的另一种管理控制器与中央处理器CPU的交互示意图;

图7为本申请实施例提供的一种强制数据字段的示意图;

图8为本申请实施例提供的一种获取热插拔属性请求命令的数据格式的示意图;

图9为本申请实施例提供的一种获取热插拔属性的应答命令的数据格式的示意图;

图10为本申请实施例提供的一种设置MSI-X的配置命令的数据格式的示意图;

图11为本申请实施例提供的一种设置MSI-X的应答命令的数据格式的示意图;

图12为本申请实施例提供的另一种获取热插拔属性的请求命令的数据格式的示意图;

图13为本申请实施例提供的另一种获取热插拔属性的应答命令的数据格式的示意图;

图14为本申请实施例提供的另一种设置MSI-X的配置命令的数据格式的示意图;

图15为本申请实施例提供的另一种设置MSI-X的应答的数据格式的示意图;

图16为本申请实施例提供的一种热插入方法的流程图;

图17为本申请实施例提供的一种热拔出方法的流程图;

图18为本申请实施例提供的一种热插拔装置的流程图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。

并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。

另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。

以下,对本申请实施例的应用场景进行示例性介绍。

热插拔(Hot Swap),即带电插拔,指的是在不关闭计算设备的电源的情况下,将计算设备上的快速外设组件互联(peripheral component interconnect express,PCIE)设备插入或拔出计算设备而不影响计算机系统正常工作。由于热插拔技术能够提高计算设备的快速维修性,因此,热插拔技术广泛应用于计算机领域。

然而,计算设备上的PCIE设备热插拔后,经常发生PCIE设备无法正常工作或损坏等情况,导致PCIE设备热插拔的可靠性较低。

因此,如何提高PCIE设备热插拔的可靠性,成为亟需解决的技术问题。

有鉴于此,本申请实施例提供了一种热插拔方法,应用于管理控制器,管理控制器与快速外设组件互联PCIE设备连接,PCIE设备中存储有热插拔标识,热插拔标识用于指示PCIE设备支持热插拔或不支持热插拔。基于此,在PCIE设备热插入PCIE槽位的情况下或在PCIE设备被请求热拔出的情况下,管理控制器通过获取热插拔标识,确定PCIE设备是否支持热插拔,在确定热插拔标识指示PCIE设备支持热插拔的情况下,执行热插拔的配置操作,以对PCIE设备进行配置,这样,不仅能够保证在PCIE设备支持热插拔时,对PCIE设备的配置进行设置,还有助于保证PCIE设备的配置与热插拔场景相匹配,如:热插入时对PCIE设备的配置进行设置,使得PCIE设备的功能完整,进而使得PCIE设备与中央处理器CPU系统能正常通信;热拔出是对PCIE设备的配置进行设置,使得PCIE设备热拔出时不会发生电流倒灌和电压尖峰等,有助于提高PCIE设备热插拔的可靠性。以下,对本申请涉及的相关术语进行简要介绍。

固件(firmware):运行于设备芯片上的代码,用于实现设备功能。例如,网卡固件用于实现网卡的网络连接、报文收发、协议卸载等功能。

驱动(driver):运行于操作系统(operating system,OS)上的代码,用于实现OS与设备之间的通信和交互。例如,网卡驱动,用于实现OS与网卡之间的通信和数据传送,以及网卡配置和状态监测等。

PCIE槽位:是指具有PCIE接口的槽位,其中,PCIE接口遵循PCIE协议。

PCIE设备:是指具有PCIE接口的设备。

内置集成电路(inter-integrated circuit,I2C)总线:是两线制同步串行总线,遵从主从通信机制,使用时钟线(SCL)和数据线(SDA)进行通信,支持多个节点共总线连接,通过物理地址区分不同的节点。

改进型内置集成电路(improved inter integrated circuit,I3C)总线:是I2C总线的改进型,物理形态与I2C总线一致,使用时钟线(SCL)和数据线(SDA)进行通信,可向下兼容I2C。相对于I2C总线,I3C总线的数据速率大幅度提升,支持动态地址分配以支持多个相同物理地址的节点共总线连接,支持中断机制以支持从节点主动向主节点发送数据。

带外通信:是指通过PCIE设备的带外接口协议实现的通信。“带外”是相对于业务接口-PCIE接口(也称为“带内”)的描述,也即,不使用原生PCIE接口的通信方式,例如,中央处理器CPU访问PCIE设备的PCIE配置空间等。

其中,带外接口协议包括但不限于SMBus(I2C)、I3C、NC-SI(over基于媒体独立接口传输(reduced media independent interface based transport,RBT))等。其中,reduced media independent interface的缩写为RMII。

以下,对本申请实施例的系统架构进行示例性介绍。

如图1所示,为本申请提供的一种计算设备的结构示意图。

参见图1,计算设备包括中央处理器CPU(central processing unit,CPU)、管理控制器、热插拔控制器、PCIE槽位和PCIE设备。

其中,PCIE设备与PCIE槽位插拔连接。中央处理器CPU通过PCIE槽位与PCIE设备连接。热插拔控制器通过PCIE槽位与PCIE设备连接。热插拔控制器还与中央处理器CPU连接。管理控制器与热插拔控制器连接。

需要说明的,上述PCIE设备也可以其他类型的硬件设备,如电源设备等。

其中,管理控制器可以用于执行本申请实施例提供的热插拔方法。

基于此,管理控制器可以通过第一连接线与PCIE槽位连接,从而实现通过PCIE槽位与PCIE设备连接,和/或,管理控制器可以通过第二连接线与中央处理器CPU连接,从而实现通过中央处理器CPU与PCIE设备连接。

示例性的,第一连接线可以是SMBus总线、I3C总线、NC-SI总线等。第二连接线可以是PCIE总线等。中央处理器CPU与PCIE设备通过PCIE总线连接。

本申请实施例中,管理控制器还可以用于执行部件管理、资产管理功能等,例如,上下电控制、风扇调速、电子标签管理等。

示例性的,管理控制器可以包括计算设备外部的监控管理单元、基板管理控制器(baseboard management controller,BMC)等。需要说明的,本申请实施例对管理控制器的形式并不限定,以上仅为示例性说明。在下述实施例中,仅以管理控制器为BMC为例进行说明。

需要说明的是,不同计算机设备对BMC有不同的称呼,例如,一些计算机设备称为BMC,一些计算机设备称为iLO,另一计算机设备称为iDRAC。不论是叫BMC,还是叫iLO或iDRAC,都可以理解为是本发明实施例中的BMC。

本申请实施例中,计算设备可以包括网络设备或终端设备。

网络设备可以包括服务器等。其中,服务器可以是一个物理服务器,也可以是有两个或两个以上分担不同职责的物理服务器、相互协同来实现服务器的各项功能。

终端设备可以包括手机、平板电脑、手持计算机、PC、蜂窝电话、个人数字助理(personal digital assistant,PDA)、可穿戴式设备(如智能手表、智能手环等)、智能家居设备(如电视机等)、车机(如车载电脑等)、智慧屏、游戏机、耳机、AI音响、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、笔记本电脑、上网本、台式计算机或一体机等。

本申请实施例中,PCIE设备可以是网卡、独立磁盘冗余阵列(redundant arraysof independent disks,RAID)卡、固态硬盘(solid state disk,SSD)、图像中央处理器CPU(graphics processing unit,GPU)卡、显卡或加速卡等。

需要说明的,PCIE设备可以是卡的形式,或者,也可是盘的形式,本申请实施例对此不做限制。

本申请实施例中,计算设备包括硬件层和软件层,软件层是运行在硬件层上的程序代码。其中,软件层可以分成若干个层,层与层之间通过软件接口通信。

硬件层包括中央处理器CPUCPU、热插拔控制器、管理控制器、PCIE槽位和PCIE设备等计算机硬件,如图1所示。

软件层从上至下依次包括应用层、操作系统(operating system,OS)层、基本输入输出系统(base input output system,BIOS)层,如图2所示。

BIOS层,是加载在计算机硬件系统上的最基本的软件代码。BIOS层是在OS层之下的底层运行程序,用来设置硬件,为OS层运行做准备。

OS层,包括OS的程序代码以及PCIE设备的驱动代码。操作系统可以是Linux、Windows或vxWorks等。OS层运行于中央处理器CPU之上,PCIE设备的驱动代码运行于OS之中。

需要说明的,BIOS层也可以简称为BIOS,OS层也可以简称为OS。

可以理解的,下文中OS执行某个操作(如OS加载驱动程序)的说明,可以认为是中央处理器CPU运行OS的过程中,OS加载驱动程序。

应用层,包括一系列运行应用程序的程序代码。

本申请实施例中,可以将中央处理器CPU模块、OS以及PCIE设备的驱动统称为中央处理器CPU系统。中央处理器CPU模块包括中央处理器CPU、内存(memory)、闪存存储器(Flash)/非易失随机访问存储器(non-volatile random access memory,NVRAM)等,或者,中央处理器CPU模块也可以是单独的中央处理器CPU。

本申请实施例中,计算设备还可以包括供电设备,供电设备与PCIE槽位连接,用于为PCIE槽位上的PCIE设备供电。供电设备还与热插拔控制器连接,热插拔控制器用于控制供电设备为PCIE设备供电,或者,控制供电设备为PCIE设备下电。

示例性的,供电设备可以包括电源控制器和电源。电源与PCIE槽位连接,用于为PCIE设备供电。其中,电源与电源控制器连接,电源控制器与热插拔控制器连接,以便于热插拔控制器通过电源控制器控制电源为PCIE设备供电,或者,控制电源为PCIE设备下电。

以下,对本申请实施例中的PCIE设备进行介绍。

本申请实施例中,PCIE设备包括存储介质,例如,存储介质可以是Flash、NVRAM等。其中,存储介质中存储有PCIE设备的固件。

需要说明的,本申请实施例描述的系统架构以及应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。

为了便于理解,以下,基于上文提到的系统架构,对本申请实施例提供的热插拔方法进行示例性介绍。

以下,结合图3,对PCIE设备中存储的热插拔标识(Hot Plug Identification)、热插拔配置标识(Hot Plug Setting Identification)以及热插拔配置信息,进行示例性介绍。

本申请实施例中,热插拔标识、热插拔配置标识和热插拔配置信息可以存放在PCIE设备的固件中,PCIE设备的固件可以存储于PCIE设备的存储介质中。也就是说,热插拔标识和热插拔配置信息可以存储于PCIE设备的存储介质中。

其中,热插拔标识用于指示PCIE设备支持热插拔或不支持热插拔。PCIE设备支持热插拔包括PCIE设备支持热插入和热拔出。PCIE设备不支持热插拔包括PCIE设备不支持热插入和热拔出。

示例性的,PCIE设备支持热插拔,是指PCIE设备支持热插入PCIE槽位以及支持从PCIE槽位上热拔出。

其中,热插拔配置标识用于指示PCIE设备中存储有热插拔配置信息或未存储有热插拔配置信息。

其中,热插拔配置信息用于指示配置内容。热插拔配置信息可以包括多个配置信息,不同的配置信息用于指示不同的配置内容。

需要说明的,本申请实施例对热插拔配置信息所包括的配置信息的数量不做限制。

示例性的,热插拔配置信息可以包括PCIE设备的GPIO的配置信息、寄存器的配置信息、端口模式的配置信息和可选只读存储器的配置信息中的一项或多项。

其中,一个配置信息指示了一个的配置内容,例如,GPIO的配置信息指示了GPIO的配置内容。

基于此,可以理解的,不同的配置信息指示了不同的热插拔的配置操作。例如,GPIO的配置信息指示了对GPIO的配置操作,端口模式的配置信息指示了对端口模式的配置操作等。

示例性的,基于热插拔包括热插入和热拔出,热插拔配置信息可以包括热插入配置信息和热拔出配置信息。其中,热插入配置信息是在PCIE设备热插入PCIE槽位后执行热插拔的配置操作时所需使用的配置信息。热拔出配置信息是在PCIE设备热拔出之前执行热插拔的配置操作时所需使用的配置信息。

基于上述,热插拔的配置操作可以包括热插入配置操作或热拔出配置操作。其中,热插入配置信息所指示的配置操作可以称为热插入配置操作,热拔出配置信息所指示的配置操作可以称为热拔出配置操作。

由于GPIO的配置内容、寄存器的配置内容、端口模式的配置内容和可选只读存储器的配置内容会影响PCIE设备的工作安全性以及拔出安全性,因此,将GPIO的配置信息、寄存器的配置信息、端口模式的配置信息和可选只读存储器的配置信息存储在PCIE设备中,使得PCIE设备热插拔的过程中,对PCIE设备执行这些配置信息对应的配置操作,从而提高PCIE设备热插拔的可靠性。

如图3所示,为热插拔标识、热插拔配置标识和热插拔配置信息的数据格式的示意图。

参见图3,PCIE设备的固件中包括热插拔标识字段,热插拔标识字段用于存放热插拔标识。PCIE设备的固件中还包括热插拔配置标识字段,热插拔配置标识字段用于存放热插拔配置标识。PCIE设备的固件中还包括字段11至字段14,字段11至字段14用于存放配置信息1。此外,PCIE设备的固件中还包括字段M1至字段M4,字段M1至字段M4用于存放配置信息M。

以下,以字段11至字段14为例,对存放热插拔配置信息的字段进行示例性介绍。

字段11可以是长度(Length),用于指示配置信息1的数据区域长度。字段12可以是掩码(Mask),用于指示配置信息1是否需要执行。字段13可以是配置信息1的数据区域(Setting Data)。字段14可以是下一项(Next),用于指示是否存在下一项配置信息。

其中,数据区域包括配置命令(Setting Command)字段和配置(Configuration)字段。

配置命令字段用于存放Setting Command,Setting Command是对PCIE设备执行热插拔的配置操作使用的命令,换言之,对PCIE设备进行配置时使用的命令。配置字段用于存放配置内容,也就是Setting Command所要设置的配置内容。

Setting Command为管理控制器和PCIE设备通信时所使用的接口协议(如:系统管理总线(system management bus,SMBus)协议、I3C协议、管理组件传输协议(managementcomponent transport protocol,MCTP)或网络控制器边带接口(network controllersideband interface,NC-SI)协议等)支持的命令。

配置命令字段和配置字段中存放的内容,是管理控制器可以直接执行的,也就是说,管理控制器获取到Setting Command字段和Configuration字段中存放的内容后,可以直接向PCIE设备发送配置命令以及配置内容,指示PCIE设备基于配置内容进行设置。

这样,可以将管理控制器与热插拔的配置操作的执行解耦,使得管理控制器的固件中不必预置上述配置命令、配置内容。基于此,在计算设备上新增PCIE设备或原PCIE设备新增热插拔功能而需要进行配置时,不再需要刷新管理控制器的软件代码,以支持管理控制器管理新增PCIE设备或原PCIE设备新增的配置内容。

需要说明的,热插拔标识、热插拔配置标识以及热插拔配置信息还可以存储在管理控制器中,这样,管理控制器便不需要从PCIE设备中获取热插拔标识、热插拔配置标识以及热插拔配置信息,有助于提高热插拔的配置操作的执行效率。

以下,结合图4至图6,对本申请实施例提供的热插拔方法的进行示例性介绍。

图4是根据一示例性实施例示出的一种热插拔方法的流程图。示例性的,热插拔方法包括以下的S401-S406。

S401:在PCIE设备热插入PCIE槽位的情况下或在PCIE设备被请求热拔出的情况下,获取PCIE设备的热插拔标识,热插拔标识用于指示PCIE设备支持热插拔或不支持热插拔。

其中,PCIE设备被请求热拔出,也可以认为是请求将PCIE设备热拔出。

本申请实施例中,PCIE设备热插入PCIE槽位,可以是用户手动将PCIE设备热插入PCIE槽位,或者,也可以是自动化设备(如:机械手、机器人等)将PCIE设备热插入PCIE槽位,本申请实施例对此不做限制。

本申请实施例中,请求将PCIE设备热拔出,可以是用户通过其他设备请求将PCIE设备热拔出,或者,可以自动化设备(如:机械手、机器人等)请求将PCIE设备热拔出,本申请实施例对此不做限制。

在PCIE设备热插入PCIE槽位的情况下,获取PCIE设备的热插拔标识,包括多种实现方式,以下通过方式a至方式c进行说明。

方式a,基于接收到的热插入请求,获取PCIE设备的热插拔标识。

本申请实施例中,在热插拔控制器检测到PCIE设备热插入PCIE槽位的情况下,热插拔控制器向管理控制器发送热插入请求。管理控制器基于接收到热插入请求,确定当前场景为PCIE设备热插入PCIE槽位,基于此,管理控制器可以获取PCIE设备的热插拔标识。

示例性的,PCIE设备插入PCIE槽位后,PCIE槽位会产生在位信号,热插拔控制器检测到该在位信号的情况下,可以确定PCIE设备插入PCIE槽位,向管理控制器发送热插入请求。

示例性的,热插入请求包括槽位标识和第一事件标识。其中,槽位标识用于指示PCIE槽位,槽位标识与PCIE槽位具有唯一的对应关系。第一事件标识用于指示热插入事件,热插入事件是指槽位标识对应的PCIE槽位上热插入PCIE设备。

需要说明的,由于热插入请求是在PCIE设备插入PCIE槽位后发送的,因此,热插入请求也可以认为是PCIE设备请求热插入。

方式b,基于PCIE槽位支持热插拔,获取PCIE设备的热插拔标识。

在一个示例中,热插拔控制器检测到PCIE设备热插入PCIE槽位的情况下,向管理控制器发送热插入请求,管理控制器基于接收到热插入请求,获取PCIE槽位的热插拔标识,并基于PCIE槽位的热插拔标识确定PCIE槽位是否支持热插拔。在此基础上,管理控制器基于PCIE槽位支持热插拔,确定当前场景为PCIE设备热插入PCIE槽位,基于此,管理控制器可以获取PCIE设备的热插拔标识。

在另一个示例中,热插拔控制器检测到PCIE设备热插入PCIE槽位的情况下,还向中央处理器CPU发送热插入请求。中央处理器CPU基于接收到的热插入请求,获取PCIE槽位的热插拔标识,并基于PCIE槽位的热插拔标识,确定PCIE槽位是否支持热插拔。之后,中央处理器CPU向管理控制器发送确定结果信息,确定结果信息用于指示PCIE槽位支持热插拔或不支持热插拔。管理控制器基于确定结果信息指示了PCIE槽位支持热插拔,确定当前场景为PCIE设备热插入PCIE槽位,基于此,管理控制器可以获取PCIE设备的热插拔标识。

需要说明的,方式b中关于热插入请求的相关说明,可以参考方式a中的相关说明,此处不再赘述。

方式c,基于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槽位支持热插拔或PCIE设备已上电,获取PCIE设备的热插拔标识。

或者,管理控制器获取PCIE设备的热插拔标识的触发条件,可以包括热插入请求、PCIE槽位支持热插拔和PCIE设备已上电中的至少一项,基于此,管理控制器可以是响应于接收到的热插入请求、PCIE槽位支持热插拔和PCIE设备已上电中至少一项,获取PCIE设备的热插拔标识。

对于在请求将PCIE设备热拔出的情况下,获取PCIE设备的热插拔标识,包括多种实现方式,以下通过方式d至方式e进行说明。

方式d,基于接收到的热拔出请求,获取PCIE设备的热插拔标识。

本申请实施例中,在热插拔控制器接收到热拔出通知的情况下,热插拔控制器向管理控制器发送热拔出请求。管理控制器基于接收到的热拔出请求,确定当前场景为请求将PCIE设备热拔出,基于此,管理控制器可以获取PCIE设备的热插拔标识。

示例性的,热拔出请求包括槽位标识和第二事件标识。其中,第二事件标识用于指示热拔出事件,热拔出事件是指槽位标识对应的PCIE槽位上的PCIE设备请求热拔出。

对于热插拔控制器如何接收到热拔出通知,包括多种实现方式,以下,通过两种方式进行示例性说明。

第一种方式:热插拔控制器接收PCIE槽位发送的热拔出通知。

计算设备包括通知按钮,通知按钮与PCIE槽位一一对应。其中,通知按钮可以设置于计算设备的主板上。通知按钮包括触发状态,触发状态用于指示发送热拔出通知,例如,向热插拔控制器发送热拔出通知。

当用户需要从PCIE槽位拔出PCIE设备时,用户将通知按钮设置为触发状态,例如,可以是通过按压通知按钮,使得通知按钮处于触发状态,从而使得通知按钮对应的PCIE槽位向热插拔控制器发送热拔出通知。

第二种方式:热插拔控制器接收管理控制器发送的热拔出通知。

管理控制器的客户端由电子设备运行,客户端包括通知控件,通知控件用于指示发送热拔出通知。基于此,当用户需要从PCIE槽位拔出PCIE设备时,用户通过电子设备登入管理控制器的客户端,输入槽位标识,并对通知控件执行触发操作,例如,点击通知控件,电子设备响应于对通知控件的触发操作以及输入操作,获取槽位标识,并向热插拔控制器发送热拔出通知,该热拔出通知包括槽位标识,槽位标识用于指示PCIE槽位,热拔出通知用于通知将要对槽位标识指示的PCIE槽位上的PCIE设备执行热拔出。

需要说明的,热拔出请求是在PCIE设备热拔出PCIE槽位之前发送的,相当于请求将PCIE设备从PCIE槽位热拔出,因此,热拔出请求也可以认为是请求对于PCIE设备进行热拔出,或者PCIE设备请求从PCIE槽位热拔出。

方式e,基于PCIE槽位支持热插拔,获取PCIE设备的热插拔标识。

需要说明的,方式e的相关说明,可以参考上述方式b,二者原理相同,此处不再赘述。

基于上述,管理控制器获取PCIE设备的热插拔标识的触发条件,还可以包括拔出请求。基于此,管理控制器可以是响应于接收到的拔出请求,获取PCIE设备的热插拔标识,或者,可以是响应于接收到的热拔出请求和PCIE槽位支持热插拔,获取PCIE设备的热插拔标识。

本申请实施例中,获取PCIE设备热插拔标识,包括:基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取PCIE设备的热插拔标识。

需要说明的,管理控制器基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取PCIE设备的热插拔标识的过程,将在图7至图15所示的实施例中进行说明,此处不再赘述。

S402:根据热插拔标识,确定PCIE设备是否支持热插拔。

若确定结果为是,执行S403,若确定结果为否,执行S404-S406。

本申请实施例中,管理控制器可以根据热插拔标识的内容,确定PCIE设备是否支持热插拔。示例性的,若热插拔标识为1,则指示PCIE设备支持热插拔,若热插拔标识为0,则指示PCIE设备不支持热插拔。

需要说明的,本申请实施例对热插拔标识具体如何指示PCIE设备是否支持热插拔不做限制,上述示例仅为示例性说明。

S403:对PCIE设备执行热插拔的配置操作。

其中,热插拔的配置操作包括热插入配置操作或热拔出配置操作。

在PCIE设备热插入PCIE槽位的情况下,S403可以认为是“对PCIE设备执行热插入配置操作”,以对PCIE设备进行热插入配置。在请求将PCIE热拔出的情况下,S403可以认为是“对PCIE设备执行热拔出配置操作”,以对PCIE设备进行热拔出配置。

在一个示例中,在PCIE设备热插入PCIE槽位的情况,管理控制器执行热插入配置操作,从而在PCIE设备热插入PCIE槽位之后,对PCIE设备进行热插入配置,使得PCIE设备的配置适用于热插入操作,使得PCIE设备可以在计算设备上正常使用。

在另一个示例中,在请求将PCIE设备热拔出的情况下,管理控制器执行热拔出配置操作,从而在PCIE设备从PCIE槽位热拔出之前,对PCIE设备进行热拔出配置,使得PCIE设备的配置适用于热拔出操作,避免PCIE设备热拔出时损坏。

本申请实施例中,对PCIE设备执行热插入配置操作,包括多种情况,以下通过情况1至情况3进行示例性说明。

情况1,对PCIE设备执行热插入的配置操作,包括:获取热插入配置信息;基于热插入配置信息,对PCIE设备执行热插入配置操作。

本申请实施例中,热插入配置信息包括配置内容。基于热插入配置信息对PCIE设备执行热插入配置操作,可以包括:基于配置内容,对PCIE设备进行配置。

示例性的,热插入配置信息包括中断寄存器的配置信息,也就是说,配置内容为中断寄存器的配置内容。

由于PCIE设备与中央处理器CPU系统通信时,需要使用消息信号中断扩展(message signaled interrupt-extensio,MSI-X)中断寄存器,以实现消息和数据的传送。MSI-X中断寄存器包括MSI-X中断使能、MSI-X中断的数量、MSI-X中断所需的内存(memory)空间大小等参数。

基于此,在PCIE设备热插入PCIE槽位的情况下,管理控制器对MSI-X中断寄存器进行配置,例如,对MSI-X中断寄存器的MSI-X中断使能、MSI-X中断的数量、MSI-X中断所需的内存(memory)空间大小等参数进行配置,这样,在中央处理器CPU枚举PCIE设备时,可以根据MSI-X中断寄存器的配置为PCIE设备分配所需的中央处理器CPU系统的中断资源,从而保证PCIE设备热插入PCIE槽位后,MSI-X中断功能是完整的,PCIE设备与中央处理器CPU系统能正常通信。

可以理解的,配置内容可以包括使能状态、第一设定值、第二设定值。使能状态是指MSI-X中断为使能状态,第一设定值为MSI-X中断的数量,第二设置值为MSI-X中断所需的内存空间大小。

该实现方式中,通过在PCIE设备中存储热插拔配置信息,从而在PCIE设备支持热插拔时,直接从PCIE设备中获取配置内容,并基于配置内容,对PCIE设备进行配置。这样,将要设置的配置内容存储在PCIE设备中,在执行热插拔的配置操作时,直接从PCIE设备中获取热插拔配置信息,有助于提高热插拔的配置操作的执行便利性。

此外,还有助于提高热插拔的配置操作的可靠性,使得PCIE设备的热插拔过程更加完整,从而保证PCIE设备的当前配置与热插拔场景相匹配,进而避免PCIE设备热拔出时损坏,或者,避免由于对PCIE设备执行的配置操作不完整,导致PCIE设备热插入PCIE槽位后部分功能无法实现。

另外,将配置内容存储在PCIE设备中,相对于将配置内容存储于管理控制器中,能够将配置内容与管理控制器解耦,这样,在为PCIE设备新增配置内容时,不必刷新管理控制器的软件代码,以支持管理控制器的固件,有助于提高管理控制器的通用性。

本申请实施例中,获取热插入配置信息,包括:基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热插入配置信息。

示例性的,管理控制器可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,向PCIE设备发送获取请求,获取请求用于请求获取PCIE设备的热插入配置信息。

需要说明的,管理控制器基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热插入的配置信息的过程,将在图7至图15所示的实施例中进行说明,此处不再赘述。

本申请实施例中,获取热插入配置信息,可以包括:获取热插拔配置标识;若热插拔配置标识指示PCIE设备中存储有热插入配置信息,获取PCIE设备中存储的热插入配置信息。

该实施例中,通过在PCIE设备中存储热插拔配置标识,用于指示PCIE设备中存储有配置信息或未存储有配置信息,这样,便可以根据热插拔配置标识先确定PCIE设备中是否存储有配置信息,并在热插拔配置标识指示存储有配置信息时,再读取PCIE设备中的热插拔配置信息,由于热插拔配置信息占用的字节数比较多,因此,相对于直接读取PCIE设备获取热插拔配置信息,有助于节省程序处理的开销。

需要说明的,管理控制器基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热插拔配置标识的过程,将在图7至图15所示的实施例中进行说明,此处不再赘述。

本申请实施例中,热插拔方法还包括:向中央处理器CPU发送第一完成通知,以通知管理控制器对PCIE设备执行的热插入配置操作已完成。

本申请实施例中,管理控制器执行完热插入配置操作后,向中央处理器CPU发送第一完成通知,以通知热插拔的配置操作已完成,这样,有助于中央处理器CPU了解PCIE设备的热插拔流程所处的阶段,进而有助于中央处理器CPU确定后续所执行的操作。

如图5所示,为本申请实施例提供的一种管理控制器和中央处理器CPU的交互示意图。

参见图5,在PCIE设备热插入PCIE槽位之后,管理控制器基于PCIE设备支持热插拔,执行热插入配置操作。之后,管理控制器向中央处理器CPU发送第一完成通知(如complete_1),以通知中央处理器CPU,PCIE设备的热插入配置操作已完成。中央处理器CPU接收到第一完成通知之后,向管理控制器发送确认信息1(ack_1),以通知管理控制器第一完成通知已接收。

示例性的,中央处理器CPU运行OS的过程中,OS向管理控制器发送确认信息1。

情况2,对PCIE设备执行热插入配置操作,包括:为PCIE设备分配PCIE资源。

本申请实施例中,PCIE设备热插入PCIE槽位后,中央处理器CPU为PCIE设备分配PCIE资源,以使得PCIE设备可以正常使用。

示例性的,中央处理器CPU接收到管理控制器发送的第一完成通知后,基于第一完成通知,为PCIE设备分配PCIE资源。或者,中央处理器CPU接收到管理控制器发送的PCIE设备的确定结果,该PCIE设备的确定结果用于指示PCIE设备支持热插拔,中央处理器CPU基于该确定结果,为PIE设备分配PCIE资源。

其中,PCIE资源包括内存(memory)空间、总线(Bus)号、设备(Device)号和功能(Function)号。通过为PCIE设备分配内存空间、总线(Bus)号、设备(Device)号和功能(Function)号,可以让OS以及运行在OS上的应用层与PCIE设备进行数据交互。

本申请本实施例中,可以在中央处理器CPU运行OS的过程中,OS枚举PCIE设备,并为PCIE设备分配PCIE资源。之后,OS将总线(Bus)号、设备(Device)号和功能(Function)号写入PCIE设备的基本配置空间,用于后续通信。

示例性的,枚举PCIE设备可以包括读取PCIE设备上的寄存器配置信息,例如,寄存器配置信息可以包括供应商标识(Vendor ID)、设备标识(Device ID)等。

该实施例中,管理控制器在确定PCIE设备支持热插拔时,再为PCIE设备分配PCIE资源,相对于PCIE设备热插入PCIE槽位后直接为PCIE设备分配PCIE资源,避免了为不支持热插拔的PCIE设备分配PCIE资源,提高了PCIE资源的利用率。

情况3,对PCIE设备执行热插入配置操作,包括:加载PCIE设备的驱动程序。

本申请实施例中,PCIE设备热插入PCIE槽位后,中央处理器CPU加载PCIE设备的驱动程序,以使得中央处理器CPU可以访问PCIE设备。

示例性的,中央处理器CPU接收到管理控制器发送的第一完成通知后,基于第一完成通知,加载PCIE设备的驱动程序,或者,中央处理器CPU接收到管理控制器发送的PCIE设备的确定结果,该PCIE设备的确定结果用于指示PCIE设备支持热插拔,中央处理器CPU基于该确定结果,加载PCIE设备的驱动程序。

该实施例中,由于中央处理器CPU需要通过驱动程序访问PCIE设备,因此,在确定PCIE设备支持热插拔时,再加载PCIE设备的驱动程序,相对于PCIE设备热插入PCIE槽位后直接加载PCIE设备的驱动程序,能够避免PCIE设备不支持热插拔的情况下,中央处理器CPU通过驱动程序访问PCIE设备,进而有助于避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

需要说明的,对PCIE设备执行热插入配置操作,可以包括上述情况1至情况3中的至少一种情况。

本申请实施例中,对PCIE设备执行热拔出的配置操作,包括多种情况,以下通过情况4至情况7进行示例性说明。

情况4,对PCIE设备执行热拔出配置操作,包括:获取热拔出配置信息;基于热拔出配置信息,执行热拔出配置操作。

本申请实施例中,热拔出配置信息包括配置内容。基于热拔出配置信息对PCIE设备执行热拔出配置操作,可以包括:基于配置内容,对PCIE设备进行配置。

需要说明的,热拔出配置信息中的配置内容所指示的配置项(即GPIO、寄存器、端口模式、可选只读存储器等)与热插入配置信息中的配置内容所指示的配置项可以相同,或者,也可以不同,本申请实施例对此不做限制。

示例性的,热拔出配置信息包括GPIO的配置信息,也就是说,配置内容为GPIO。

本申请实施例中,PCIE设备包括控制器、GPIO、管理模块和环境监控模块,控制器通过GPIO与管理模块、环境监控模块连接,例如,可以是通过将GPIO设置成内部集成电路(inter integrated circuit,I2C)接口进行连接。其中,管理模块包括板卡类型号、版本号信息等管理信息。环境监控模块包括监控环境温度等监控信息。其中,供电设备包括主电源和辅助电源。主电源用于为控制器供电,辅助电源用于为管理模块、环境监控模块的供电。

由于在PCIE设备从PCIE槽位热拔出之前,热插拔控制器为PCIE设备下电时,只会关闭主电源而保持辅助电源继续供电,也就是说,管理模块和环境监控模块会继续处于供电和工作状态。这样,PCIE设备从PCIE槽位热拔出时,用于连接控制器与管理模块、环境监控模块的GPIO就容易发生电流倒灌和电压尖峰的情况,存在端口闩锁甚至损坏端口的风险。

基于此,在PCIE设备请求从PCIE槽位热拔出的情况下,根据GPIO的配置信息,对PCIE设备GPIO进行配置,例如,关闭GPIO或将GPIO设置为高阻态,从而实现在PCIE设备从PCIE槽位热拔出之前,关闭GPIO或将GPIO设置为高阻态,从而避免PCIE设备从PCIE槽位热拔出时,PCIE设备的GPIO端口受损,实现避免PCIE设备在热拔出时受损,进而提高PCIE设备热拔出的可靠性。

可以理解的,配置内容可以包括关闭状态或高阻态。其中,关闭状态或高阻态是指GPIO的状态。

获取热拔出配置信息,包括:基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热拔出配置信息。

示例性的,管理控制器可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,向PCIE设备发送获取请求,获取请求用于请求获取PCIE设备的热拔出配置信息。

需要说明的,管理控制器基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热拔出配置信息的过程,将在图7至图15所示的实施例中进行说明,此处不再赘述。

本申请实施例中,获取热拔出配置信息,包括:获取热插拔配置标识;若热插拔配置标识指示PCIE设备中存储有热拔出配置信息,获取PCIE设备中存储的热拔出配置信息。

需要说明的,管理控制器基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,获取热插拔配置标识的过程,将在图7至图15所示的实施例中进行说明,此处不再赘述。

本申请实施例中,热插拔方法还包括:向中央处理器CPU发送第二完成通知,以通知中央处理器CPU,管理控制器对PCIE设备执行的热拔出配置操作已完成。

本申请实施例中,管理控制器执行完热拔出配置操作后,向中央处理器CPU发送第二完成通知,以通知热拔出配置操作已完成,这样,有助于中央处理器CPU了解PCIE设备的热插拔流程所处的阶段,进而有助于中央处理器CPU确定后续所执行的操作。

如图6所示,为本申请实施例提供的另一种管理控制器和中央处理器CPU的交互示意图。

参见图6,在请求将PCIE设备热拔出的情况下,管理控制器基于PCIE设备支持热插拔,执行热拔出配置操作。之后,管理控制器向中央处理器CPU发送第二完成通知(如complete_2),以通知中央处理器CPU,PCIE设备的热拔出配置操作已完成。中央处理器CPU接收到第二完成通知之后,向管理控制器发送确认消息2(ack_2),以通知管理控制器第二完成通知已接收。

示例性的,中央处理器CPU运行OS的过程中,OS向管理控制器发送确认信息2。

情况5,对PCIE设备执行热拔出配置操作,包括:释放PCIE设备的PCIE资源。

本申请实施例中,在请求将PCIE设备热拔出的情况下,中央处理器CPU释放PCIE设备的PCIE资源。示例性的,中央处理器CPU接收到管理控制器发送的第二完成通知后,基于第二完成通知,释放PCIE设备的PCIE资源,或者,中央处理器CPU接收到管理控制器发送的PCIE设备的确定结果,该PCIE设备的确定结果用于指示PCIE设备支持热插拔,中央处理器CPU基于该确定结果,释放PCIE设备的PCIE资源。

示例性的,中央处理器CPU释放PCIE设备的PCIE资源可以是中央处理器CPU运行OS的过程中,OS释放分配给PCIE设备的PCIE资源。

在OS释放分配给PCIE设备的PCIE资源后,内存空间可以重新分配给其他应用程序或其他PCIE设备,PCIE地址可以重新分配给其他PCIE设备,这样,能够避免当前不使用的PCIE设备占用PCIE资源,有助于提高PCIE资源的利用率。

需要说明的,关于PCIE资源的说明,可以参考上述情况2中说明,此处不再赘述。

本申请实施例中,热插拔方法还包括:接收中央处理器CPU返回的第三完成通知,第三完成通知用于通知PCIE设备已卸载。这样,有助于管理控制器了解PCIE设备的当前状态,进而有助于管理控制器确定是否继续执行其他操作。

本申请实施例中,参见图6,在中央处理器CPU释放PCIE设备的PCIE资源后,中央处理器CPU向管理控制器发送第三完成通知(complete_3),以通知管理控制器PCIE设备的PCIE资源已释放,或者说,PCIE设置已卸载。管理控制器接收到的第三完成通知后,向中央处理器CPU返回确认信息3(ack_3),以通知中央处理器CPU第三完成通知已接收。

示例性的,中央处理器CPU运行OS的过程中,OS向管理控制器发送第三完成通知。中央处理器CPU运行OS的过程中,管理控制器向OS发送确认信息3。

情况6,对PCIE设备执行热拔出配置操作,包括:为PCIE设备下电。

本申请实施例中,在请求将PCIE设备热拔出的情况下,管理控制器基于PCIE设备不支持热插拔,为PCIE设备下电,这样,可以避免PCIE设备所在的计算设备的中央处理器CPU访问PCIE设备,进而避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。示例性的,管理控制器接收到第三完成通知后,基于第三完成通知,为PCIE设备下电。

示例性的,为PCIE设备下电的过程可以包括:管理控制器向热插拔控制器发送下电通知,以通知热插拔控制器为PCIE设备下电。热插拔控制器基于接收到的下电通知,向供电设备中的电源控制器发送下电指令,下电指令用于指示供电设备为PCIE槽位下电,从而实现为PCIE设备下电。例如,热插拔控制器向供电设备的供电控制器发送下电指令,电源控制器响应于接收到的下电指令,控制电源为PCIE槽位下电。

情况7,对PCIE设备执行热拔出配置操作,包括:中央处理器CPU停止访问PCIE设备。

本申请实施例中,在请求将PCIE设备热拔出的情况下,中央处理器CPU停止访问PCIE设备。这样,在PCIE设备热拔出后,可以避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

示例性的,中央处理器CPU接收到管理控制器发送的第二完成通知后,基于第二完成通知,停止访问,或者,中央处理器CPU接收到管理控制器发送的PCIE设备的确定结果,该PCIE设备的确定结果用于指示PCIE设备支持热插拔,中央处理器CPU基于该确定结果,停止访问PCIE设备。

其中,中央处理器CPU停止访问PCIE设备的过程,包括:在中央处理器CPU运行OS的过程中,OS向PCIE设备的驱动程序发送静默通知,以使得PCIE设备的驱动程序不再访问PCIE设备,也就是说,PCIE设备的驱动程序不再对PCIE设备进行读写通信,从而使得中央处理器CPU停止访问PCIE设备。

需要说明的,对PCIE设备执行热拔出配置操作,可以包括上述情况4至情况7中的至少一种情况。

需要说明的,对于管理控制器执行的热插拔的配置操作,将在后续实施例中进行说明,此处不再赘述。

可选地,S404:输出提示信息,以指示PCIE设备不支持热插拔。

在一个示例中,在PCIE设备热插入PCIE槽位的情况下,管理控制器输出提示信息,指示该PCIE设备不支持热插拔,这样,可以避免用户将不支持热插拔的PCIE设备热插入PCIE槽位后无法正常使用,有助于提高热插入的可靠性。此外,在PCIE设备热插入PCIE槽位后无法正常使用时,用户可以及时了解PCIE设备工作异常的原因是PCIE设备不支持热插拔,不仅有助于提高PCIE设备工作异常原因的问题定位效率,以便于及时解决问题。

在另一个示例中,在请求将PCIE设备从PCIE槽位热拔出的情况下,管理控制器输出提示信息,指示该PCIE设备不支持热插拔,这样,能够避免用户将不支持热插拔的PCIE设备从PCIE槽位热拔出,导致PCIE设备热拔出时损坏,进而有助于提高热拔出的可靠性。

对于如何输出提示信息,包括多种实现方式,以下,通过方式A至方式C进行说明。

方式A:管理控制器向中央处理器CPU发送提示信息,以指示中央处理器CPU输出该提示信息。

管理控制向中央处理器CPU发送提示信息后,中央处理器CPU基于接收的提示信息,输出提示信息。

示例性的,在中央处理器CPU运行OS的过程中,OS打印系统消息(message),该系统消息包括提示信息,从而实现输出提示信息。其中,OS打印系统消息可以是在OS界面弹出系统消息。

方式B:管理控制器向电子设备发送提示信息,并指示电子设备输出提示信息。

管理控制器的客户端由电子设备运行,基于此,管理控制器向电子设备发送提示信息,电子设备在接收到提示信息后,通过客户端输出提示信息。示例性的,电子设备可以通过客户端的显示界面显示提示信息。

方式C:管理控制器向第一指示灯发送信号,以指示第一指示灯输出提示信息。

计算设备包括第一指示灯,第一指示灯用于指示PCIE设备不支持热插拔。示例性的,第一指示灯可以安装于计算设备的主板上或PCIE设备上。需要说明的,本实施例对第一指示灯的安装位置不做限制,以上仅为示例性说明。

基于此,管理控制器向指示灯发送信号,指示灯基于该信号输出提示信息。例如,第一指示灯切换为闪烁状态或常亮状态,以指示PCIE设备不支持热插拔。示例性的,第一指示灯的初始状态为常灭状态,第一指示灯接收到信号后,切换为闪烁状态或常亮状态,这时,用户可以确定PCIE设备不支持热插拔。

在PCIE设备不支持热插拔时,通过上述方式A至方式C输出提示信息,不仅有助于提高提示信息的输出多样性,还可以准确呈现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设备的热插拔,从而避免不支持热插拔的PCIE设备热插入PCIE槽位后影响计算设备的运行,或者,避免PCIE设备从PCIE槽位热拔出时被损坏,进而有助于提高PCIE设备热插拔的可靠性。

可选地,S405:生成日志信息,以记录PCIE设备不支持热插拔和/或未执行热插拔。

本申请实施中,管理控制器向中央处理器CPU发送生成指令,该生成指令用于指示中央处理器CPU生成日志信息,中央处理器CPU基于接收到的生成指令,生成日志信息,用于记录PCIE设备不支持热插拔和/或PCIE设备未执行热插拔,以便于用于系统运维。

示例性的,日志信息可以存储在计算设备的存储介质中,如,存储在计算设备的硬盘中。

示例性的,可以在中央处理器CPU运行OS的过程中,由OS生成日志信息(也称为OS日志)。

可选地,S406:在PCIE设备热插入PCIE槽位的情况下,为PCIE设备下电。

本申请实施例中,在PCIE设备热插入PCIE槽位的情况下,管理控制器基于PCIE设备不支持热插拔,为PCIE设备下电,这样,可以避免PCIE设备所在的计算设备的中央处理器CPU访问PCIE设备,进而避免中央处理器CPU由于长时间收不到PCIE设备的响应,而造成访问进程等待、挂死,影响中央处理器CPU的正常运行。

需要说明的,为PCIE设备下电的过程可以参见上述S403中的情况6,此处不再赘述。

以下,结合图7至图15,对管理控制器与PCIE设备之间的通信过程进行示例性介绍。

本申请实施例中,管理控制器与PCIE设备之间,可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议进行通信,也即,进行数据传输。

基于此,管理控制器可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,从PCIE设备获取热插拔标识、热插拔配置标识以及热插拔配置信息。其中,热插拔标识、热插拔配置标识以及热插拔配置信息可以统称为热插拔属性。

基于上述,管理控制器可以基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,向PCIE设备发送获取请求,该获取请求用于请求获取热插拔标识、热插拔配置标识和热插拔配置信息。这样,有助于提高获取热插拔标识、热插拔配置标识或热插拔配置信息的便利性。

例如,获取请求中包括命令字段,命令字段用于指示热插拔属性。

以下,通过方式1至方式4,对基于SMBus协议、I3C协议、MCTP协议或NC-SI协议,从PCIE设备获取热插拔属性的过程,进行示例性说明。

方式1,基于SMBus协议,获取热插拔属性。

本申请实施例中,管理控制器和PCIE设备可以通过SMBus总线连接,也就是说,管理控制器和PCIE设备可以通过SMBus总线进行数据传输。基于此,管理控制器可以通过SMBus接口,并基于SMBus协议,从PCIE设备获取热插拔属性。

示例性的,管理控制器基于SMBus协议,向PCIE设备发送获取请求,用于请求获取热插拔属性,如热插拔标识、热插拔配置标识和热插拔配置信息。

由于SMBus与I2C在物理信号上是兼容的,都使用SCL和SDA总线,且在PCIE规范定义中,PCIE设备上的PCIE接口连接器的信号定义包括I2C接口定义,因此,SMBus总线的物理形态可以是I2C总线。基于此,管理控制器和PCIE设备可以利用I2C通道,运行SMBus协议,形成SMBus接口,也就是说,PCIE设备的PCIE接口连接器可以兼容SMBus接口。这样,便不需要为管理控制器和PCIE设备之间额外增加物理信号,有助于简化结构。

在管理控制器与PCIE设备通过SMBus总线进行通信时,管理控制器为SMBus总线的主节点(Master),PCIE设备为SMBus总线的从节点(Slave)。

本申请实施例中,可以通过对SMBus协议进行扩展,定义获取热插拔属性的命令。

其中,获取热插拔属性的命令包括请求命令,请求命令是管理控制器向PCIE设备发送的命令,也可以称为获取请求,用于请求获取热插拔属性。

获取热插拔属性的命令还可以包括应答命令,应答命令是管理控制器发起的命令,用于读取(获取)PCIE设备中的热插拔属性。

示例性的,基于SMBus协议,可以定义命令字段0xA0为获取热插拔属性的请求命令(Get Hot Plug Attribute Request),定义命令字段0xE0为获取热插拔属性的应答命令(Get Hot Plug Attribute Response)。

示例性的,获取热插拔属性的请求命令(0xA0)的命令时序,如表1所示。

表1

其中,“S”字段用于指示开始。“Slave Address”字段用于指示PCIE设备的SMBus接口物理地址。“W”字段用于指示写(Write)。“A”字段用于指示告知(Acknowledge),其中,A为0时用于表征确认(ACK),A为1时用于表征不确认(Non ACK/NACK)。“Command(0xA0)”字段用于指示获取热插拔属性的请求命令。“Byte count”字段用于指示字节数量,可以为N,N为大于1的正整数。“Data1-DataN”字段用于指示数据1-数据N,其中,数据1-数据N为热插拔属性。“PEC”字段用于指示数据包错误代码(Packet Error Code)。“P”字段用于表征结束。

示例性的,获取热插拔属性的应答命令(0xE0)的命令时序,如表2所示。

表2

其中,“Command(0xE0)”字段用于指示获取热插拔属性的应答命令。“Sr”字段用于指示重复启动(Repeated Start)。“R”字段用于表征读取(Read)。其中,“Data1-DataN”字段用于指示热插拔属性的数据内容。

需要说明的,“→”用于指示“Data1”字段为“A(Byte count右侧的A)”字段的下一个字段。

需要说明的,表2中其他字段的说明,可以参见表1中相应字段的说明,此处不再赘述。

本申请实施例中,管理控制器在获取到热插拔属性后,先从应答命令中解析PCIE设备的热插拔标识,用于确定PCIE设备是否支持热插拔。若PCIE设备的热插拔标识指示PCIE设备支持热插拔,则从应答命令中解析热插拔配置标识,用于PCIE设备中是否存储有热插拔配置信息。若热插拔配置标识指示PCIE设备中存储有热插拔配置信息,则从应答命令中解析热插拔配置信息。若热插拔配置标识指示未存储有热插拔配置信息,则不必再解析应答命令。

在此基础上,图3所示的数据格式中,配置命令(Setting Command)为SMBus命令。

示例性的,Setting Command字段的内容可以如下所示:

Setting Command(for SMBus):

0xA2:Set multi PF Request

0xE2:Set multi PF Response

0xA6:Set MSI-X Vector Request

0xE6:Set MSI-X Vector Response

0xA8:Set GPIO state Request

0xE8:Set GPIO state Response

……

其中,命令字段0xA2和0xE2分别用于指示热插拔的配置操作中设置多物理功能(multi physical function,multi PF)的配置命令和应答命令。命令字段0xA6和0xE6分别用于指示热插拔的配置操作中设置MSI-X中断寄存器(中断向量)的配置命令和应答命令。命令字段0xA8和0xE8分别用于指示热插拔的配置操作中设置GPIO状态的配置命令和应答命令。

以下,以MSI-X中断寄存器为例,对设置MSI-X中断寄存器的命令进行示例性介绍。

管理控制器基于SMBus协议,向PCIE设备发送配置命令,以指示PCIE设备设置MSI-X中断寄存器。

示例性的,在对PCIE设备的MSI-X中断寄存器进行设置时,设置MSI-X中断寄存器的配置命令的命令时序,如表3所示。

表3

其中,Command(0xA6)用于指示设置MSI-X中断寄存器的配置命令。其中,“Data1-DataN”字段用于指示MSI-X的配置内容。

需要说明的,表3中其他字段的说明,参见表1-表2中相应字段的说明,此处不再赘述。

PCIE设备接收到设置MSI-X中断寄存器的配置命令后,基于配置命令,对PCIE设备的MSI-X中断寄存器进行设置。如,设置MSI-X中断寄存器的MSI-X中断使能、MSI-X中断的数量、MSI-X中断所需的内存(memory)空间大小等参数。

PCIE设备完成MSI-X中断寄存器的配置后,管理控制器发起应答命令,读取MSI-X中断寄存器的配置结果。

示例性的,设置MSI-X中断寄存器的应答命令的命令时序,如表4所示。

表4

其中,Command(0xE6)用于指示获取MSI-X的配置信息的应答命令。“Data1-DataN”字段用于指示MSI-X中断寄存器的配置结果。

需要说明的,表4中其他字段的说明,参见表1-表3中相应字段的说明,此处不再赘述。

需要说明的,其他热插拔的配置操作的命令时序,可以参考表3和表4,此处不再赘述。

方式2,基于I3C协议,获取热插拔属性。

本申请实施例中,管理控制器和PCIE设备可以通过I3C总线连接,也就是说,管理控制器和PCIE设备可以通过I3C总线进行数据传输。基于此,管理控制器和PCIE设备通过I3C接口,并基于I3C协议,从PCIE设备获取热插拔属性。

示例性的,管理控制器基于I3C协议,向PCIE设备发送获取请求,用于请求获取热插拔属性,如热插拔标识、热插拔配置标识和热插拔配置信息。

由于I3C与I2C在物理信号上是兼容的,都使用SCL和SDA总线,且在PCIE规范定义中,PCIE设备上的PCIE连接器的信号定义包括I2C接口,因此,I3C总线可以重用I2C总线的物理通道。基于此,管理控制器和PCIE设备可以利用I2C通道,运行I3C协议,形成I3C接口,也就是说,PCIE设备的PCIE接口连接器可以兼容I3C接口。这样,便不需要为管理控制器和PCIE设备之间额外增加物理信号,有助于简化结构。

在管理控制器与PCIE设备通过I3C总线进行通信时,管理控制器为I3C总线的主节点(Master),也即,控制节点(Controller),PCIE设备为SMBus总线的从节点(Slave),也即,设备节点(Device)。

本申请实施例中,管理控制器可以基于I3C协议的读操作命令,获取热插拔属性。

也就是说,可以基于I3C协议的读操作指令,定义获取热插拔属性的请求命令。或者说,可以将I3C协议的读操作指令作为获取热插拔属性的请求命令。

示例性的,基于I3C协议的读操作指令获取热插拔属性时,请求命令的命令时序,如表5所示。

表5

其中,“I3C Reserved Address”字段用于指示I3C的保留地址,“I3C ReservedAddress”字段按照规范定义可以取值7’h7E。“I3C Directed CCC”字段用于指示I3C直接通信(点对点)的公共命令字段(Common Command Codes)。“Par”字段用于指示写入的奇偶检验位(Parity Bit in Write)。“Target Address”字段用于指示设备节点(即PCIE设备)的I3C地址。

需要说明的,表5中其他字段的说明,参见表1-表4中相应字段的说明,此处不再赘述。

本申请实施例中,可以通过对I3C协议进行扩展,定义获取热插拔属性的命令。

在I3C规范中,公共命令字段中定义了部分保留命令字段,保留命令字段的取值范围包括0xE0-0xFE,可以作为厂家扩展(Vendor Extension)时使用。其中,不同的命令字段可以用于表示不同的功能。

示例性的,在对I3C协议进行扩展时,可以使用I3C公共命令字段中的保留命令字段,定义获取热插拔属性的命令,也即,使用0xE0-0xFE范围内的值,定义获取热插拔属性的命令。例如,可以使用0xE0-0xFE范围中的0xE2指示获取热插拔属性的请求命令。

基于此,获取热插拔属性的请求命令的命令时序,如表6所示。

表6

其中,0xE2用于指示获取热插拔属性的请求命令。

需要说明的,表6中其他字段的说明,参见表1-表5中相关字段的说明,此处不再赘述。

本申请实施例中,管理控制器可以基于I3C协议的写操作命令,向PCIE设备发送配置命令。

也就是说,可以基于I3C协议的写操作指令,向PCIE设备发送配置命令,以指示PCIE设备基于配置内容进行配置。或者说,可以将I3C协议的写操作指令作为设置PCIE设备的配置命令。

示例性的,基于I3C协议的写操作指令,向PCIE设备发送配置命令的命令时序,如表7所示。

表7

需要说明的,表7中的字段的说明,参见表1-表6中相应字段的说明,此处不再赘述。

本申请实施例中,中央处理器CPU可以基于I3C协议的中断操作命令,向管理控制器发送应答命令。

也就是说,中央处理器CPU可以基于I3C协议的中断操作命令,向管理控制器发送配置命令的应答命令,也即,设置PCIE设备的应答命令。或者说,可以将I3C协议的中断操作命令作为设置PCIE设备的应答命令。

示例性的,PCIE设备可以通过I3C协议的中断操作命令,主动发起与管理控制器的通信,以将热插拔的配置操作的设置结果发送给管理控制器。

示例性的,基于I3C协议的中断操作命令,发送的应答命令的命令时序,如表8所示。

表8

其中,“Target MDB”字段表示I3C中断操作中的PCIE设备的强制数据字节(mandatory data byte,MDB),用于设备节点(即PCIE设备)向控制节点(即管理控制器)传送中断组号和中断号,其中,不同的中断组号和中断号表示不同的中断类型和内容。“Target IBIData1-Target IBIDataN”是I3C设备节点向控制节点传送的中断数据内容,用于指示热插拔的配置操作的执行结果,也即,PCIE设备的设置结果。

示例性的,“Target MDB”字段的数据格式,如图7所示。其中,“Target MDB”字段的高三位(3bit)为中断组(Interrupt Group)标识,“Target MDB”字段的低五位(5bit)为预留的特定中断号标识(Interrupt Identifier)。

需要说明的,表8中其他字段的说明,参考表1-表7中相关字段的说明,其他不再赘述。

在I3C协议中,定义了部分保留的中断组号和中断号,其中,保留的中断组号取值3’b000,保留的中断号取值5’h00-5’h1F(即5’b00000-5’b11111),可以作为供应商保留(Vendor Reserved)使用。基于此,在对I3C协议进行扩展时,可以使用I3C协议中保留的中断组号和中断号,指示PCIE设备的热插拔的配置操作的设置结果。

示例性的,可以使用保留的中断组号3’b000和中断号5’h12指示PCIE设备的热插拔的配置操作的设置结果。

基于上述,图3所示的数据格式中,配置命令(Setting Command)为I3C DirectedCCC命令。示例性的,Setting Command字段的内容可以如下所示:

Setting Command(for I3C):

0xF1:Set multi PF Request

0x11:Set multi PF Response(Interrupt)

0xF2:Set MSI-X Vector Request

0xF2:Set MSI-X Vector Response(Interrupt)

0xF3:Set GPIO state Request

0x13:Set GPIO state Response(Interrupt)

......

其中,命令字段0xF1用于指示热插拔的配置操作中设置multi PF(多物理功能)的配置命令。命令字段0x11对应的中断操作命令(Interrupt)用于指示热插拔的配置操作中设置multi PF的应答命令。命令字字段0xF2用于指示热插拔的配置操作中设置MSI-X中断寄存器(中断向量)配置命令。命令字段0xF3用于指示热插拔的配置操作中设置GPIO状态的配置命令。

以下,以MSI-X中断寄存器为例,对设置MSI-X中断寄存器的命令进行示例性介绍。

示例性的,在对PCIE设备的MSI-X中断寄存器进行配置时,设置MSI-X中断寄存器的配置命令的命令时序,如表9所示。

表9

其中,0xF2用于指示设置MSI-X中断寄存器的配置命令。其中,“Data1-DataN”字段用于指示MSI-X的配置内容。

需要说明的,表9中其他字段的说明,参考表1-表8中相关字段的说明,其他不再赘述。

示例性的,设置MSI-X中断寄存器的应答命令的命令时序,如表10所示。

表10

其中,“Target IBIData1-Target IBIDataN”用于指示MSI-X中断寄存器的设置结果的内容。

需要说明的,表10中其他字段的说明,参考表1-表9中相关字段的说明,其他不再赘述。

方式3,基于NC-SI协议,获取热插拔属性。

本申请实施例中,管理控制器和PCIE设备可以通过NC-SI总线连接,也就是说,管理控制器和PCIE设备可以通过NC-SI总线进行数据传输。基于此,管理控制器通过NC-SI接口,并基于NC-SI协议,从PCIE设备获取热插拔属性。例如,PCIE设备为Eth网卡时,管理控制器通过NC-SI接口,并基于NC-SI协议,从PCIE设备获取热插拔属性。

示例性的,管理控制器基于NC-SI协议,向PCIE设备发送获取请求,用于请求获取热插拔属性,如热插拔标识、热插拔配置标识和热插拔配置信息。

在NC-SI规范中,定义了可以使用基于媒体独立接口传输(RMII BasedTransport,RBT)接口传输NC-SI边带通信数据。另外,还定义了传输数据时的原始设备制造商(original equipment manufacturer,OEM)命令的数据格式包括命令(Command)和应答(Response)。

本申请实施例,可以通过对NC-SI的OEM命令进行扩展,作为供应商定义(VendorDefined)的命令,用于定义获取热插拔属性(Get Hot Plug Attribute)的命令,该命令可以用于获取PCIE设备的热插拔属性。

如图8所示,为获取热插拔属性的命令的数据格式的示意图。

参见图8,从上之下,第一个字段用于指示目的媒体访问控制器(destinationmedia access control,DMAC),即PCIE设备的MAC,第一个字段占6个字节(Bytes),数值为0xFFFFFFFFFFFF。第二个字段用于指示源媒体访问控制器(source media accesscontrol,SMAC),即管理控制器的MAC,第二个字段占6个字节(Bytes)。第三个字段用于指示以太网类型(EtherType),数值为0x88F8,类型为NC-SI。第四个字段用于指示命令数据包头部(command packet header),其中,命令数据包头部的控制数据包类型(control packettype)=0x50,命令数据包头部为原始设备制造商命令(OEM Command)。第五个字段用于指示制造商标识(Manufacturer ID),供应商标识为IANA。第六个字段用于指示供应商定义的命令(Vendor Defined Command),供应商定义的命令为获取热插拔属性命令(Get HotPlug Attribute Command)。

如图9所示,为获取热插拔属性的应答命令的数据格式的示意图。

参见图9,从上之下、从左至右,第二个字段的数值为0xFFFFFFFFFFFF。第四个字段的控制数据包类型(control packet type)=0xD0。第五个字段用于指示应答代码(Response Code),第六字段用于指示原因代码(Reason Code)。第八个字段用于指示供应商定义的应答(Vendor Defined Resonse),供应商定义的应答为热插拔属性数据(HotPlug Attribute Data)。

需要说明的,图9中的第一字段至第四字段以及第七字段的相关说明,可以参见图8中第一字段至第五字段的说明,此处不再赘述。

基于上述,图3所示的数据格式中,配置命令(Setting Command)为OEM NC-SI命令。示例性的,Setting Command字段的内容可以如下所示:

Setting Command(for NC-SI):

0xA2:Set multi PF Request

0xE2:Set multi PF Response

0xA6:Set MSI-X Vector Request

0xE6:Set MSI-X Vector Response

0xA8:Set GPIO state Request

0xE8:Set GPIO state Response

......

其中,命令字0xA2和0xE2分别用于指示热插拔的配置操作中设置multi PF的配置命令和应答命令。命令字0xA6和0xE6分别用于指示热插拔的配置操作中设置MSI-X中断寄存器的配置命令和应答命令。命令字0xA8和0xE8分别指示热插拔的配置操作中设置GPIO状态的配置命令和应答命令。

以下,以MSI-X中断寄存器为例,对设置MSI-X中断寄存器的命令进行示例性介绍。

如图10所示,为设置MSI-X中断寄存器时,配置命令的数据格式的示意图。

参见图10,从上至下,第六个字段用于指示设置MSI-X中断寄存器的配置命令(SetMSI-X Vector Command)。

需要说明的,图10中其他字段的说明,可以参见图8中相应字段的说明,此处不再赘述。

如图11所示,为设置MSI-X中断寄存器时,应答命令的数据格式的示意图。

参见图11,从上至下,从左至右,第八个字段用于指示设置MSI-X中断寄存器的应答(Set MSI-X Vector Response)。

需要说明的,图11中其他字段的说明,可以参见图9中相应字段的说明,此处不再赘述。

方式4,基于MCTP协议,获取热插拔属性。

本申请实施例中,管理控制器可以通过中央处理器CPU与PCIE设备连接,其中,管理控制器与CPU通过PCIE总线连接,中央处理器CPU与PCIE设备通过PCIE总线连接。基于此,管理控制器通过PCIE接口,基于MCTP over PCIE协议,从PCIE设备中获取热插拔属性。

可以理解的,中央处理器CPU可以认为是基于MCTP进行通信的桥梁和总线控制器。

示例性的,管理控制器基于MCTP协议向中央处理器CPU发送获取请求,中央处理器CPU接收到获取请求后,中央处理器CPU基于PCIE协议向PCIE设备转发获取请求,该获取请求用于请求获取热插拔属性,如热插拔标识、热插拔配置标识和热插拔配置信息。其中,MCTP协议是管理组件传输协议,它是一个管理协议框架,下层支持承载的物理接口支持PCIE、SMBus、UART、USB等。基于此,管理控制器可以基于MCTP over PCIE、MCTP overSMBus、MCTP over UART或MCTP over USB协议结构,与PCIE设备进行通信。

其中,MCTP协议上层所承载的管理协议支持NC-SI、(platform level datamodel,PLDM)等。基于此,管理控制器与PCIE设备之间,可以使用PLDM、NC-SI等MCTP上层所承载的管理协议进行通信。

基于上述,管理控制器与PCIE设备之间的协议结构可以为PLDM over MCTP overPCIE。

本申请实施例,可以通过对PLDM协议进行扩展,定义获取PCIE设备的热插拔属性的OEM命令。其中,PLDM协议中定义了OEM Specific(即厂家定义)的数据类型及命令格式,命令格式包括请求(Request)和应答(Response)。

示例性的,通过对PLDM的OEM Specific数据类型进行扩展,定义获取热插拔属性(Get Hot Plug Attribute)的命令及应答,用于管理控制器获取PCIE设备的热插拔属性。

基于上述,图3所示的数据格式中,配置命令(Setting Command)为OEM PLDM命令。示例性的,Setting Command字段的内容可以如下所示:

Setting Command(for PLBM over MCTP):

0xA2:Set multi PF Request

0xA6:Set MSI-X Vector Request

0xA8:Set GPIO state Request

......

其中,命令字段0xA2用于指示热插拔的配置操作中设置multi PF(多物理功能)的配置命令。命令字段0xA6用于指示热插拔的配置操作设置MSI-X中断寄存器的配置命令。命令字段0xA8用于指示热插拔的配置操作中设置GPIO状态的配置命令。

如图12所示,为获取热插拔属性的请求命令的数据格式的示意图。

参见图12,从上至下,第一个字段用于指示快速外设组件互联供应商定义消息头部(PCIE vendor defined message(缩写为VDM)header),共12个字节(bytes),消息代码(message code)的数值为01111111,为供应商定义的(Vendor Defined)。第二个字段用于指示管理组件传输协议头部(MCTP header),共4个字节(bytes)。第三个字段用于指示完整性检查(integrity check,IC),IC是长度为1比特(bit),IC的值用于指示MCTP消息是否包含完整性检查字段,其中,0x1值表示包含,0x0值表示不包含。第四个字段用于指示消息类型(Message Type),消息类型为PLDM,数值为0x01。第五个字段用于指示平台级数据模型头部(PLDM Header),共4个字节,PLDM类型(PLDM Type)的数值为111111,为厂家定义(OEMSpecific)的。第六个字段用于指示PLDM消息数据(PLDM Message Data),PLDM MessageData的内容为获取热插拔属性的请求命令的数据内容。

示例性的,管理控制器向PCIE设备发送请求命令的过程包括:管理控制器基于MCTP协议上层所承载的管理协议PLDM协议向中央处理器CPU发送请求命令,中央处理器CPU接收到请求命令后,中央处理器CPU基于PCIE协议向PCIE设备转发请求命令,以请求获取热插拔属性,如热插拔标识、热插拔配置标识和热插拔配置信息。

如图13所示,为获取热插拔属性的应答命令的数据格式的示意图。

参见图13,从上至下,第六个字段用于指示PLDM Message Data,PLDM MessageData的内容为获取的热插拔属性的数据内容。

需要说明的,图13中其他字段的说明,参见图12中相应字段的说明,此处不再赘述。

示例性的,PCIE设备向管理控制器发送应答命令的过程包括:PCIE设备基于PCIE协议向中央处理器CPU发送应答命令,中央处理器CPU接收到应答命令后,中央处理器CPU基于PLDM协议向管理控制器转发应答命令,管理控制器基于PLDM协议接收中央处理器CPU发送的应答命令。

以下,以MSI-X中断寄存器为例,对设置MSI-X中断寄存器的命令进行示例性介绍。

示例性的,在对PCIE设备的MSI-X中断寄存器进行设置时,设置MSI-X中断寄存器的配置命令的数据格式的示意图,如图14所示。

参见图14,从上至下,第六个字段用于指示设置MSI-X中断寄存器的配置命令(SetMSI-X Vector Command)。

需要说明的,图14中其他字段的说明,参见图12中相应字段的说明,此处不再赘述。

示例性的,在对PCIE设备的MSI-X中断寄存器进行设置时,设置MSI-X中断寄存器的应答的数据格式的示意图,如图15所示。

参见图15,从上至下,从左至右,第八个字段用于指示设置MSI-X中断寄存器的应答(Set MSI-X Vector Response)。

需要说明的,图15中其他字段的说明,参见图13中相应字段的说明,此处不再赘述。

以下,结合图16,对本申请提供的热插入方法的方案进行示例性介绍。

图16是根据一示例性实施例示出的一种热插入方法的流程图。示例性的,热插入方法包括以下的S1601-S1616。

S1601:热插拔控制器响应于检测到PCIE设备热插入PCIE槽位,发送热插入请求。

本申请实施例中,热插拔控制器可以向中央处理器CPU和/或管理控制器发送热插入请求。

需要说明的,S1601的相关说明,可以参见S401中的方式a和方式b,此处不再赘述。

可选地,S1602:中央处理器CPU获取PCIE槽位的热插拔标识,

本申请实施例中,中央处理器CPU接收到热插入请求后,响应于热插入请求,获取PCIE槽位的热插拔标识,该PCIE槽位的热插拔标识用于指示PCIE槽位支持热插拔或不支持热插拔。

示例性的,中央处理器CPU接收到热插入请求后,在中央处理器CPU运行OS的过程中,OS响应于热插入请求,获取PCIE槽位的热插拔标识。

示例性的,OS读取PCIE槽位的槽位功能(Slot Capability)寄存器,该槽位功能寄存器包括热插拔标志位,该热插拔标志位包括PCIE槽位的热插拔标识。

可选地,S1603:中央处理器CPU基于PCIE槽位的热插拔标识,确定PCIE槽位是否支持热插拔。

示例性的,中央处理器CPU运行OS的过程中,OS基于获取到的PCIE槽位的热插拔标识,确定PCIE槽位是否支持热插拔。由于PCIE槽位的热插拔标识指示了PCIE槽位支持热插拔或不支持热插拔,因此,中央处理器CPU可以基于PCIE槽位的热插拔标识,确定PCIE槽位是否支持热插拔。

示例性的,热插拔标志位为1时,指示PCIE槽位支持热插拔,为0时,指示PCIE槽位不支持热插拔。

可选地,S1604:中央处理器CPU向管理控制器发送确定结果。

其中,该确定结果是指S1603的确定结果,该确定结果用于指示PCIE槽位支持热插拔或不支持热插拔。

可选地,S1605:管理控制器基于PCIE槽位不支持热插拔,输出PCIE槽位的提示信息。

本申请实施例中,中央处理器CPU确定PCIE槽位不支持热插拔后,向管理控制器发送PCIE槽位的提示信息,用于指示PCIE槽位不支持热插拔。管理控制器接收到PCIE槽位的提示信息后,输出PCIE槽位提示信息。

需要说明的,S1605的相关说明,参见S404,二者原理相同,此处不再赘述。

S1606:管理控制器基于PCIE槽位支持热插拔,向热插拔控制器发送上电通知。

S1607:热插拔控制器响应于上电通知,为PCIE设备上电。

需要说明的,S1606-S1607可以认为是“管理控制器为PCIE设备上电”的一种实现方式。另外,S1606-S1607的相关说明,可以参见S401中的方式c,此处不再赘述。

S1608:管理控制器获取PCIE设备的热插拔标识。

需要说明的,S1608的相关说明,可以参见S401,此处不再赘述。

S1609:管理控制器基于PCIE设备的热插拔标识,确定PCIE设备是否支持热插拔。

若确定结果为是,则执行S1610-S1613,若确定结果为否,则执行S1614-S1616。

需要说明的,S1609的相关说明,可以参见S402,此处不再赘述。

S1610:管理控制器基于热插入配置信息,对PCIE设备执行热插入配置操作。

需要说明的,S1610的相关说明,可以参见S403中的情况1,此处不再赘述。

S1611:管理控制器向中央处理器CPU第一完成通知,以通知PCIE设备的热插入配置操作已完成。

S1612:中央处理器CPU响应于接收到的第一完成通知,为PCIE设备分配PCIE资源。

需要说明的,S1611-S1612的相关说明,可以参见S403中的情况2,此处不再赘述。

S1613:中央处理器CPU加载PCIE设备的驱动程序。

需要说明的,S1613的相关说明,可以参见S403中的情况3,此处不再赘述。

S1614:管理控制器输出提示信息,用于提示PCIE设备不支持热插拔。

需要说明的,S1614的相关说明,参见S404,此处不再赘述。

S1615:管理控制器向热插拔控制器发送下电通知,用于通知为PCIE设备下电。

S1616:热插拔控制器响应于下电通知,为PCIE设备下电。

需要说明的,S1615-S1616可以认为是“管理控制器为PCIE设备下电”的一种实现方式。另外,S1615-S1616的相关说明,可以参见S406,此处不再赘述。

以下,结合图17,对本申请提供的热拔出方法的方案进行示例性介绍。

图17是根据一示例性实施例示出的一种热拔出方法的流程图。示例性的,热拔出方法包括以下的S1701-S1714。

S1701:热插拔控制器响应于接收到的热拔出通知,发送热拔出请求。

本申请实施例中,热插拔控制器可以向中央处理器CPU和/或管理控制器发送热拔出请求。

需要说明的,S1701的相关说明,可以参见S401中的方式d和方式e,此处不再赘述。

S1702:中央处理器CPU获取PCIE槽位的热插拔标识。

本申请实施例中,中央处理器CPU接收到热拔出请求后,响应于热拔出请求,获取PCIE槽位的热插拔标识。

需要说明的,S1702的其他相关说明,参见S702中的相关说明,此处不再赘述。

S1703:中央处理器CPU基于PCIE槽位的热插拔标识,确定PCIE槽位是否支持热插拔。

需要说明的,S1703的其他相关说明,参见S1603中的相关说明,此处不再赘述。

S1704:中央处理器CPU向管理控制器发送确定结果。

其中,该确定结果是指S1703的确定结果,该确定结果用于指示PCIE槽位支持热插拔或不支持热插拔。

需要说明的,S1704的其他相关说明,参见S1604中的相关说明,此处不再赘述。

S1705:管理控制器基于PCIE槽位不支持热插拔,输出PCIE槽位的提示信息。

本申请实施例中,管理控制器基于确定结果指示PCIE槽位不支持热插拔,输出PCIE槽位的提示信息。

需要说明的,S1705的相关说明,参见S404以及S1605,二者原理相同,此处不再赘述。

S1706:管理控制器基于PCIE槽位支持热插拔,获取PCIE设备的热插拔标识。

本申请实施例中,管理控制器基于确定结果指示PCIE槽位支持热插拔,获取PCIE设备的热插拔标识。

需要说明的,S1706的相关说明,可以参见S401,此处不再赘述。

S1707:管理控制器基于PCIE设备的热插拔标识,确定PCIE设备是否支持热插拔。

若确定结果为否,则执行S1708,若确定结果为是,则执行S1709-S1714。

需要说明的,S1707的相关说明,可以参见S402,此处不再赘述。

S1708:管理控制器输出提示信息,用于提示PCIE设备不支持热插拔。

需要说明的,S1708的相关说明,参见S404,此处不再赘述。

S1709:管理控制器基于热拔出的配置信息,对PCIE设备执行热拔出的配置操作。

需要说明的,S1709的相关说明,可以参见S403中的情况4,此处不再赘述。

S1710:管理控制器向中央处理器CPU第二通知,以通知为PCIE设备的热拔出的配置操作已完成。

S1711:中央处理器CPU响应于接收到的第二通知,释放PCIE设备的PCIE资源。

需要说明的,S1710-S1711的相关说明,可以参见S403中的情况5,此处不再赘述。

S1712:中央处理器CPU向管理控制器发送的卸载结果通知,用于通知PCIE设备卸载完成。

本申请实施例中,中央处理器CPU释放PCIE设备的PCIE资源后,向管理控制器发送卸载结果通知,以通知管理控制器,PCIE设备已完成卸载。

S1713:管理控制器向热插拔控制器发送下电通知,用于通知为PCIE设备下电。

S1714:热插拔控制器响应于下电通知,为PCIE设备下电。

需要说明的,S1713-S1714可以认为是“管理控制器为PCIE设备下电”的一种实现方式。另外,S1713-S1714的相关说明,可以参见S406,此处不再赘述。

上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,热插拔装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法,示例性的对热插拔装置进行功能模块的划分,例如,热插拔装置可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

示例性的,图18示出了上述实施例中所涉及的热插拔装置(记为热插拔装置1800)的一种可能的结构示意图,该热插拔装置1800所执行的动作通过计算机设备的管理控制器实现或通过管理控制器执行相应的软件实现,该计算机设备包括PCIE设备和PCIE槽位,管理控制器与PCIE设备通信连接,PCIE设备与PCIE槽位插拔连接。热插拔装置1800可以包括获取单元1801和执行单元1802。获取单元1801,用于在PCIE设备热插入PCIE槽位的情况下或在PCIE设备被请求热拔出的情况下,获取热插拔标识,热插拔标识用于指示PCIE设备支持热插拔或不支持热插拔。例如,图4所示的S401。执行单元,用于若热插拔标识指示PCIE设备支持热插拔,对PCIE设备执行热插拔的配置操作;热插拔的配置操作用于对PCIE设备进行配置。例如,图4所示的,S403。

可选地,PCIE设备中还存储有热插拔配置信息;获取单元1801,还用于获取热插拔配置信息;热插拔配置信息包括配置内容;执行单元1802具体用于:基于配置内容,对PCIE设备进行配置。

可选地,热插拔配置信息包括配置命令和配置内容;执行单元1802具体用于:向PCIE设备发送配置命令;配置命令用于指示基于配置内容对PCIE设备进行配置。

可选地,执行单元1802具体用于:基于系统管理总线SMBus协议、改进型集成电路总线I3C协议、管理组件传输MCTP协议或网络控制器边带接口NC-SI协议,向PCIE设备发送配置命令。

可选地,执行单元1802具体用于:基于I3C协议中的写操作指令,向PCIE设备发送配置命令。

可选地,PCIE设备中还存储有热插拔配置标识;获取单元1801具体用于:获取热插拔配置标识;热插拔配置标识用于指示PCIE设备中存储有热插拔配置信息或未存储热插拔配置信息;若热插拔配置标识指示存储有热插拔配置信息,获取热插拔配置信息。

可选地,获取单元1801具体用于:基于系统管理总线SMBus协议、改进型集成电路总线I3C协议、管理组件传输MCTP协议或网络控制器边带接口NC-SI协议,向PCIE设备发送获取请求;获取请求用于请求获取热插拔属性;热插拔属性包括热插拔标识、热插拔配置标识和热插拔配置信息,或者,热插拔属性包括热插拔标识和热插拔配置标识。

可选地,获取单元1801具体用于:基于I3C协议的读操作命令,向PCIE设备发送获取请求。

可选地,执行单元1802还用于:向中央处理器CPU发送完成通知,完成通知用于指示PCIE设备的热插拔的配置操作已完成。

可选地,执行单元1802还用于:若热插拔标识指示PCIE设备不支持热插拔,输出提示信息;提示信息用于提示PCIE设备不支持热插拔。

可选地,在PCIE设备热插入PCIE槽位的情况下,执行单元1802还用于:若热插拔标识指示PCIE设备不支持热插拔,为PCIE设备下电。

关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种热插拔装置1800的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。

本申请实施例还提供了一种计算设备,该计算设备包括管理控制器、PCIE槽位和PCIE设备,PCIE设备与PCIE槽位插接连接,管理控制器与PCIE设备连接。其中,管理控制器用于上述实施例中的热插拔方法。

本申请实施例对计算机设备的具体形式不作任何限制。例如,计算机设备具体可以是终端装置,也可以是网络设备。其中,终端装置可以被称为:终端、用户设备(userequipment,UE)、终端设备、接入终端、用户单元、用户站、移动站、远方站、远程终端、移动设备、用户终端、无线通信设备、用户代理或用户装置等。终端装置具体可以是手机、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、平板电脑、笔记本电脑、上网本、个人数字助理(personal digital assistant,PDA)等。网络设备具体可以是服务器等。其中,服务器可以是一个物理或逻辑服务器,也可以是有两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现服务器的各项功能。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在管理控制器上运行时,使得该管理控制器执行上文提供的任一种管理控制器所执行的方法。

关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。

本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述管理控制器的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述中央处理器CPU还可以替换为通用中央处理器CPU、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。

本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在管理控制器上运行时,使得管理控制器执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在管理控制器上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。

应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在管理控制器上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。

尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个中央处理器CPU或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。

尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

相关技术
  • 一种PCIE设备的热插拔装置、方法、介质及系统
  • 一种服务器及其PCIE设备热插拔管理系统
  • 一种基于PCIe的热插拔控制方法、装置及存储介质
  • 一种网络存储设备与pcie设备的数据交互方法
  • 一种热插拔方法、主机控制器、主机及PCIe桥设备
  • 一种热插拔方法、主机控制器、主机及PCIe桥设备
技术分类

06120116499538