CN102508659A - 一种Linux下PCI EXPRESS热插拔的方法 - Google Patents
一种Linux下PCI EXPRESS热插拔的方法 Download PDFInfo
- Publication number
- CN102508659A CN102508659A CN2011103216786A CN201110321678A CN102508659A CN 102508659 A CN102508659 A CN 102508659A CN 2011103216786 A CN2011103216786 A CN 2011103216786A CN 201110321678 A CN201110321678 A CN 201110321678A CN 102508659 A CN102508659 A CN 102508659A
- Authority
- CN
- China
- Prior art keywords
- hot plug
- equipment
- pci express
- linux
- hot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种Linux下PCI EXPRESS热插拔的方法,系统包括:热插拔服务程序和标准热插拔系统驱动程序,其中:热插拔服务程序:该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程;标准热插拔系统驱动程序:系统调用驱动程序,执行驱动程序的初始化代码,这些代码完成设备的设置,并填写设备的PCIEXPRESS配置命令寄存器的相关标志位来激活设备。
Description
技术领域
本发明涉及一种计算机应用技术领域, 具体地说是一种用于Linux操作系统带电运行的过程中,实现PCI EXPRESS设备的插入和拔出的方法。
背景技术
PCI Express采用了目前业内流行的点对点串行连接,比起PCI以及更早期的计算机总线的共享并行架构,每个设备都有自己的专用连接,不需要向整个总线请求带宽,而且可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽。相对于传统PCI总线在单一时间周期内只能实现单向传输,PCI Express的双单工连接能提供更高的传输速率和质量,它们之间的差异跟半双工和全双工类似。
PCI Express采用串行方式传输数据。它和原有的ISA、PCI和AGP总线不同。这种传输方式,不必因为某个硬件的频率而影响到整个系统性能的发挥。当然了,整个系统依然是一个整体,但是我们可以方便的提高某一频率低的硬件的频率,以便系统在没有瓶颈的环境下使用。以串行方式提升频率增进效能,关键的限制在于采用什么样的物理传输介质。目前人们普遍采用铜线路,而理论上铜这个材质可以提供的传输极限是10 Gbps。
热插拔即带电插拔,热插拔功能就是允许用户在不关闭系统,不切断电源的情况下取出和更换损坏的硬盘、电源或板卡等部件,从而提高了系统对灾难的及时恢复能力、扩展性和灵活性等。
发明内容
本发明的目的是提供一种Linux下PCI EXPRESS热插拔的方法。
本发明的目的是按以下方式实现的,系统包括:热插拔服务程序和标准热插拔系统驱动程序,其中
热插拔服务程序:该程序分为Linux核内部分和核外部分,其控制逻辑以模块的方式加载入内核,负责监控及处理PCI EXPRESS总线上的热插拔动作;核外部分为用户空间脚本,从内核中调用,并根据内核传回的信息执行后续处理过程;
标准热插拔系统驱动程序:系统调用驱动程序,执行驱动程序的初始化代码,这些代码完成设备的设置,并填写设备的PCI EXPRESS 配置命令寄存器的相关标志位来激活设备;
热插拔服务程序和标准热插拔系统驱动程序为Linux核心可加载模块,且负责监控及处理PCI EXPRESS总线上的热插拔动作;
在Linux操作系统带电运行的过程中,实现PCI EXPRESS设备的插入和拔出方法包括以下步骤:
系统确认要进行热插拔操作;
热插拔服务程序根据PCI EXPRESS插槽的使用情况,分离PCI EXPRESS设备;
人工进行热插拔操作;
如果是热插入则加载驱动模块激活热插入的设备,如果是热拔出则是设备驱动模块保持静默,操作系统释放内存空间和I/O空间,中断线程曾经属于该设备的系统资源。
在Linux操作系统带电运行的过程中,热插拔服务程序调用了核心线程event_thread。
在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所示,在linux操作系统带电运行的过程中,实现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空间等属于该设备的系统资源。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的技术人员在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书所限定的保护范围为准。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (6)
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)通知用户态守护进程,更新插槽状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103216786A CN102508659A (zh) | 2011-10-21 | 2011-10-21 | 一种Linux下PCI EXPRESS热插拔的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103216786A CN102508659A (zh) | 2011-10-21 | 2011-10-21 | 一种Linux下PCI EXPRESS热插拔的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102508659A true CN102508659A (zh) | 2012-06-20 |
Family
ID=46220751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103216786A Pending CN102508659A (zh) | 2011-10-21 | 2011-10-21 | 一种Linux下PCI EXPRESS热插拔的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508659A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016202040A1 (zh) * | 2015-06-17 | 2016-12-22 | 中兴通讯股份有限公司 | 一种基于pcie子卡热插拔的方法及装置 |
CN107590045A (zh) * | 2017-08-24 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种在Linux系统下对EIO板卡进行热插拔测试的方法 |
CN108052428A (zh) * | 2017-12-08 | 2018-05-18 | 郑州云海信息技术有限公司 | 一种测试pcie卡热插拔功能的测试方法 |
CN108694145A (zh) * | 2017-04-06 | 2018-10-23 | 佛山市顺德区顺达电脑厂有限公司 | Pci-e接口控制系统 |
CN109032972A (zh) * | 2018-07-25 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种热插拨事件的处理方法及系统 |
CN114153761A (zh) * | 2021-11-29 | 2022-03-08 | 中汽创智科技有限公司 | 一种外部设备互联总线接口设备的探测方法及系统 |
CN114676086A (zh) * | 2022-03-25 | 2022-06-28 | 苏州浪潮智能科技有限公司 | 一种插拔硬盘的方法、装置、电子设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136504A1 (en) * | 2005-12-12 | 2007-06-14 | Inventec Corporation | Hot-plug control system and method |
CN101034380A (zh) * | 2007-04-19 | 2007-09-12 | 杭州华为三康技术有限公司 | 实现周边元件接口加速总线插卡热插拔的方法及装置 |
CN101075216A (zh) * | 2006-05-19 | 2007-11-21 | 图诚科技股份有限公司 | 在计算机上实现图形显示装置动态移除的方法 |
CN101082894A (zh) * | 2006-05-30 | 2007-12-05 | 英业达股份有限公司 | 高速周边组件连接接口设备的热插拔系统及其方法 |
-
2011
- 2011-10-21 CN CN2011103216786A patent/CN102508659A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070136504A1 (en) * | 2005-12-12 | 2007-06-14 | Inventec Corporation | Hot-plug control system and method |
CN101075216A (zh) * | 2006-05-19 | 2007-11-21 | 图诚科技股份有限公司 | 在计算机上实现图形显示装置动态移除的方法 |
CN101082894A (zh) * | 2006-05-30 | 2007-12-05 | 英业达股份有限公司 | 高速周边组件连接接口设备的热插拔系统及其方法 |
CN101034380A (zh) * | 2007-04-19 | 2007-09-12 | 杭州华为三康技术有限公司 | 实现周边元件接口加速总线插卡热插拔的方法及装置 |
Non-Patent Citations (1)
Title |
---|
赵海波 等: "Compact PCI热插拔技术的研究及其实现", 《计算机测量与控制》, vol. 13, no. 4, 30 April 2005 (2005-04-30) * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016202040A1 (zh) * | 2015-06-17 | 2016-12-22 | 中兴通讯股份有限公司 | 一种基于pcie子卡热插拔的方法及装置 |
CN108694145A (zh) * | 2017-04-06 | 2018-10-23 | 佛山市顺德区顺达电脑厂有限公司 | Pci-e接口控制系统 |
CN108694145B (zh) * | 2017-04-06 | 2021-08-13 | 佛山市顺德区顺达电脑厂有限公司 | Pci-e接口控制系统 |
CN107590045A (zh) * | 2017-08-24 | 2018-01-16 | 郑州云海信息技术有限公司 | 一种在Linux系统下对EIO板卡进行热插拔测试的方法 |
CN108052428A (zh) * | 2017-12-08 | 2018-05-18 | 郑州云海信息技术有限公司 | 一种测试pcie卡热插拔功能的测试方法 |
CN109032972A (zh) * | 2018-07-25 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种热插拨事件的处理方法及系统 |
CN114153761A (zh) * | 2021-11-29 | 2022-03-08 | 中汽创智科技有限公司 | 一种外部设备互联总线接口设备的探测方法及系统 |
CN114676086A (zh) * | 2022-03-25 | 2022-06-28 | 苏州浪潮智能科技有限公司 | 一种插拔硬盘的方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508659A (zh) | 一种Linux下PCI EXPRESS热插拔的方法 | |
US8566644B1 (en) | System and method for debugging a target computer using SMBus | |
US20170337069A1 (en) | Concurrent testing of pci express devices on a server platform | |
TWI467375B (zh) | 具有修復毀損bios資料功能之電腦系統及其修復方法 | |
US20130275640A1 (en) | Automatic downstream to upstream mode switching at a universal serial bus physical layer | |
CN107133185B (zh) | 通过bios实现pcie设备热插拔功能的方法及主板 | |
CN104133533A (zh) | 一种支持全长的pcie扩展卡板卡系统 | |
CN104731741B (zh) | 热插拔的实现方法和系统 | |
US20160306634A1 (en) | Electronic device | |
CN106406936A (zh) | 一种fpga程序多版本管理装置及方法 | |
CN107957885A (zh) | 一种基于飞腾平台的pcie链路设备待机与恢复方法 | |
CN102446149A (zh) | 一种能够实现紧凑型pci产品热插拔的处理方法以及系统 | |
CN106487721A (zh) | 网络设备和用于网络设备中的报文转发方法 | |
CN103412836B (zh) | 热插拔处理方法、装置以及系统 | |
KR101284403B1 (ko) | 저장 네트워크 환경에서 scsi 타겟으로부터 scsi 에러 응답을 커스터마이징하는 방법, 비-일시적 컴퓨터 판독 가능한 저장 매체, 저장 네트워크 환경에서 scsi 타겟으로부터 수신된 scsi 에러 응답을 커스터마이징하는 시스템 | |
US9779047B2 (en) | Universal intelligent platform management interface (IPMI) host to baseboard management controller (BMC) communication for non-x86 and legacy free systems | |
CN110968352A (zh) | 一种pcie设备的复位系统及服务器系统 | |
US7549009B2 (en) | High-speed PCI interface system and a reset method thereof | |
CN108153626B (zh) | 一种usb、串口复用与安全隔离系统 | |
CN110308940B (zh) | 一种模拟键盘软关机按键实现远程软关机的方法 | |
CN108153553A (zh) | 一种高端服务器启动方法、系统、装置及计算机存储介质 | |
US10437768B2 (en) | Method and host node for configuring a remote node and a host node | |
CN208477915U (zh) | 具有自动化中控机制的固态硬盘批次拷贝装置 | |
CN103207850B (zh) | 异质设备的传输系统 | |
CN202331426U (zh) | 现场可编程门阵列的动态加载系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120620 |