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

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

    关注

    19

    文章

    2431

    浏览量

    95620
  • PCIe
    +关注

    关注

    13

    文章

    1082

    浏览量

    80797
  • PCIE总线
    +关注

    关注

    0

    文章

    57

    浏览量

    13279
收藏 人收藏

    评论

    相关推荐

    键盘热插拔和非热插拔的区别

    、电源供应、软件驱动、使用便利性、设备损坏与安全性、推动产业发展等。 1. 连接方式 热插拔键盘通常使用USB或无线连接方式,插入即可立即生效。非热插拔键盘一般使用PS/2接口连接,插入后需要重启计算机才能使用。 2. 电源供
    的头像 发表于 02-02 17:34 1343次阅读

    热插拔是什么原理

    和易用性,同时降低系统维护的难度和成本。 热插拔的主要目标是将瞬间高电流控制在较低且合适的范围内。热插拔芯片通常包括一个驱动MOS设计和电流检测电阻,除了实现基本的热插拔功能,它还能够
    的头像 发表于 01-16 11:03 1006次阅读
    <b class='flag-5'>热插拔</b>是什么原理

    热插拔和非热插拔的区别

    热插拔和非热插拔的区别  热插拔和非热插拔是指电子设备或组件在工作状态下是否可以进行插拔操作的一种分类。
    的头像 发表于 12-28 10:01 1028次阅读

    linux驱动程序的主要流程和功能

    驱动程序是用于控制和管理硬件设备的软件模块,它主要负责与设备进行交互,通过操作设备的寄存器和接口,实现对硬件的控制和访问。在Linux系统中,驱动程序是实现与硬件设备交互的一个关键部分
    的头像 发表于 12-08 14:56 769次阅读

    嵌入式Linux的摄像头驱动程序设计与实现

    电子发烧友网站提供《嵌入式Linux的摄像头驱动程序设计与实现.pdf》资料免费下载
    发表于 10-12 09:31 1次下载
    嵌入式<b class='flag-5'>Linux</b>的摄像头<b class='flag-5'>驱动程序</b>设计与实现

    适用于Linux Emulex驱动程序 版本10.3

    电子发烧友网站提供《适用于Linux Emulex驱动程序 版本10.3 .pdf》资料免费下载
    发表于 08-24 15:08 0次下载
    适用于<b class='flag-5'>Linux</b> Emulex<b class='flag-5'>驱动程序</b> 版本10.3

    适用于Linux Emulex驱动程序 10.2版本

    电子发烧友网站提供《适用于Linux Emulex驱动程序 10.2版本.pdf》资料免费下载
    发表于 08-24 11:39 0次下载
    适用于<b class='flag-5'>Linux</b> Emulex<b class='flag-5'>驱动程序</b> 10.2版本

    最新的Linux aarch64 LSA驱动程序

    电子发烧友网站提供《最新的Linux aarch64 LSA驱动程序.zip》资料免费下载
    发表于 08-23 15:46 2次下载
    最新的<b class='flag-5'>Linux</b> aarch64 LSA<b class='flag-5'>驱动程序</b>

    Emulex 10.3版本Linux驱动程序

    电子发烧友网站提供《Emulex 10.3版本Linux驱动程序.pdf》资料免费下载
    发表于 08-23 15:21 0次下载
    Emulex 10.3版本<b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b>

    适用于Linux的Emulex驱动程序发行说明

    电子发烧友网站提供《适用于Linux的Emulex驱动程序发行说明.pdf》资料免费下载
    发表于 08-16 14:37 1次下载
    适用于<b class='flag-5'>Linux</b>的Emulex<b class='flag-5'>驱动程序</b>发行说明

    SI Logic Scientific-Linux 5.5驱动程序

    电子发烧友网站提供《SI Logic Scientific-Linux 5.5驱动程序.zip》资料免费下载
    发表于 08-11 09:52 0次下载
    SI Logic Scientific-<b class='flag-5'>Linux</b> 5.5<b class='flag-5'>驱动程序</b>

    Linux驱动程序下载

    电子发烧友网站提供《Linux驱动程序下载.zip》资料免费下载
    发表于 08-09 09:12 1次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b>下载

    Emulex Linux驱动程序 版本12.6.182.4

    电子发烧友网站提供《Emulex Linux驱动程序 版本12.6.182.4.pdf》资料免费下载
    发表于 08-04 16:37 0次下载
    Emulex <b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b> 版本12.6.182.4

    Emulex 10.4版本Linux驱动程序

    电子发烧友网站提供《Emulex 10.4版本Linux驱动程序.pdf》资料免费下载
    发表于 08-01 15:56 0次下载
    Emulex 10.4版本<b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b>

    适用于Linux驱动程序发行说明

    电子发烧友网站提供《适用于Linux驱动程序发行说明.pdf》资料免费下载
    发表于 07-24 15:04 0次下载
    适用于<b class='flag-5'>Linux</b>的<b class='flag-5'>驱动程序</b>发行说明