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

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

    关注

    21

    文章

    2625

    浏览量

    99326
  • PCIe
    +关注

    关注

    15

    文章

    1228

    浏览量

    82482
  • PCIE总线
    +关注

    关注

    0

    文章

    58

    浏览量

    13357
收藏 人收藏

    评论

    相关推荐

    Linux驱动程序程序员指南

    电子发烧友网站提供《Linux驱动程序程序员指南.pdf》资料免费下载
    发表于 11-22 15:53 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b><b class='flag-5'>程序</b>员指南

    PCIe热插拔机制介绍

    前言本文主要讲述PCIe热插拔机制,通过图形方式方便读者快速掌握。 一、概述 如果在PCIe设备不支持热插拔的条件下,在不断电的情况下插拔
    的头像 发表于 11-20 09:07 239次阅读
    <b class='flag-5'>PCIe</b><b class='flag-5'>热插拔</b>机制介绍

    pcie设备驱动程序安装步骤

    PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,用于计算机内部硬件组件之间的连接。安装PCIe设备驱动程序是确保硬件
    的头像 发表于 11-13 10:32 360次阅读

    LSP 2.10 DaVinci Linux驱动程序

    电子发烧友网站提供《LSP 2.10 DaVinci Linux驱动程序.pdf》资料免费下载
    发表于 10-09 09:30 0次下载
    LSP 2.10 DaVinci <b class='flag-5'>Linux</b><b class='flag-5'>驱动程序</b>

    热插拔电源是什么意思

    热插拔电源,即带电插拔电源,指的是在不关闭系统电源的情况下,能够安全地将电源模块、板卡等硬件设备插入或拔出系统,而不影响系统的正常工作。这种技术大大提高了系统的可靠性、快速维修性、冗余性和对灾难
    的头像 发表于 09-18 11:00 488次阅读

    Linux设备驱动程序分类有哪些

    Linux设备驱动程序是操作系统与硬件设备之间的桥梁,负责实现硬件设备与操作系统之间的通信和控制。Linux设备驱动程序的分类繁多,可以根据不同的标准进行分类。 按硬件类型分类
    的头像 发表于 08-30 15:11 464次阅读

    linux驱动程序如何加载进内核

    ,需要了解Linux内核的基本概念和API。以下是一些关键概念: 1.1 内核模块Linux内核模块是一种动态加载和卸载的代码,可以在不重新启动系统的情况下加载和卸载。
    的头像 发表于 08-30 15:02 393次阅读

    linux驱动程序主要有哪些功能

    Linux驱动程序是操作系统与硬件设备之间进行通信的桥梁,负责实现硬件设备与操作系统之间的数据交换和控制。Linux驱动程序的主要功能包括以下几个方面: 设备识别与初始化
    的头像 发表于 08-30 14:47 320次阅读

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译 和 编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起编译 与内核一起编译意味着将驱动程序的源代码直接集成到
    的头像 发表于 08-30 14:46 454次阅读

    linux驱动程序运行在什么空间

    Linux 驱动程序是操作系统的一部分,负责管理硬件设备与操作系统之间的交互。驱动程序运行在内核空间(Kernel Space),这是操作系统的核心部分,与用户空间(User Space)相对。内核
    的头像 发表于 08-30 14:37 335次阅读

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

    Linux驱动程序领域再添新成员,PLIN驱动程序现已正式发布。
    的头像 发表于 06-28 13:34 342次阅读
    虹科技术 <b class='flag-5'>Linux</b>环境再升级:PLIN<b class='flag-5'>驱动程序</b>正式发布

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

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

    热插拔是什么原理

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

    热插拔和非热插拔的区别

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

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

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