linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作。
板子上电前PCIe插槽有一块NVME的固态硬盘
[ 0.198515] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
[ 0.199284] pci 0000:01:00.0: [126f:2263] type 00 class 0x010802
[ 8.161374] nvme nvme0: pci function 0000:01:00.0
[ 8.166407] nvme 0000:01:00.0: enabling device (0000 -> 0002)
# ls /sys/bus/pci/devices/0000\:01\:00.0
broken_parity_status enable rescan
class irq reset
config local_cpulist resource
consistent_dma_mask_bits local_cpus subsystem
device modalias subsystem_device
devspec msi_bus subsystem_vendor
dma_mask_bits power uevent
driver_override remove vendor
现在需要在板子保持开机运行的状态下,先取下NVME的固态硬盘,再换上一块PCIe 网卡,并让网卡正常工作。
remove 原有设备,然后lspci查看, 0000:01:00.0: [126f:2263]已经不见了
# echo 1