在Linux中重新枚举并使用PCIe SSD,无需关机

waxmsbnn  于 2023-04-05  发布在  Linux
关注(0)|答案(3)|浏览(410)

你好,
我目前正在做一个项目,其中PCIe固态硬盘不断被换出,并通过基准测试程序,如VDBench和Iometer进行测试。我现在面临的问题,这只是在Linux端(在Windows上运行良好),是如果驱动器在初始启动时没有打开,它们永远不会出现在GParted或Disks下。以下是我所做的:
冷 Boot ,PCIe Add-in-card SSD关闭。然后通过逻辑控制的直通卡通电,以确保电源和短路不会成为问题。
我打开设备,然后运行:

sudo sh -c "echo 1 > /sys/bus/pci/rescan"

执行

lspci -tv

设备在树中显示没有问题。但是当我在磁盘下检查时,它不在那里。
我已经尝试了一堆不同的命令,似乎没有一个对我有帮助。我试过了

partprobe

什么都没做,而且:

sudo sh -c "echo 1 > /sys/bus/pci/devices/0000:82:00.0/remove"

跟进另一次重新扫描:

sudo sh -c "echo 1 > /sys/bus/pci/rescan"

以及:

sudo sh -c "echo 1 > /sys/bus/pci/devices/0000:82:00.0/enable"

还是没有。还跑了:

dmesg

其中显示,除其他事项外:

[   68.128778] pci 0000:82:00.0: [8086:0953] type 00 class 0x010802
[   68.128797] pci 0000:82:00.0: reg 0x10: [mem 0x00000000-0x00003fff 64bit]
[   68.128820] pci 0000:82:00.0: reg 0x30: [mem 0x00000000-0x0000ffff pref]
[   68.133398] pci 0000:84:00.0: [1c58:0003] type 00 class 0x010802
..............................

[   68.141751] nvme 0000:82:00.0: enabling device (0100 -> 0102)
..............................

我确实在dmesg中看到了很多其他地址的失败,例如:

[ 1264.718446] pcieport 0000:03:04.0: BAR 14: no space for [mem size     0x00400000]
[ 1264.718448] pcieport 0000:03:04.0: BAR 14: failed to assign [mem size 0x00400000]
[ 1264.718451] pcieport 0000:03:04.0: BAR 13: no space for [io  size 0x1000]
[ 1264.718453] pcieport 0000:03:04.0: BAR 13: failed to assign [io  size 0x1000]

虽然我有一种感觉,这些都是无关的我在做什么,虽然我很高兴有人证明我错了。
所以,在所有这些尝试之后,有没有人知道是否有一种方法(或者是否有可能)可以扫描此PCIe Add-in NVMe SSD并能够在不重新启动的情况下使用它?我还看了一些其他HDD的线程,这些线程引用了基于sata的驱动器的重新扫描,但这不是,所以引用也没有帮助。
先谢谢你了。

fd3cxomn

fd3cxomn1#

我在使用QEMU / Proxmox对nvme PCIE passthrough进行基准测试时遇到了同样的问题。
首先注意使用的驱动程序:

lspci -nnk -s '0000:82:00.0'

应该说
正在使用的内核驱动程序:视频流接口-PCI
现在取消绑定驱动程序,然后重新探测:

echo '0000:82:00.0' > /sys/bus/pci/drivers/vfio-pci/unbind
echo '0000:82:00.0' > /sys/bus/pci/drivers_probe

再次检查驱动程序:

lspci -nnk -s '0000:82:00.0'

正在使用的内核驱动程序:新经济
lsblk现在应该显示驱动器。找到过程here

bkhjykvo

bkhjykvo2#

我试着这样做,以保存时间,这是由重新启动使用. PCI设备驱动程序在那个时候是 * doggy * 在最好的成功重新扫描,并得到所有的鸭子在一排.该设备是一个FPGA呈现专有接口设备的设备驱动程序我正在开发.这是与内核2.6.30-大约2014年3月尝试.我的(低于标准,但可以接受)的解决方案是重新启动系统。

omtl5h9j

omtl5h9j3#

尝试将pci=realloc添加到内核cmdline

相关问题