PCIe Reset Classification
PCIe Reset 可以根据是否复位全协议栈而划分为Coventional Reset和FLR Reset。
Conventional Reset
Conventional Reset 在Spec中分成了Fundamental Reset和Hot_reset。
PEREST# Fundamental signal Generation
PERST# 信号是作为PCIe-RST信号用来reset pcie,通常由central resource device产生,例如IO Controller Hub。如下图
该信号在POWERGOOD之后拉高,所以在外界main_power power off之后POWERGOOD的deassert->assert过程会引发PERST# deassert->assert,进而会引发device 发生cold reset。
由于L2 状态main_power也会被关掉,所以在退出L2也会引发PERST# dessert->assert 过程,退出L2的过程Fundamental Reset是为了状态机从L2重新到Dectect。
Fundamental Reset
Cold Reset
系统main power稳定之后需要拉PEREST#(PCIe Reset)信号,该过程称为cold reset。
Cold Reset LTSSM跳转过程是L0->Detect。
Warm Reset
在复位过程中如果不remove掉main power而引发的PERESET deassert->assert的过程称之为warm reset。
Warm Reset LTSSM跳转过程是L0->Detect。
Hot Reset
Hot reset过程是软件通过写RP 或者bridge的Secondary Bus Reset 信号触发的reset 过程,该过程只能由RP或者bridge触发,而不能由EP触发。
Hot Reset LTSSM跳转过程是L0->Recovery->hot_reset->Detect。
Function Level Reset(FLR)
Function Level Reset过程是软件写寄存器完成特定Function的复位,该过程中其它function 仍然可以正常通信。
FLR 并不会破坏Link链路,因此LTSSM会一直保持在L0状态。