1 PCIe热插拔某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 PCIe总线的热插…
2 pcie hot-plug 2.1 register pcie_port_service pcie_portdrv_init->pcie_hp_init int __init pcie_hp_init(void) { int retval = 0; retval = pcie_port_service_register(&hpdriver_portdrv); return retval; } static struct pcie_port_service_driver hpdriver_portdrv = { .name = "pciehp",...
hot plug control logic监测到这一从高到低的电平变化后,会触发downstream port发现presence detect事件,进而向RC发送中断消息,通知系统软件有新设备已插入。热插拔基本原理 为了支持热插拔功能,PCI Express的Switch downstream port(简称dsp)必须实现特定的寄存器,包括slot control Register和Slot Status Register。当...
在讲这几个寄存器之前,我们首先要了解一下Spec定义的关于热插拔可能产生的事件(中断,可以通过设置Slot Control寄存器的bit5Hot-Plug Interrupt Enable来使能): 插槽事件:即插槽检测到的一些动作或状态变化 • 按钮按下事件 • 检测到电源失效(Power Fault) • MRL传感器变化事件 • 在位检测变化事件 命令完成...
某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 注:本文将简单地介绍一下PCIe总线的热插拔机制,关于热切换(Hot Swap),请参考PCIe Spec的相关章节。
Hot Swap,即热交换,也叫热切换,主要指的是CPCI(Compact PCI,紧凑型PCI)领域所使用的。关于 Hot Swap,CPCI有专门定义的一套规范,叫《CompactPCI® Hot Swap Specification》,也有中文版本,有兴趣的可以自行研究。 如无特别的指出,我们后续所说的热插拔都是指的是PCIe Hot-Plug。
与PCI总线不同,PCIe总线采用的是点到点的连接(Point-to-Point Connections),因此其并不像PCI总线那样需要用于卡设备的隔离逻辑(Isolation Logic),但是每个端口(桥设备中的,如Root和Switch)都必须包含一个独立的热插拔控制器(Hot Plug Controller),如下图所示: ...
登录后复制pub trait HotplugOps: Send {登录后复制/// Plug device, usually called when hot plug device in device_add.登录后复制fn plug(&mut self, dev: &Arc>) -> Result<()>;登录后复制/// Unplug device request, usually called when hot unplug device in device_del.登录后复制/// Only se...
某些特殊的应用场合可能要求PCIe设备能够以高可靠性持续不间断运行,为此,PCIe总线采用热插拔(Hot Plug)和热切换(Hot Swap)技术,来实现不关闭系统电源的情况下更换PCIe卡设备。 注:热切换(Hot Swap)和热插拔的主要区别是应用领域不同,热插拔主要应用于PC以及服务器的主板上的板卡连接,而热切换主要针对的是CPCI(Compa...
热插拔(Hot Plug)是PCIe总线的一种关键特性,旨在实现设备在系统运行中安全更换。此功能特别适用于要求高可靠性和不间断运行的应用场景。PCIe热插拔机制主要针对PCIe卡设备,允许在不关闭系统电源的情况下进行插拔,确保系统稳定性和可用性。实现PCIe热插拔的代码路径涉及多个组件,例如:linux-4.15\drivers...