Reset的几种类型:
Controller Reset
NVM Subsystem Reset
Function Level Reset(Pci reset)
Hot Reset
Link down Reset
1.Controller Reset
Controller Reset顾名思义就是控制器reset, 对ssd进行controller reset 时CC.EN transitions from ‘1’ to ‘0
可以通过nvme工具下发此命令,例如: nvme reset /dev/nvme0n1
2. NVM Subsystem Reset
NVM Subsystem Reset是NVM 子系统reset。
可以通过nvme工具下发此命令,例如:nvme subsystem-reset /dev/nvme0
对于不支持热插拔的PC来说NVM Subsystem Reset后通常需要进行pcie remove后pcie rescan系统才能扫到盘,而对于服务器来说通常不需要
3. Function Level Reset(Pci reset)
Function Level Reset(Pci reset)通常也叫pcie reset
可以通过系统下发命令echo 1 > /sys/bus/pci/devices/{pci_bdf}/reset来进行reset, reset后通 常 需要pcie rescan才可以扫到盘
4.Hot Reset
hot reset的通常也是通过系统命令下发,例如:
pci_bdf是0000.05.00.0
下发命令:readlink "/sys/bus/pci/devices/0000:05:00.0"
../../../devices/pci0000:00/0000:00:03.1/0000:05:00.0
那么bridge_port是0000:00:03.1
BRIDGE_CONTROL_A=setpci -s 0000:00:03.1 BRIDGE_CONTROL
setpci -s 0000:00:03.1 BRIDGE_CONTROL=hex(int(BRIDGE_CONTROL_A, 16) | 0x40
setpci -s 0000:00:03.1 BRIDGE_CONTROL=hex(int(BRIDGE_CONTROL_A, 16)
pcie remove
pcie rescan
5. Link down Reset
Link down Reset的通常也是通过系统命令下发,例如:
pci_bdf是0000.05.00.0
下发命令:readlink "/sys/bus/pci/devices/0000:05:00.0"
../../../devices/pci0000:00/0000:00:03.1/0000:05:00.0
那么bridge_port是0000:00:03.1
先下发pcie remove
然后setpci -s 0000:00:03.1 CAP_EXP+10.w=0010:0010
等待几秒
setpci -s 0000:00:03.1 CAP_EXP+10.w=0000:0010
pcie rescan