一种Linux下PCIEXPRESS热插拔的方法

文档序号:6436019阅读:819来源:国知局
专利名称:一种Linux下PCI EXPRESS热插拔的方法
技术领域
本发明涉及一种计算机应用技术领域,具体地说是一种用于Linux操作系统带电运行的过程中,实现PCI EXPRESS设备的插入和拔出的方法。
背景技术
PCI Express采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。相对于传统 PCI总线在单一时间周期内只能实现单向传输,PCI Express的双单工连接能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似。PCI Express采用串行方式传输数据。它和原有的ISA、PCI和AGP总线不同。这种传输方式,不必因为某个硬件的频率而影响到整个系统性能的发挥。当然了,整个系统依然是一个整体,但是我们可以方便的提高某一频率低的硬件的频率,以便系统在没有瓶颈的环境下使用。以串行方式提升频率增进效能,关键的限制在于采用什么样的物理传输介质。目前人们普遍采用铜线路,而理论上铜这个材质可以提供的传输极限是10 (ibps。热插拔即带电插拔,热插拔功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等。

发明内容
本发明的目的是提供一种Linux下PCI EXPRESS热插拔的方法。本发明的目的是按以下方式实现的,系统包括热插拔服务程序和标准热插拔系统驱动程序,其中
热插拔服务程序该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程;
标准热插拔系统驱动程序系统调用驱动程序,执行驱动程序的初始化代码,这些代码完成设备的设置,并填写设备的PCI EXPRESS配置命令寄存器的相关标志位来激活设备; 热插拔服务程序和标准热插拔系统驱动程序为Linux核心可加载模块,且负责监控及处理PCI EXPRESS总线上的热插拔动作;
在Linux操作系统带电运行的过程中,实现PCI EXPRESS设备的插入和拔出方法包括以下步骤
系统确认要进行热插拔操作;
热插拔服务程序根据PCI EXPRESS插槽的使用情况,分离PCI EXPRESS设备;人工进行热插拔操作;
如果是热插入则加载驱动模块激活热插入的设备,如果是热拔出则是设备驱动模块保持静默,操作系统释放内存空间和I/O空间,中断线程曾经属于该设备的系统资源。在Linux操作系统带电运行的过程中,热插拔服务程序调用了核心线程event
threado在Linux操作系统带电运行的过程中,在激活或者静默PCI EXPRESS设备时,使用了标准热插拔驱动模块。在热插入激活设备操作时,执行如下操作
1)执行适配卡添加的一系列相关操作失败恢复预处理,存在性检验、打开电源,检查link training状态,获取设备基本信息,配置设备,为设备建立相关数据结构,挂接到上级总线;
2)为新添加的设备查找并挂接驱动程序;
3)对于桥接设备,把它挂接到上级总线后,还要继续对其下级总线进行扫描和挂接;
4)通知用户态守护进程,更新插槽状态。本发明的有益效果是通过动态修改Linux内核中的PCI EXPRESS设备的数据结构信息,不需要专用的硬件设备和专用的驱动程序,主要利用软件进行处理,成本很低且通用性好。


图1是PCI EXPRESS设备热插拔模型图; 图2是PCI EXPRESS设备热插入示意图3是PCI EXPRESS设备热拔出示意图。
具体实施例方式下面参照附图,对本发明的内容以及PCI-EXPRESS设备热插拔的过程加以详细说明。本发明是一种Linux下PCI EXPRESS热插拔的实现机制,允许用户在不关闭系统, 不切断电源的情况下取出和更换损坏的PCI EXPRESS设备,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等。其中该发明包括热插拔服务程序。该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程。标准热插拔系统驱动。系统调用驱动程序,执行驱动的初始化代码。这些代码完成设备的设置,并填写设备的PCI EXPRESS配置命令寄存器的相关标志位来激活设备。如图1所示,在Iinux操作系统带电运行的过程中,实现PCI-EXPRESS设备的插入和拔出。如图2所示,在热插入的时候,该方法首先确定PCI-EXPRESS设备热插入的事件, 然后由热插拔服务程序向热插拔驱动模块发去请求,为插槽加电。加电后,进行链路连接测试,确定加电成功。操作系统会为PCI-EXPRESS设备分配资源,配置PCI-EXPRESS设备的功能。最后操作系统会加载PCI-EXPRESS设备的驱动程序,并填写设备的PCI配置命令寄存器的相关标志位来激活设备。如图3所示,在热拔出的时候,该方法首先确定PCI-EXPRESS设备热拔出的事件,热插拔服务程序命令PCI-EXPRESS设备驱动保持静默,即驱动一方面必须停止向PCI-EXPRESS设备发出请求,另一方面必须完成或者终止所有发出的请求,并禁止 PCI-EXPRESS设备产生新的事务,再将PCI-EXPRESS插槽所连接的端口禁止掉,这样就切断了 PCI-EXPRESS设备的电源。成功切断电源后手动拔出PCI-EXPRESS设备。操作系统释放内存空间,I/O空间等属于该设备的系统资源。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。除说明书所述的技术特征外,均为本专业技术人员的已知技术。
权利要求
1.一种Linux下PCI EXPRESS热插拔的方法,其特征在于,系统包括热插拔服务程序和标准热插拔系统驱动程序,其中热插拔服务程序该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程;标准热插拔系统驱动程序系统调用驱动程序,执行驱动程序的初始化代码,这些代码完成设备的设置,并填写设备的PCI EXPRESS配置命令寄存器的相关标志位来激活设备。
2.根据权利要求1所述的方法,其特征在于热插拔服务程序和标准热插拔系统驱动程序为Linux核心可加载模块,且负责监控及处理PCI EXPRESS总线上的热插拔动作。
3.根据权利要求1所述的方法,其特征在于,在Linux操作系统带电运行的过程中,实现PCI EXPRESS设备的插入和拔出方法包括以下步骤系统确认要进行热插拔操作;热插拔服务程序根据PCI EXPRESS插槽的使用情况,分离PCI EXPRESS设备;人工进行热插拔操作;如果是热插入则加载驱动模块激活热插入的设备,如果是热拔出则是设备驱动模块保持静默,操作系统释放内存空间和I/O空间,中断线程曾经属于该设备的系统资源。
4.根据权利要求4所述的方法,其特征在于,在Linux操作系统带电运行的过程中,热插拔服务程序调用了核心线程eVent_thread。
5.根据权利要求4所述的方法,其特征在于,在Linux操作系统带电运行的过程中,在激活或者静默PCI EXPRESS设备时,使用了标准热插拔驱动模块。
6.根据权利要求4所述的方法,其特征在于,在热插入激活设备操作时,执行如下操作1)执行适配卡添加的一系列相关操作失败恢复预处理,存在性检验、打开电源,检查link training状态,获取设备基本信息,配置设备,为设备建立相关数据结构,挂接到上级总线;2)为新添加的设备查找并挂接驱动程序;3)对于桥接设备,把它挂接到上级总线后,还要继续对其下级总线进行扫描和挂接;4)通知用户态守护进程,更新插槽状态。
全文摘要
本发明提供一种Linux下PCI EXPRESS热插拔的方法,系统包括热插拔服务程序和标准热插拔系统驱动程序,其中:热插拔服务程序该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程;标准热插拔系统驱动程序系统调用驱动程序,执行驱动程序的初始化代码,这些代码完成设备的设置,并填写设备的PCIEXPRESS配置命令寄存器的相关标志位来激活设备。
文档编号G06F9/44GK102508659SQ201110321678
公开日2012年6月20日 申请日期2011年10月21日 优先权日2011年10月21日
发明者向松 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1