一种PCIE设备的热移除方法、系统及相关装置与流程

文档序号:17489239发布日期:2019-04-23 20:17阅读:247来源:国知局
本申请涉及服务器领域,特别涉及一种pcie设备的热移除方法、系统及相关装置。
背景技术
::在服务器主板领域,pcie接口是支持设备的热移除功能的,目前也有技术实现了这一操作,即在开机状态下能安全移除pcie设备而不会引起服务器异常,但是当前的技术是建立在复杂的硬件电路基础上,需要增加的热移除控制电路,电源指示灯以及提示按钮等极大地增加了操作的繁琐性,而且从按下移除按钮到提示可以移除设备这个过程也需要等待时间,当机房大批量服务器都需要热移除某种pcie设备时,维护人员则需要依次对每一台都这样操作,严重降低了服务器维护的效率。技术实现要素:本申请的目的是提供一种pcie设备的热移除方法、系统、一种计算机可读存储介质和一种服务器,解决了逐一移除热移除pcie设备带来的服务器维护效率低的问题。为解决上述技术问题,本申请提供一种pcie设备的热移除方法,其中:在接收到所述pcie设备的下电指令后,将pch中的第一gpio置为低电平;检测到所述第一gpio为低电平后,触发acpihotplug中断;在发生所述acpihotplug中断时,释放所述pcie设备的占用资源;当所述pcie设备的占用资源释放完毕时,生成移除指令,以便移除所述pcie设备。其中,还包括:利用bmcweb远程发送所述下电指令至服务器的bmc。其中,释放所述pcie设备的占用资源之前还包括:关闭所述pcie设备对应插槽的电源。其中,生成移除指令,以便移除所述pcie设备包括:生成移除指令;将所述移除指令发送至维护终端,以便维护人员利用所述维护终端接收到所述移除指令后移除所述pcie设备。本申请还提供一种pcie设备的热移除系统,包括:置位模块,用于在接收到所述pcie设备的下电指令后,将pch中的第一gpio置为低电平;中断触发模块,用于检测到所述第一gpio为低电平后,触发acpihotplug中断;释放模块,用于在发生所述acpihotplug中断时,释放所述pcie设备的占用资源;热移除模块,用于当所述pcie设备的占用资源释放完毕时,生成移除指令,以便移除所述pcie设备。其中,还包括:指令下发模块,用于利用bmcweb远程发送所述下电指令至服务器的bmc。其中,还包括:关闭模块,用于关闭所述pcie设备对应插槽的电源。其中,所述热移除模块包括:生成单元,用于生成移除指令;发送单元,用于将所述移除指令发送至维护终端,以便维护人员利用所述维护终端接收到所述移除指令后移除所述pcie设备。本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的热移除方法的步骤。本申请还提供一种服务器,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的热移除方法的步骤。本申请所提供的一种pcie设备的热移除方法,其中:在接收到所述pcie设备的下电指令后,将pch中的第一gpio置为低电平;检测到所述第一gpio为低电平后,触发acpihotplug中断;在发生所述acpihotplug中断时,释放所述pcie设备的占用资源;当所述pcie设备的占用资源释放完毕时,生成移除指令,以便移除所述pcie设备。本申请利用低电平的gpio触发acpihotplug中断,进而在发生中断时释放pcie设备的占用资源,以完成热移除pcie设备的准备。整个热移除过程只需向服务器发送下电指令,不必利用人工手动操作热插拔开关,并等待系统释放资源后方能移除pcie设备,在批量进行pcie设备的热移除时,节省了等待服务器在进行pcie设备移除前下电准备的时间,大大提高了pcie设备的热移除效率,有利于对于服务器集群等批量服务器的维护。本申请还提供一种pcie设备的热移除系统、一种计算机可读存储介质和一种服务器,具有上述有益效果,此处不再赘述。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本申请实施例所提供的一种pcie设备的热移除方法的流程图;图2为本申请实施例所提供的一种pcie设备的热移除系统结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。请参考图1,图1为本申请实施例所提供的一种pcie设备的热移除方法的流程图,该热移除方法包括:s101:在接收到所述pcie设备的下电指令后,将pch中的第一gpio置为低电平;本步骤旨在接收下电指令,并将pch中的第一gpio置为低电平。在此对于服务器如何接收下电指令不作限定,通常可以由服务器中pcie设备的电源控制器接收该下电指令。下电指令的作用是指明哪一个pcie设备需要被下电,而此时服务器会将pch(platformcontrollerhub,集成南桥)的第一gpio的电位置为低电平。需要注意的是,该gpio可以为pch上的任何一个通用gpio(区别于专用gpio),也即可以将任意一个通用gpio下拉,使其输出低电位。第一gpio可以为“gpp_a0”、““gpp_a1”、“gpp_b0”等通用gpio。在此对于如何使gpio置为低电平不作限定,通常可以利用gpio寄存器或者修改gpio_data实现。区别于现有技术需要人工操作热插拔按钮,本步骤无需借用任何热插拔的物理开关,只需对gpio进行置位即可。s102:检测到所述第一gpio为低电平后,触发acpihotplug中断;由于第一gpio可以为任何一个gpio,检测到第一gpio为低电平时,也就是检测到存在某个gpio为低电平时,触发acpihotplug中断。由此可见,gpio为低电平是触发acpihotplug中断的必要条件。acpihotplug中断是服务器中与热插拔相关的中断。通常而言,所有的acpi相关的寄存器和电源管理的io以及寄存器都位于南桥。在此对于acpihotplug中断的具体实现过程不作限定,优选的,本申请实施例在此提供一种具体实施过程:第一步、初始化根集中器:acpi_pci_root_init是初始化根集中器(以下称为acpipci桥)的第一步,在这里首先调用注册函数acpi_bus_register_driver,它的带入参数是acpi设备的驱动程序描述结构structacpi_driveracpi_pci_root_driver,该函数注册支持acpipci总线的驱动程序,同样一个acpipci桥也和在名字空间创建之后,搜索名字空间中所有设备的类型和名字,并且把它们绑定到相对应的驱动程序上,启动过程中搜索名字空间中已经定义的acpipci,acpi桥设备都使用一个acpi_device数据结构表示,这个数据结构是从acpi的层次上描述设备,支持acpi的pci桥同样和标准的pci-pci桥使用相同的模式遍历,但是在acpi中可以使用(_adr,_bbn,_prt)从名字空间中获得相关的acpipci桥资源信息(例如设备地址资源,总线号,设备的id号和中断路由等),当对acpi_device的所有的字段都完成初始化之后,就会调用acpi_pci_root_add把得到的根集中器的数据结构挂在acpi_pci_roots队列上,顾名思义这个队列就是系统内所有的根集中器的集合。第二步、初始化支持hotplug的根集中器插槽:在完成根集中器的初始化之后,接着就是要对acpipcihotplug的插槽进行初始化,在系统初始化acpihotplug驱动模块的时候,会首先遍历在acpi_pci_roots队列上的所有acpi根集中器,并且调用hotplug驱动模块acpi_pci_register_driver中的add_bridge方法把当前的具备热拔插功能acpi的根集中器都找到,在linuxhotplug中有一个函数detect_ejectable_slots检测是否有可以支持热拔插的slot(插槽以acpihp_slot结构表示),插槽是在名字空间中定义的,可以理解为物理设备上的插槽,也可以理解为在pci桥或者根集中器下的一个负责支持或者管理热拔插的设备,插槽上包含了功能模块(function),表示功能是针对具体设备,如果找到支持热拔插的插槽则表示当前的根集中器是支持热拔插的,反之就会对当前的根集中器下的pci总线做深度遍历,寻找到下一级的支持hotplug的acpipci-pci桥;热拔插的slot是连接在宿主桥也可以连接在pci-pci桥之上的,在宿主桥之下有pci-pci桥,它采用传统的pci桥递归方式查找下一级总线的pci桥;宿主桥获取资源(io和mem)是从地址空间中获得。从名字空间中调用_crs对象找到地址资源后挂上当前的桥描述结构的资源树上。简单来说,本步骤旨在利用低电位的gpio触发acpihotplug中断。s103:在发生所述acpihotplug中断时,释放所述pcie设备的占用资源;触发acpihotplug中断后,本步骤旨在发生acpihotplug中断时,释放pcie设备的占用资源。在此对于pcie的占用资源不作具体限定,通常包括io、内存和资源等。由于热插拔要求pcie设备移除时对服务器的运行无影响,因此进行实际热插拔时要求先断开pcie设备与服务器之间的连接关系,包括数据交互进程,以及pcie设备所占用的服务器资源。需要说明的是,本步骤中在执行时,通常还需要先关闭pcie设备对应插槽的电源,再释放pcie设备的占用资源。这里仅仅关闭pcie设备对应插槽的电源,避免实际插拔时对于服务器的供电结构造成影响。若不关闭pcie设备对应插槽的电源,容易使得服务器上该插槽造成物理损坏。s104:当所述pcie设备的占用资源释放完毕时,生成移除指令,以便移除所述pcie设备。当占用资源释放完毕时,即可生成移除指令,以允许pcie设备热移除。在此对于移除指令的形式不作限定,通常由服务器对外界发送,例如返回至下电指令的发送方或者发送至pcie设备的移除人员的终端等。移除指令的作用是表明服务器已经完成对该pcie设备的热移除准备,此时可以将pcie设备与服务器断开连接。本申请实施例利用低电平的gpio触发acpihotplug中断,进而在发生中断时释放pcie设备的占用资源,以完成热移除pcie设备的准备。整个热移除过程只需向服务器发送下电指令,不必利用人工手动操作热插拔开关,并等待系统释放资源后方能移除pcie设备,在批量进行pcie设备的热移除时,节省了等待服务器在进行pcie设备移除前下电准备的时间,大大提高了pcie设备的热移除效率,有利于对于服务器集群等批量服务器的维护。基于上述实施例,作为优选的实施例,该热移除方法还可以包括:利用bmcweb远程发送所述下电指令至服务器的bmc。本步骤对应上一实施例中的s101,即该下电指令可以利用bmcweb远程终端服务。实际应用时,可以利用远程的客户端登录bmcweb,实现远程对服务器发送下电指令。当然,在此情况下,通常先发送至bmc,再由bmc发送至电源控制器。基于上一实施例,作为优选的实施例,步骤s104可以包括:生成移除指令;将所述移除指令发送至维护终端,以便维护人员利用所述维护终端接收到所述移除指令后移除所述pcie设备。本实施例旨在说明服务器在准备好将pcie设备移除时,可以先生成移除指令,并将该移除指令发送至维护终端。需要说明的是,该维护终端可以是上一实施例中所说明的bmcweb远程服务,也可以是维护人员的手持终端等。这样,在批量下电pcie设备时,无需维护人员逐一操作各个服务器,只需按照维护终端的提示拔下pcie设备即可,无需按下热插拔开关并控制断电等操作,节省了等待服务器在进行pcie设备移除前下电准备的时间。下面详细介绍服务器内部各组件如何实现本申请的技术方案:接收到所述pcie设备的下电指令后,bmc将pch中的第一gpio置为低电平;bios检测到所述第一gpio为低电平后,触发acpihotplug中断;在发生所述acpihotplug中断时,所述bios释放所述pcie设备的占用资源;所述bios向所述bmc发送允许移除指令,以便所述bmc根据所述允许移除指令移除所述pcie设备。由此可见,该热移除过程在服务器内部实际上是bios和bmc二者信息交互的过程。下面对本申请实施例提供的一种pcie设备的热移除系统进行介绍,下文描述的热移除系统与上文描述的一种pcie设备的热移除方法可相互对应参照。参见图2,图2为本申请实施例所提供的一种pcie设备的热移除系统结构示意图,该热移除系统包括:置位模块100,用于在接收到所述pcie设备的下电指令后,将pch中的第一gpio置为低电平;中断触发模块200,用于检测到所述第一gpio为低电平后,触发acpihotplug中断;释放模块300,用于在发生所述acpihotplug中断时,释放所述pcie设备的占用资源;热移除模块400,用于当所述pcie设备的占用资源释放完毕时,生成移除指令,以便移除所述pcie设备。基于上述实施例,作为优选的实施例,所述热移除系统还可以包括:指令下发模块,用于利用bmcweb远程发送所述下电指令至服务器的bmc。基于上述实施例,作为优选的实施例,所述热移除系统还可以包括:关闭模块,用于关闭所述pcie设备对应插槽的电源。基于上述实施例,作为优选的实施例,所述热移除模块400可以包括:消息发送单元,用于所述bmc向所述bmcweb发送允许移除消息。本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。本申请还提供了一种服务器,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述服务器还可以包括各种网络接口,电源等组件。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1