PCIe热插拔:通知试热插拔&暴力热插拔

12 篇文章 9 订阅
订阅专栏

PCIE热插拔

某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。

热切换和热插拔的主要区别是应用领域不同,热插拔主要应用于PC以及服务器的主板上的板卡连接,而热切换主要针对的是CPCI(CompactPCI ,一种常用于仪器仪表的接口)应用的。

热插拔分为两种,一是通知式热插拔,一个是暴力热插拔,
通知式热插拔 就是先通知 driver 卸载驱动,停止 I / O ,然后再拔出。
暴力热插拔 就是带着 I / O 拔出(比如:NVME硬盘热插拔)

它有如下3个重要功能

  1. 不必关闭系统就可以替换发生故障的扩展卡。
  2. 修复期间可保证 OS和其他服务继续运行。
  3. 可关闭和重启与故障设备相关的软件。

实现pcie热插拔的前提
1). BIOS

  1. 为每个端口预留资源
    由于 PCIe 设备的枚举是遵从深度优先的原则,如果系统启动时没有带热拔插的设备,BIOS 枚举时不会为 RP 或者 switch 下行口预留资源( bus 资源、memory 资源、prefetchable memory 资源)。后面再插入该设备,由于端口资源不足,设备无法枚举进系统。

  2. PCI Express 配置空间设置
    由于 PCIe 配置空间有些 reg 是 HwInit 的,驱动是无法访问的,如果要支持热插拔,需要 BIOS 或者 Firmware 初始化一些 HwInit 的 reg。
    Link Capabilities Reg,PCIe Capabilities ,Slot Capabilities Reg等
    在这里插入图片描述
    在这里插入图片描述
    如果PCI Express Capabilities中的slot implemented没有实现,将会导致slot capability 无法实现。因此,PCI Express Capabilities中的slot implemented必须为1。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Link Capabitlities reg中的surprise down error report capable必须要为1,否则无法把surprise down的错误转换成DPC(如果接Nvme盘的端口不支持surprise down,则不需要修改该bit)。
    Data link layer link active reporting capable最好实现,这样可以通过带内linkup和linkdown方式辅助定位Nvme是否被拔出。

在这里插入图片描述
在这里插入图片描述
Slot capabilities reg中的power controllerpresent最好能实现,这样软件可以控制槽位电源。
Hot-plug surprise必须为0(如果接Nvme盘的端口不支持surprise down的错误可以不关注该bit),hot-plug surprise是DPC实现之前传统的surprise down handling机制,其实有点掩耳盗铃的意思。由于在某些,平台上,RC收到uncorrectable error的message会导致系统crash,因此在支持热插拔时就增加了hot-plug surprise bit,当出现surprise down error时,不向host报告错误,从而阻止系统crash。这个bit只能阻止surprise down error的上报,不能处理暴力拔出时未完成的IO的导致的CPU等待超时问题,并且会影响DPC功能,属于历史遗留问题。
Hot-plug capable需要为1,否则无法支持热插拔的各种中断。

2)软件
在这里插入图片描述
当slot 有对应的能力时,软件需要打开slot ctrl capabilities对应的bit。并且根据系统要求设置DPC ctrl。
在这里插入图片描述

软硬件要求

热插拔不仅仅需要硬件支持,也需要软件协同实现。要想实现热插拔功能,操作系统、主板热插拔驱动器、PCIe卡设备驱动以及PCIe卡硬件功能都必须支持热插拔,缺一不可。

红色方框是软件要求
绿色方框是硬件要求

软件要求:
User Interface(用户接口): 这部分由系统OS提供。主要允许用户可以请求插拔PCIe设备
Hot-Plug Service(热拔插服务): 这部分也是由系统OS提供。主要负责处理用户插拔PCIe设备的请求。
Standardized Hot Plug System Driver(标准热拔插系统驱动程序): 这部分驱动可以由系统OS或者主板提供。
Device Driver(设备驱动程序): 这部分主要有适配卡提供。

硬件要求:
Hot-Plug Controller(热拔插控制器): 主要负责接收和处理来自Hot Plug System Driver的指令。
Card Slot Power Switching Logic(卡插槽电源交换逻辑): 主要被Hot Plug Controller控制,用于turn-on/off电源。
Card Reset Logic(卡重启逻辑): 按照Hot-plug System Driver的指示,Hot Plug Controller向需要插拔PCIe设备的插槽(Slot)传送PERST#信号。
Power Indicator(电源指示器): 主要负责指示设备连接器上面的电源状态。
Attention Indicator(警告指示器): 这个是警示灯,提醒用户热插拔失败状态,所以一般情况下处于关闭状态。
Card Present Detect Pins(卡在位检测引脚): PCIe设计了两个用于检测PCIe设备是否存在的信号PRSNT1#和PRSNT2#。 PRSNT#1接地,当PCIe设备存在时,PRSNT#2拉高。

卡在位检测机制:
在这里插入图片描述
PCIe卡有两个用于热插拔机制的引脚——PRSNT1#和PRSNT2#。
PCIe卡设备上的这两个信号之间是短路的,下方部分PCIe插槽的PRSNT1#被固定地连接到地,PRSNT2#则被上拉。
当PCIe卡设备未被完全插入插槽时,插槽的PRSNT2#信号由于上拉的作用,将一直处于高电平状态。当PCIe卡设备被完全插入插槽后,PRSNT1#与插槽上接地的PRSNT1#连接,同时插槽上的PRSNT2#信号则会被PCIe卡设备的短路线连接到地,从而使得其变为低电平。从插槽的角度看,当PRSNT2#位高电平时,则认为PCIe卡设备未能正确插入或者无PCIe卡设备;当PRSNT2#位低电平时,表明PCIe卡设备被正确地插入插槽中。

通知试热插拔

PCIe插槽的On/Off状态:

PCIe Slot ON:
上电;
RefClk参考时钟打开;
PCIe链路是激活状态或者处于ASPM状态(L0s/L1);
PERST#信号处于无效状态。

PCIe Slot OFF:
断电;
RefClk参考时钟关闭;
PCIe链路是关闭状态或;
PERST#信号处于有效状态。

调整Slot上的状态:

PCIe Slot ON转为OFF:
先关停PCIe链路。主要发送EIOS序列进入高阻态;
其次,向slot发送PERST#信号;
然后,关掉RefClk参考时钟;
最后,给slot断电。

PCIe Slot OFF转为ON:
先上电;
其次,打开RefClk参考时钟;
然后,解除slot上PERST#信号。

卡拔出流程:

按Attention Button按钮或者通过软件的命令。通知热插拔控制器开始进行热拔出操作。
闪烁LED灯,表示这张卡准备从系统中移除。五秒内没有其他异常,流程继续。五秒内可以取消此次操作。
系统把这个PCIe设备在系统中拥有的资源删除,如总线资源、Memory资源等。确保再没有流程访问这种卡。
关闭这个卡所在槽位的电源。关闭LED灯,表示该卡可以从系统中拔出了。
(可选操作)打开MRL(锁止开关)。
用户移除这张卡。

如果过程中有错误,则跳出移除过程,可以点LED红灯表示错误。需要人工干预处理。
在这里插入图片描述
卡插入流程:

PCIe设备插入槽位,触发硬件检测到Present在位。
(可选操作)关闭MRL。
按Attention Button按钮或者通过软件命令,通知热插拔控制器开始进行热插入操作。
闪烁LED灯,表示这张卡准备在这个槽位插入。五秒内可以取消此次操作。否则继续。
打开这个槽位的电源。
时钟打开、复位信号生效。插入的PCIe设备硬件可以正常工作,链路link up。
系统重新枚举插入槽位的总线,分配相应的资源。系统可以正常识别新插入的PCIe设备。
插入PCIe设备对应的驱动进行相关的配置和初始化。PCIe设备对应功能初始化完成,可以正常工作。

如果过程中有错误,则跳出插入过程,可以点LED灯表示错误。
在这里插入图片描述

暴力热插拔

由于历史原因( SAS 盘上是没有 button 按钮)导致的客户操作习惯换盘都是暴力拔出的,Nvme 盘需要支持 暴力热插拔 而不是 通知式热插拔。支持暴力热插拔要求 switch 或者 RP( 如果 SSD 接在 switch 下或 RP 下)可以协助处理这些未完成的请求,或者 host 有类似的机制,针对未完成的 Non posted 请求,返回 completion 包( PCIe 协议要求 Non posted 请求需要 completion 包),从而阻止 host 等待未完成的请求导致的超时(超时可以能导致系统 crash )。这就要用到 PCIe 3.1 协议新增的一个重要的 capability:DPC 。

DPC 是什么?
DPC 全称 Downstream Port Containment,这个 capability 是 PCIe 3.1 协议针对root port 和 switch downstream port 新增的。其作用是当检查到下行口本身出现错误(什么等级的错误会触发 DPC 是可以配置的)或者下行口下面的设备上报错误 message(什么等级的error message 会触发 DPC 也是可以配的)可以关闭对应端口(让该端口的 LSTTM 进入disable 状态),把 PCIe traffic 拦截在该端口之下,从而阻止错误扩散。针对未完成的 Non posted 的请求,root port 或者 switch downstream port 根据 DPC 的设置返回completion 包,completion 包的状态是 UR 或者 CA。对应 Non posted 的请求,在 completion 没有返回前,CPU 认为该指令是未完成的。DPC 这种机制就为系统恢复错误提供了机会,因此,可以用来实现 Nvme 盘的暴力热插拔的需求。

Nvme暴力拔插的软件流程

在这里插入图片描述
和通知试热插拔区别就是button press中断换成了presence detect change中断

在这里插入图片描述
暴力热插拔流程由于没有按按钮通知Nvme驱动停止IO,将会导致有没完成的IO,这将用到DPC特性来处理这些完成的IO。

参考文章链接:
https://www.pcietech.com/362.html/
https://www.pcietech.com/367.html/
https://www.pcietech.com/372.html/
https://www.pcietech.com/381.html/
https://blog.csdn.net/linjiasen/article/details/104361350
https://blog.csdn.net/zhuzongpeng/article/details/127134943
https://blog.csdn.net/qq_33632004/article/details/105972147

PCIe系列专题之七:PCIe热插拔
存储随笔
10-01 7161
之后,Hot-Plug Service会调用Hot-Plug System Driver去读取slot的状态信息并且侦测到Attention按钮的状态;为了放置意外的发生,PCIe Spec设计了一种"No Surprise"热插拔机制,即,当用户要插拔PCIe设备时,必须先通知系统软件做好准备,然后通过指示灯告知用户热插拔的状态。: 按照Hot-plug System Driver的指示,Hot Plug Controller向需要插拔PCIe设备的插槽(Slot)传送PERST#信号。
PCI Hot-Plug Specification v1.1
03-21
PCI Hot-Plug Specification v1.1,PCIe热插拔规范。2001.6.20发布
NVMe盘暴力热插拔 学习记录
qq_33632004的博客
05-07 8051
1、 SFF-8639 SFF-8639也叫U.2,物理结构可以兼容SAS/SATA/SATA Express/Nvme。SFF-8639详细的引脚定义可以参考PCI Express SFF-8639 Module specification。 其中比较重要的sideband信号有PWRDIS、IfDet#、PERST#、DualPortEn。 PWDIS:该信号assert时,disabl...
PCIe板卡辅助信号解析
最新发布
非专业业余程序员
08-15 2150
PCIe Add-in卡借助PCIe插槽上的辅助信号,实现了很多系统级的功能,比如唤醒、复位、调热插拔等功能。REFCLK-/REFCLK+: 是一组低压差分信号,PCIe主板提供的REFCLK信号必须满足PCIe规范中的要求。PERST#: 信号用于复位PCIe设备,同时也指示了系统主电源的稳定时间。WAKE#: 信号用于给PCIe主机提供复位信号,由PCIe设备驱动,当PCIe主机接收到该信号后,需要向PCIe设备提供主电源和参考时钟,以激活PCIe链路。
PCIe学习笔记(2)错误处理和AER/DPC功能
PoPo's Blog
02-19 3619
处理器上错误通常可分为detected和undetected error。Undetected errors可能变得良性(benign),也可能导致系统故障如silent data corruptions (SDC)。Detected errors则又可分为correctable errors (CE) 和uncorrectable errors (UCE)。PCIe定义了两种错误报告范式:基线功能和高级错误报告功能(AER)。本文介绍PCIe错误定义及AER/DPC功能。
【52】NVMe暴力热插拔对系统的要求
热门推荐
linjiasen的博客
02-17 1万+
1、 SFF-8639 SFF-8639也叫U.2,物理结构可以兼容SAS/SATA/SATA Express/Nvme。SFF-8639详细的引脚定义可以参考PCI Express SFF-8639 Module specification。 其中比较重要的sideband信号有PWRDIS、IfDet#、PERST#、DualPortEn。 PWDIS:该信号assert时,disa...
PCIe热插拔机制(详细)总结-PCIe专题知识(五)
Luckiers的博客
05-10 1万+
本文主要讲述PCIe热插拔机制,通过图形方式方便读者快速掌握。如果在PCIe设备不支持热插拔的条件下,在不断电的情况下插拔一块PCIe SSD时,很可能会对主板或PCIe插槽造成损毁。为了放置意外的发生,PCIe Spec设计了一种"No Surprise"热插拔机制,即,当用户要插拔PCIe设备时,必须先通知系统软件做好准备,然后通过指示灯告知用户热插拔的状态。PCIe总线的热插拔主要指的是PCIe卡设备的热插拔以及相关的实现机制等。
Linux 2.6.10内核下PCI Express Native热插拔框架的实现机制
linglongyouzhi的专栏
07-22 2349
 Linux 2.6.10内核下PCI Express Native热插拔框架的实现机制[日期:2008-7-22]来源:IBM  作者:王兵 国防科学技术大学计算机学院软件所[字体:大 中 小]   PCI热插拔技术,可以有效避免由更换外设引起的服务器系统停机,对于提高服务器系统可用性和可扩展性意义重大。本文讨论了PCI Express热插
PCIE热插拔技术
Kevin
04-03 7071
某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 注:本文将简单地介绍一下PCIe总线的热插拔机制,关于热切换(Hot Swap),请参考PCIe Spec的相关章节。 PCIe总线的热插拔主要指的是PCIe卡设备的热插拔,以及相关的实现机...
Linux | PCIe Hotplug | 概念及工作原理的不完全总结
MissMango0820的博客
12-31 6061
本文对 PCIe 热插拔的概念及工作原理进行不完全总结。
PCI_Hot-Plug_Specification_R1.1
09-28
PCI_Hot-Plug_Specification_R1.1
应用于Xilinx FPGA中的热插拔技术解析
07-07
通常这称为“热插拔”或“热插拔”,但也可称为“带电插拔”。在将电子设备插入带电系统并完全通电并运行之前,需要对热插拔有基本了解。没有中断。根据应用程序的不同,这些要求可能更具挑战性。例如,在热交换过程...
单片机与DSP中的美信针对PCIe应用推出多通道热插拔控制器
12-03
这些控制器是专为PCIe热插拔插槽设计的,确保在带电状态下安全地操作PCIe卡。与市场上其他竞争产品相比,它们集成了更多的通道,这意味着设计师可以更加灵活地配置多个PCIe插槽,而无需浪费额外的通道。这在需要24...
如何实现PCI Express的热插拔功能
11-07
PCIe热插拔功能的实现涉及多个层面,包括硬件和软件。早期的PCI标准并不支持热插拔,但随着PCI热插拔规范1.0的发布,开始定义了基本的硬件和软件需求。2001年的PCI标准热插拔控制器(SHPC)1.0和PCI热插拔1.1规范...
Maxim推出三/四通道PCI-Express热插拔控制器
11-30
Maxim公司新推出的MAX5957/MAX5958和MAX5959/MAX5960是一款创新的三/四通道PCI-Express(PCIe热插拔控制器,专门针对需要高可用性和24/7稳定运行的系统,如服务器、存储卡和RAID阵列。这些控制器在设计上集成度高...
PCIe扫盲-热插拔简要介绍
linkedin_38831299的博客
12-28 310
转至ChinaAET:【博文连载】PCIe扫盲——热插拔简要介绍
PCIe扫盲——热插拔简要介绍
kunkliu的博客
07-08 1万+
转载地址:http://blog.chinaaet.com/justlxy/p/5100057851 某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 注:热切换(Hot Swap)和热插拔的主要区别是应用领域不同,热插拔主要应用于PC以及服务器...
PCI】pcie-switch应用——热拔插(七)
zz2633105的博客
05-09 6704
内核热插拔驱动 PCI设备在BIOS启动阶段枚举,之后传给linux内核,由linux内核将每个PCI设备注册到pci_bus_type总线上,进而匹配pci驱动,如下图所示。 PCI桥设备也会匹配pci驱动,这个驱动名称为pcieport,该驱动在portdrv_pci.c文件中注册,来看一下它的匹配规则,如下所示。 static int __init pcie_portdrv_init(void) { if (pcie_ports_disabled) return -EACCES; pcie
bios pcie枚举
04-18
BIOS(Basic Input/Output System)是计算机系统中的一种固件,它提供了计算机启动时的基本输入输出功能。PCIe(Peripheral Component Interconnect Express)是一种高速串行总线接口,用于连接计算机主板和各种外部设备。 在计算机启动时,BIOS负责初始化硬件设备,并进行PCIe枚举。PCIe枚举是指BIOS扫描系统中的PCIe插槽,识别和配置插入其中的PCIe设备。这个过程包括以下几个步骤: 1. 初始化PCIe总线:BIOS会初始化PCIe总线控制器,并设置相关寄存器和寄存器位。 2. 扫描PCIe插槽:BIOS会逐个扫描系统中的PCIe插槽,检测是否有设备插入。 3. 分配资源:当检测到PCIe设备后,BIOS会为其分配资源,包括内存地址、中断等。 4. 配置设备:BIOS会读取设备的配置空间,获取设备的厂商ID、设备ID等信息,并根据需要进行配置。 5. 启用设备:BIOS会根据设备的配置情况,决定是否启用该设备。 6. 枚举下一个插槽:BIOS会继续扫描下一个PCIe插槽,直到所有插槽都被扫描完毕。
写文章

热门文章

  • PCIe热插拔:通知试热插拔&暴力热插拔 10093
  • PCIe 错误检测和处理 8500
  • FP16、FP32、INT8、混合精度 7506
  • 内存映射技术-MMIO 7115
  • 算力运算单位 6853

分类专栏

  • GPU 3篇
  • PCIE 12篇
  • BMC 1篇

最新评论

  • 内存映射技术-MMIO

    m0_61571588: CPU访问PCIe设备的数据,是通过内存控制器(DMA)去从设备读到内存的,这是NVMe规定的。CPU只需要向内存中发送读取相关的命令即可。

  • 内存映射技术-MMIO

    大樹bigtree: 描述的应该有问题,CPU访问PCIe设备的数据是不需要RC读到内存的,CPU拿到PCIe设备的数据直接是RC通过TLB协议获取,另外PCIe设备也可以直接访问内存,这样免去了CPU的搬运。PCI设备使用CPU可以简单像访问内存一样访问PCI设备的数据,PCI设备也能像DMA一样把数据搬到内存。。。

  • PCIe Capability结构寻址

    lantian728: 后面通过link status 寄存器offset 0x12h计算时,数错位了,不是0x7c11,应该是向后数十进制的18位,是0x1011,二进制0001 0000 0001 0001,第4-9位是000001,对应x1

  • PCIe热插拔:通知试热插拔&暴力热插拔

    天才小C: 有点疑惑,插入设备的时候这个清除hotplug status时机是不是有点问题,pciehp_isr中断函数读清了slot status register寄存器,但是我看pci spec Data link layer status change中断是根据slot status register的状态触发的吧表情包

  • PCIe Capability结构寻址

    CSDN-Ada助手: 恭喜你这篇博客进入【CSDN每天最佳新人】榜单,全部的排名请看 https://bbs.csdn.net/topics/616568832。

最新文章

  • 算力运算单位
  • FP16、FP32、INT8、混合精度
  • GPU浮点计算能力
2023年16篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家新疆玻璃钢雕塑佛山南海商场美陈玻璃钢花盆哪里有在卖美陈玻璃钢人物雕塑费用是多少盐城玻璃钢雕塑生产济宁玻璃钢雕塑牛肇庆校园玻璃钢雕塑北京玻璃钢卡通水果雕塑长葛玻璃钢雕塑庆阳动物玻璃钢雕塑定做哪里有好的玻璃钢雕塑黑色玻璃钢花盆价格成都动物玻璃钢雕塑开封商场美陈造景城市几何玻璃钢雕塑采购澳门泡沫玻璃钢雕塑加工厂家内江玻璃钢仿铜雕塑价格河南欧式玻璃钢雕塑哪家便宜商场内蛋型玻璃钢花盆杭州鼎湖玻璃钢人物雕塑四川玻璃钢人物雕塑厂家肇庆玻璃钢雕塑推荐厂家韶关人物玻璃钢动物雕塑嘉兴玻璃钢人物雕塑厂家价格江西多彩玻璃钢雕塑定做价格浙江节庆商场美陈销售公司深圳玻璃钢恐龙雕塑德州玻璃钢仿真动物雕塑玻璃钢草莓屋雕塑商场水管美陈创意香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化