[发明专利]在Linux系统下支持多RC的PCIE设备动态扫描方法有效
申请号: | 201510269974.4 | 申请日: | 2015-05-25 |
公开(公告)号: | CN104820646B | 公开(公告)日: | 2018-02-16 |
发明(设计)人: | 刘勇刚;陈俊强;田运朴;朱曦 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F13/22 | 分类号: | G06F13/22 |
代理公司: | 北京捷诚信通专利事务所(普通合伙)11221 | 代理人: | 王卫东 |
地址: | 430073 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | linux 系统 支持 rc pcie 设备 动态 扫描 方法 | ||
技术领域
本发明涉及嵌入式系统应用技术领域,具体涉及在Linux系统下支持多RC(Root complex,根组件)的PCIE(Peripheral Component Interconnect Express,高速外设部件互连)设备动态扫描方法。
背景技术
目前,Linux系统被广泛适用于嵌入式产品开发中,随着嵌入式技术的发展,产品设计的集成度也越来越高,在高端通信设备中,嵌入式Linux系统需要支持多种类型的PCIE设备,有的PCIE设备需要在系统正常启动后再按照一定的时序配置好其电源、时钟才能正常工作;有的PCIE设备需要在系统正常运行时卸载。
通常Linux系统内核在启动时会自动扫描PCIE设备,并且为其配置和分配系统的总线号、地址、中断等资源;而Linux系统启动时一旦为PCIE设备分配了资源,那么即使在系统运行过程中添加或配置了新的PCIE设备,在系统不复位的情况下,这些已经被分配的资源也不会改变,以至于影响系统对动态加载的PCIE设备的支持,造成系统不能支持PCIE设备的动态加载,严重制约了系统的扩展性和实用性,尤其对于长期不能掉电需要在线扩展功能的设备而言影响跟为严重,例如骨干网通信节点设备。
为了能够支持PCIE设备的动态扫描,满足特殊设备节点高稳定性、可扩展性的要求,目前业界的做法是通过对Linux系统传统的sysfs文件子系统的访问实现对PCIE设备的动态扫描和卸载等操作,实现长期不间断业务站点的功能扩展或升级的功能,如图2所示,在上述方案中,在Linux内核初始化好PCI子系统后,用户通过sysfs文件子系统发送命令,内核对用户命令进行解析,然后执行相应的设备扫描或者卸载操,相关命令示例如下:
扫描PCIE设备命令示例:
echo 1>/sys/bus/pci/slots/0001/:03/:00.0/power;
卸载PCIE设备命令示例:
echo 0>/sys/bus/pci/slots/0001/:03/:00.0/power。
如图1所示,在嵌入式Linux系统中,内核上电初始化时对PCIE总线采用深度优先的扫描算法,对于包含多个RC的系统,内核会依次为每个RC按照深度优先的算法分配总线号资源,系统首先深度优先遍历第一个RC,分配了总线号0和1;接着深度优先遍历第二个RC,分配了总线号2和3;最后深度优先遍历第三个RC,分配了总线号4,5,6,7,8,9,10和11。
而该方案存在以下缺陷:
(1)随着PCIE设备的广泛使用,如今的PCIE设备可能内含桥片,在对PCIE设备动态扫描过程中会产生多级总线,存在多个RC的处理器系统,由于上述方案没有考虑多个RC或者PCIE桥设备动态加入系统的应用场景,此时采用上述方案进行PCIE设备动态扫描方案会产生多级总线地址冲突,造成PCIE设备无法正常加载到系统的严重后果,可见,上述方案无法有效的应用于包含多个RC的系统和包含PCIE桥设备的复杂系统中,解决PCIE总线上的动态扫描或者热拔插之类的问题;
(2)由于有些RC控制器对PCIE设备的访问有一定的约束条件,比如说要求PCIE外设存在且物理链路没问题或者上电时EP设备必须就绪,由于上述方案没有对RC主设备物理链路进行优化控制,当EP物理链路状态变化时,在通过sysfs文件子系统进行PCIE设备扫描时可能会扫描不到PCIE设备、或者导致系统崩溃,不仅致使稳定性较差,还对于嵌入式系统中需要动态配置上电时序、工作时钟的PCIE设备无法支持,只对在上电阶段就链接正常EP设备的动态扫描适用;无法适用于大多数的PCIE桥下行口设备的动态扫描,制约了上述方案的应用范围,使其应用范围变窄;
(3)随着通信系统的高度集成化,动态扩展骨干核心节点的业务板卡应用越来越广泛,很多业务板卡都是以PCIE子卡的方式动态添加到系统中,有些子卡可能还带有多级PCIE桥片,上述PCIE设备动态扫描方案不能实现多级PCIE桥片的PCIE设备动态扫描;
(4)上述方案没有对根总线进行有效防护,当卸载RC根总线后,在不复位的情况下无法恢复,安全性差。
发明内容
本发明所要解决的技术问题是现有PCIE设备的动态扫描和卸载技术可扩展性低、安全性和稳定性差的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种在Linux系统下支持多RC的PCIE设备动态扫描方法,包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510269974.4/2.html,转载请声明来源钻瓜专利网。