0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Linux模块的IDT PCIe热插拔驱动程序

电子设计 来源: IDT 作者: IDT 2021-05-14 07:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在典型的基于PCIe的系统中,枚举PCIe总线,并在系统初始化期间将资源分配给每个PCIe端点设备。由于枚举和资源分配算法的局限性,PCIe拓扑一旦初始化,便已修复,这意味着不得将新的端点设备或交换机连接到系统。

pIYBAGCeIxuAOh0pAAJpmSizleY786.png

IDT PCIe热插拔驱动程序是一个可加载的Linux模块,采用IDT专有的枚举,资源分配和设备检测算法,允许PCIe端点设备和交换机在运行时连接到系统或与系统断开连接,而不会影响系统的运行状态。系统中的其他PCIe设备。以图1为参考,如果双GigE控制器与系统断开连接并随后重新连接至其他交换机上的端口,则光纤通道控制器和SATA / SAS控制器的操作状态将保持不变。这与PCIe热插拔的Windows Vista实施不同,后者必须禁用,重新枚举和重新分配资源给共享同一根端口的所有设备,然后新连接的设备才能运行。通过写入位于/ sysfs目录下的文件,可以简单地以任意方式或更舒适地将设备连接至系统或从系统断开连接。将0写入/sysfs/bus/pci/slots/0000:bb:dd.f/power文件(其中bb指定总线号,dd指定设备号,f指定下游端口的功能号)将禁用指定下游端口,同时将1写入同一文件将启用下游端口。禁用下游端口时,将从Linux内核中删除所有连接到该端口的设备,并且将调用PCI驱动程序remove()函数来执行所需的清除操作。同样,启用下游端口后,将发现与其连接的所有设备,添加到Linux内核中的PCI驱动程序probe()函数将被调用以执行设备初始化。下游端口也可以由第三方内核模式驱动程序通过使用标题为“启用和禁用下游端口”中描述的热插拔驱动程序API来启用或禁用。

下面的图2描述了可以与运行IDT PCIe热插拔驱动程序的系统连接或断开连接的设备类型的示例。

pIYBAGCeIy2ALvVvAAKN2Wm073Y779.png

实现这种热插拔功能的关键是能够为系统中的每个下游端口分配其他未使用的总线号和内存资源。当新设备连接到系统时,这些额外资源将用于使该设备进入运行状态,而不必损害共享同一根端口的其他设备的运行状态。

系统互连注意事项

图3中所示的IDT系统互连拓扑由一个基于x86的根联合处理器(RP)组成,该根复杂处理器通过IDT系统互连PCIe交换机连接到一个或多个基于智能x86的端点处理器(EP)。每个EP都使用IDT域内交换机将它们连接到系统互连PCIe交换机的下游端口。这种拓扑结构与IDT系统互连软件结合使用,可以在系统中任何两个对等方之间进行高速数据传输。

o4YBAGCeIz2AP5lfAAKRpW-0Plo637.png

当使用这种类型的拓扑将新的EP连接到系统或从系统断开连接时,热插拔驱动程序会将EP视为与任何普通端点设备相同。但是,当RP连接到系统或从系统断开时,处理RP的方式有所不同。

通常,当PCIe交换机的上游端口断开时,如图4所示,该交换机将对其所有下游端口进行热复位。此功能在系统互连拓扑中是不可取的,因为当RP与系统断开连接时,它将阻止EP相互通信。热插拔驱动程序通过检测IDT PCIe系统互连交换机并禁用其上游端口断开连接时生成热重置的能力,从而解决了此问题。通过将linkDownHotReset模块参数设置为非零值,可以在热插拔驱动程序中禁用此功能。

热插拔驱动程序还具有被动资源分配算法。该算法主要与IDT系统互连拓扑一起使用,该算法允许RP以最小的系统中断将其连接到操作系统。通常,当端点设备连接到根联合体时,是根联合体将内存资源分配给该设备。对于被动资源分配,是由根联合体将内存资源分配给设备。在被动资源分配的情况下,应该使用哪些内存资源的“根联合体”。默认情况下,热交换驱动程序中会启用此功能,但可以通过设置passiveAllocationDisable模块参数来禁用此功能。

编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 交换机
    +关注

    关注

    23

    文章

    2870

    浏览量

    103923
  • PCIe
    +关注

    关注

    16

    文章

    1422

    浏览量

    87551
  • PCIE总线
    +关注

    关注

    0

    文章

    58

    浏览量

    13950
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    zephyr设备驱动程序模型

        1:Zephyr 内核支持多种设备驱动程序驱动程序是否可用取决于board 和驱动程序。 Zephyr 设备模型为配置作为系统一部分的驱动程序提供了一致的设备模型。设备型号负
    的头像 发表于 07-29 10:34 463次阅读
    zephyr设备<b class='flag-5'>驱动程序</b>模型

    求助,关于55513 Linux驱动程序问题求解

    ; 我们使用 linux 内核 5.4 来构建 fmac 驱动程序,但是当 insmod ko 文件时 brcmfmac 将失败:brcmfmac:brcmf_sdio_htclk:访问关闭时钟失败
    发表于 07-09 08:02

    热插拔算力集群

    能力‌ 服务器节点热插拔‌:集群服务器支持在线更换计算节点(如2U服务器容纳12个热插拔AI节点,单节点集成5个算力卡)。 GPU/算力卡扩展‌:支持多张GPU卡热插拔(如单服务器可扩展10张450W GPU),通过
    的头像 发表于 06-26 09:20 711次阅读

    热插拔的危害及防护

    所谓热插拔就是带电插拔连接线,比如插拔U盘插拔屏线等。大家经常听说当某人自己给笔记本换屏的时候没有拔电池导致主板和屏双双烧毁,为什么会这样呢?其实很简单我们用下面的例子来解释一下。假设
    的头像 发表于 06-03 19:33 2438次阅读
    <b class='flag-5'>热插拔</b>的危害及防护

    如何选择可靠的热插拔?连接器热插拔防护等级详解

    热插拔(Hot Swap)是指能够在不关闭系统电源的情况下,安全地插入或拔除设备板卡或模块。为了确保热插拔过程的安全性和可靠性,连接器的热插拔防护设计至关重要。
    的头像 发表于 04-23 09:53 1058次阅读

    Linux环境再升级:PLIN驱动程序正式发布

    PLIN驱动程序现已正式发布,本文将展示如何安装PLIN驱动程序,以及如何在Linux环境下进行基本的PLIN通信操作,确保您能够快速掌握并应用这一新工具。
    的头像 发表于 04-21 15:29 795次阅读
    <b class='flag-5'>Linux</b>环境再升级:PLIN<b class='flag-5'>驱动程序</b>正式发布

    RTC芯片有Linux PCA2131驱动程序吗?

    RTC 芯片有 Linux PCA2131驱动程序吗? 1) 如果没有,我可以使用任何兼容的驱动程序驱动这个 RTC 芯片吗? 2) 如果是,我在哪里可以找到它?
    发表于 03-31 06:22

    AN3761-KSZ DSA驱动程序的使用

    电子发烧友网站提供《AN3761-KSZ DSA驱动程序的使用.pdf》资料免费下载
    发表于 01-22 16:28 0次下载
    AN3761-KSZ DSA<b class='flag-5'>驱动程序</b>的使用

    用于InterBase的ODBC驱动程序:可与多个第三方工具兼容

    、macOS 和 Linux 上从符合 ODBC 标准的报告、分析、BI 和 ETL 工具访问 InterBase 数据库。我们的 ODBC 驱动程序完全支持标准的 ODBC API 功能和数据类型,并
    的头像 发表于 01-22 09:57 842次阅读
    用于InterBase的ODBC<b class='flag-5'>驱动程序</b>:可与多个第三方工具兼容

    AN-1449:ADM3066E支持完全热插拔,可实现无毛刺的PLC模块插入

    电子发烧友网站提供《AN-1449:ADM3066E支持完全热插拔,可实现无毛刺的PLC模块插入.pdf》资料免费下载
    发表于 01-15 16:44 0次下载
    AN-1449:ADM3066E支持完全<b class='flag-5'>热插拔</b>,可实现无毛刺的PLC<b class='flag-5'>模块</b>插入

    适用于Oracle的ODBC驱动程序

    Linux 上符合 ODBC 标准的报告、分析、BI 和 ETL 工具访问 Oracle 数据库。我们的 ODBC 驱动程序完全支持标准 ODBC API 功能和数据类型,并支持从任何地方轻松
    的头像 发表于 01-13 09:17 852次阅读

    适用于Oracle的dbExpress驱动程序

    (包括社区版)快速访问 Oracle macOS(32 位和 64 位)和 Linux(64 位)平台。对于此服务器,dbExpress 将驱动程序作为实现通用 dbExpress 的独立库提供 用于
    的头像 发表于 01-09 16:04 687次阅读
    适用于Oracle的dbExpress<b class='flag-5'>驱动程序</b>

    DRV8601ZQVEVM ERM/LRA驱动程序评估模块

    电子发烧友网站提供《DRV8601ZQVEVM ERM/LRA驱动程序评估模块.pdf》资料免费下载
    发表于 12-23 15:04 0次下载
    DRV8601ZQVEVM ERM/LRA<b class='flag-5'>驱动程序</b>评估<b class='flag-5'>模块</b>

    用于-48V热插拔控制器的TPS2398EVM/TPS2399EVM评估模块

    电子发烧友网站提供《用于-48V热插拔控制器的TPS2398EVM/TPS2399EVM评估模块.pdf》资料免费下载
    发表于 12-21 09:44 1次下载
    用于-48V<b class='flag-5'>热插拔</b>控制器的TPS2398EVM/TPS2399EVM评估<b class='flag-5'>模块</b>

    使用TPS2492/3热插拔控制器

    电子发烧友网站提供《使用TPS2492/3热插拔控制器.pdf》资料免费下载
    发表于 12-20 17:16 0次下载
    使用TPS2492/3<b class='flag-5'>热插拔</b>控制器