PCIe设备的热插入方法和装置、热拔出方法和装置与流程

文档序号:12469337阅读:846来源:国知局
PCIe设备的热插入方法和装置、热拔出方法和装置与流程

本发明属于计算机存储系统技术领域,特别是涉及一种PCIe设备的热插入方法和装置、热拔出方法和装置。



背景技术:

随着数字化时代的到来,在人们的日常生活和科学研究中,越来越多的传统业务开始数字化、网络化,促使数据爆炸式增长,存储系统在整个业务处理系统中的地位也愈发重要,为了增加存储系统的可扩展性、灵活性和可靠性,提出了对IO卡(包括FC卡、SAS卡)支持热插拔的需求。PCIe热插拔可以有效避免由于更换外设引起的存储系统停机,对于提高存储系统的可用性、可靠性意义重大。

1997年,PCI SIG制定了第一个PCI热插拔规范,其中定义了支持热插拔所必需的平台、板卡和软件元素。PCI SIG推出了标准热插拔控制器规范(SHPC SPEC),其中明确了热插拔的标准使用模式和严格的寄存器组要求,并且允许操作系统提供商在平台特定的软件之外提供热插拔支持,逐步完成了热插拔标准制定工作,进入技术的全面推广阶段。2002年以后,Intel把热插拔作为一种天然属性赋予新推出的PCI Express规范,PCI Express热插拔总结了五年来工业标准的经验。直到最新的PCIe 3.0标准中,依然支持PCIe设备的热插拔,具有完整功能的PCI Express热插拔系统在平台硬件和固件支持之外,还必须有操作系统以及设备驱动程序的支持。

根据规范,一个完整的PCI Express热插拔系统需要几方面的相互配合,分别为硬件元素、固件元素和软件元素。硬件元素是指主板总线系统的电气特性方面的支持,包括热插拔控制器(Hot-Plug Controller)、卡槽电源切换逻辑(Card Slot Power Switching Logic)、板卡重置逻辑(Card Reset Logic)、电源指示灯(Power Indicator)、提示按钮(Attention Button)和板卡存在检测引脚(Card Present Detect Pins)等等;固件元素是指主板BIOS必须对热插拔提供的支持,要实现PCI Express热插拔,固件必须提供OSHP方法或ACPI_OSC方法之一;软件元素是指操作系统操综合使用PCI Express热插拔所必须提供的功能组件。

为了提供PCI Express热插拔服务,Linux内核PCIExpress热插拔(pciehp)子系统实现了用户操作界面、热插拔服务程序和标准热插拔系统驱动等热插拔软件元素,并使软件的行为符合热插拔标准使用模式。在PCIe设备热插入过程中,pciehp模块检测到设备插入事件,会调用设备对应驱动的probe函数,为设备分配资源空间并使能设备,但是此时设备的资源空间可能分配不成功。这是因为对于正常PCIe设备的资源分配,是在系统启动时,OS先采用深度优先的算法遍历PCIe总线系统,获得PCIe总线系统的拓扑结构,并统计每个PCIe设备的资源需求。对于PCIe桥设备,其资源空间要包含插在其上的终端设备的资源空间,如图1所示,图1为现有技术中的PCIe设备热插入过程示意图,Bridge1的资源区间包含了Device2、Device3的资源区间,当有事务下发到Bridge1时,Bridge1检查事务目的地址是否落在其资源空间中,如果是,则向下转发该事务,由Device2和Device3自主判定是否响应该事务请求;如果不在其资源空间中,则丢弃该事务。在系统启动之后,Bridge1的资源区间和Device2、Device3的资源区间都已确定,如果此时想在Bridge1下的总线上插入设备Device4,则需要从Bridge1的资源空间中划分出空闲的一块给Device4使用,如果空闲空间不足,则Device4无法被系统使用。



技术实现要素:

为解决上述问题,本发明提供了一种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设备热插入的成功率,进而提高存储系统的可用性、可扩展性和可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为现有技术中的PCIe设备热插入过程示意图;

图2为本申请实施例提供的第一种PCIe设备的热插入方法的示意图;

图3为本申请实施例提供的第一种PCIe设备的热插入装置的示意图;

图4为PCIe设备的热插入的示意图;

图5为本申请实施例提供的一种PCIe设备的热拔出方法的示意图;

图6为PCIe设备的热拔出过程的示意图;

图7为本申请实施例提供的一种PCIe设备的热拔出装置的示意图。

具体实施方式

本发明的核心思想在于提供一种PCIe设备的热插入方法和装置、热拔出方法和装置,能够充分利用系统的资源空间,保证了在插入新设备的桥设备资源空间不足但是全局资源空间充足的情况下,新设备依然可用,而且不会暂停也不会影响系统中其他PCIe设备的正常使用,从而提高PCIe设备热插入的成功率,进而提高存储系统的可用性、可扩展性和可靠性。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请实施例提供的第一种PCIe设备的热插入方法如图2所示,图2为本申请实施例提供的第一种PCIe设备的热插入方法的示意图。该方法包括如下步骤:

S1:通过中断获得PCIe设备插入到系统中的信息;

S2:查询所述PCIe设备的资源空间需求;

S3:查询所述PCIe设备的上一级桥设备的第一空闲资源空间,如果所述第一空闲资源空间不小于所述资源空间需求,则将所述第一空闲资源空间分配给所述PCIe设备;

S4:如果所述第一空闲资源空间小于所述资源空间需求,则查询所述上一级桥设备的更上一级桥设备的第二空闲资源空间,如果所述第二空闲资源空间不小于所述资源空间需求,则将所述第二空闲资源空间分配给所述PCIe设备;

S5:在所述PCIe设备的上一级桥设备的扩展寄存器对中对所述PCIe设备占用的资源空间进行记录。

通过上述描述可知,本申请实施例提供的第一种PCIe设备的热插入方法,由于当所述第一空闲资源空间小于所述资源空间需求,则查询所述上一级桥设备的更上一级桥设备的第二空闲资源空间,如果所述第二空闲资源空间不小于所述资源空间需求,则将所述第二空闲资源空间分配给所述PCIe设备,并在所述PCIe设备的上一级桥设备的扩展寄存器对中对所述PCIe设备占用的资源空间进行记录,因此能够充分利用系统的资源空间,保证了在插入新设备的桥设备资源空间不足但是全局资源空间充足的情况下,新设备依然可用,而且不会暂停也不会影响系统中其他PCIe设备的正常使用,从而提高PCIe设备热插入的成功率,进而提高存储系统的可用性、可扩展性和可靠性。

本申请实施例提供的第二种PCIe设备的热插入方法,是在上述第一种PCIe设备的热插入方法的基础上,还包括如下技术特征:

如果所述第二空闲资源空间小于所述资源空间需求时,则继续向上回溯,遍历从根节点到所述PCIe设备路径上的所有桥设备;

如果找到具有足够的空闲资源空间的预设桥设备,则将所述预设桥设备的空闲资源空间分配给所述PCIe设备;

在所述预设桥设备到所述PCIe设备的路径上所有桥设备的扩展寄存器对中对所述PCIe设备占用的资源空间进行记录。

本申请实施例提供的第三种PCIe设备的热插入方法,是在上述第二种PCIe设备的热插入方法的基础上,还包括如下技术特征:

如果从所述根节点到所述PCIe设备路径上的所有桥设备都不具有足够的空闲资源空间,则报告热插入过程失败。

具体的,上述步骤由硬件模块、软件初始化模块和软件热插入模块来实现,其中,硬件模块主要规定对PCIe桥设备进行增强,增加一到多组寄存器对用来记录资源空间的起始和结束地址。桥设备的不同寄存器对记录的资源空间不相互重叠,在桥设备进行事务转发时,依次检查事务的目的地址是否落在各个寄存器对的资源空间中,只要落在任何一个寄存器对的资源空间中,桥设备就向下转发事务。

软件初始化模块在系统上电时,通过深度优先遍历,获得系统的PCIe设备拓扑图,形成一棵以host bridge为根节点的多叉树,同时为已存在的PCIe设备分配资源空间,并配置好桥设备的资源空间,保证发送到PCIe终端设备的事务可以由桥设备正确转发到目的终端设备。

软件热插入模块,当维护人员插入PCIe设备,并按下attention button后,操作系统通过中断获知有PCIe设备插入到系统,在中断服务程序中调用软件热插入模块,该模块首先查询热插入设备的资源空间需求,在其上游桥设备的资源空间中查找空闲空间;如果空闲空间不足,则继续向上回溯,查找更上一层桥设备的资源空间,如果查找到,设置该桥设备中的这段资源空间已用,并在下游桥设备的扩展寄存器中记录这段空间,最后设置新插入设备的寄存器组;如果仍然查找不到足够的空闲空间,则继续向上回溯,直到根设备,如果根设备仍然没有足够的资源空间,则设备热插入失败。

本申请实施例提供的第一种PCIe设备的热插入装置如图3所示,图3为本申请实施例提供的第一种PCIe设备的热插入装置的示意图。该装置包括:

插入信息获得单元301,用于通过中断获得PCIe设备插入到系统中的信息;

第一资源空间需求查询单元302,用于查询所述PCIe设备的资源空间需求;

第一空闲资源空间查询和分配单元303,用于查询所述PCIe设备的上一级桥设备的第一空闲资源空间,如果所述第一空闲资源空间不小于所述资源空间需求,则将所述第一空闲资源空间分配给所述PCIe设备;

第二空闲资源空间查询和分配单元304,用于当所述第一空闲资源空间小于所述资源空间需求时查询所述上一级桥设备的更上一级桥设备的第二空闲资源空间,如果所述第二空闲资源空间不小于所述资源空间需求,则将所述第二空闲资源空间分配给所述PCIe设备;

第一记录单元305,用于在所述PCIe设备的上一级桥设备的扩展寄存器对中对所述PCIe设备占用的资源空间进行记录。

需要说明的是,其中待热插拔的PCIe设备可以是任何遵循PCIe协议的设备;增强的PCIe桥设备在现有桥设备的基础上增加一到多组寄存器对记录桥设备下游设备占用的资源空间。软件初始化模块与Linux内核中的初始化部分并无区别,主要通过深度优先遍历,获得系统PCIe设备拓扑图,并统计设备的资源空间需求,为设备分配资源空间,并记录到对应桥设备的寄存器对中,同时通过软件的方式将全局的系统资源空间使用情况组织成一棵树,便于查找和使用。

本申请实施例提供的第二种PCIe设备的热插入装置,是在上述第一种PCIe设备的热插入装置的基础上,还包括如下技术特征:

遍历单元,用于当所述第二空闲资源空间小于所述资源空间需求时,则继续向上回溯,遍历从根节点到所述PCIe设备路径上的所有桥设备;

第三空闲资源空间查询和分配单元,用于如果找到具有足够的空闲资源空间的预设桥设备,则将所述预设桥设备的空闲资源空间分配给所述PCIe设备;

第二记录单元,用于在所述预设桥设备到所述PCIe设备的路径上所有桥设备的扩展寄存器对中对所述PCIe设备占用的资源空间进行记录。

本申请实施例提供的第三种PCIe设备的热插入装置,是在上述第二种PCIe设备的热插入装置的基础上,还包括如下技术特征:

报告单元,用于当从所述根节点到所述PCIe设备路径上的所有桥设备都不具有足够的空闲资源空间时报告热插入过程失败。

如图4所示,图4为PCIe设备的热插入的示意图。热插入设备device5,先向上回溯到bridge2,没有足够的空闲空间,再回溯到bridge1,仍然没有足够的空闲空间,最后到root bridge,有足够的空闲空间,依次记录到bridge1和bridge2的扩展寄存器对中,并分配给device5。

本申请实施例提供的一种PCIe设备的热拔出方法如图5所示,图5为本申请实施例提供的一种PCIe设备的热拔出方法的示意图。该方法包括如下步骤:

A1:通过中断获得PCIe设备要从系统热拔出的信息;

A2:停止向待拔出的所述PCIe设备下发事务,释放待拔出的所述PCIe设备的资源空间;

A3:向上回溯从根节点到待拔出的所述PCIe设备的路径上的桥设备,如果所述待拔出的PCIe设备的资源空间记录在桥设备的扩展寄存器对中,则清除所述扩展寄存器对中的所述PCIe设备占用的资源空间的内容。

具体的,软件热拔出模块在维护人员按下attention button之后,通过中断获知系统要热拔出设备,软件热拔出模块释放待拔出设备的资源空间,并向上回溯从根节点到待拔出设备路径上的所有桥设备,如果待拔出设备的资源空间包含在桥设备的扩展寄存器组中,则清除该扩展寄存器组。以图6为例,图6为PCIe设备的热拔出过程的示意图,软件热拔出模块在热拔出device5时,依次释放device5的资源空间、清除bridge2的扩展寄存器对、清除bridge1的扩展寄存器对。

本申请实施例提供的一种PCIe设备的热拔出装置如图7所示,图7为本申请实施例提供的一种PCIe设备的热拔出装置的示意图。该装置包括:

拔出信息获得单元701,用于通过中断获得PCIe设备要从系统热拔出的信息;

资源空间释放单元702,用于停止向待拔出的所述PCIe设备下发事务,释放待拔出的所述PCIe设备的资源空间;

回溯和清除单元703,用于向上回溯从根节点到待拔出的所述PCIe设备的路径上的桥设备,如果所述待拔出的PCIe设备的资源空间记录在桥设备的扩展寄存器对中,则清除所述扩展寄存器对中的所述PCIe设备占用的资源空间的内容。

综上所述,本申请实施例提供的PCIe设备的热插入方法和装置以及热拔出方法和装置,增加了PCIe桥设备的一到多组寄存器对,改进了PCIe设备热插入时的资源分配算法和设备热拔出时的资源回收算法,通过软硬件协同,可以在不终止其他PCIe设备正常使用的情况下,保证在被插入的PCIe桥设备空闲资源空间不足而全局的空闲资源空间足够的情况下,仍然能成功的进行PCIe设备的热插入,具有足够的灵活性,从而大大提高了PCIe设备热插入的成功率,进而提高了存储系统的可用性、可扩展性和可靠性。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1