首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux中重新枚举和使用PCIe SSD而不关闭

在Linux中重新枚举和使用PCIe SSD而不关闭
EN

Stack Overflow用户
提问于 2016-03-15 21:05:07
回答 2查看 7.2K关注 0票数 3

日安,

我目前正在从事一个项目,在这个项目中,PCIe SSD不断地被交换出来,并通过VDBench和tested等基准程序进行测试。我现在面临的问题只有Linux端(在windows上运行得很好),就是如果驱动器在初始启动时没有打开,它们就永远不会出现在GParted或磁盘下面。以下是我所做的:

冷启动,PCIe加插卡SSD关闭.然后通过一张逻辑控制的通卡启动电源,以确保电源和短裤不成问题。

我打开设备,然后运行:

代码语言:javascript
运行
复制
sudo sh -c "echo 1 > /sys/bus/pci/rescan"

表演

代码语言:javascript
运行
复制
lspci -tv

设备显示时树中没有任何问题。但是,当我在磁盘下检查时,它不在那里。

我尝试过许多不同的命令,但似乎没有一个能帮到我。我试过了

代码语言:javascript
运行
复制
partprobe

却什么也没做。以及:

代码语言:javascript
运行
复制
sudo sh -c "echo 1 > /sys/bus/pci/devices/0000:82:00.0/remove"

对另一项调查采取后续行动:

代码语言:javascript
运行
复制
sudo sh -c "echo 1 > /sys/bus/pci/rescan"

以及:

代码语言:javascript
运行
复制
sudo sh -c "echo 1 > /sys/bus/pci/devices/0000:82:00.0/enable"

还是一无所获。还参加了以下活动:

代码语言:javascript
运行
复制
dmesg

这表明,除其他外:

代码语言:javascript
运行
复制
[   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中看到了很多其他地址的失败,例如:

代码语言:javascript
运行
复制
[ 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外接程序NVMe SSD,并且能够使用它而不重新启动?我还查看了其他HDD的一些线程,这些线程引用了基于sata的驱动器的重扫描,但事实并非如此,因此引用也不会有帮助。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-03-15 21:13:51

我尝试这样做,以节省时间,这是用于重新启动。当时的PCI设备驱动程序在成功地重新扫描和将所有的鸭子连在一起时,充其量都是不可靠的。该设备是一个FPGA,为我正在开发的设备驱动程序提供了一个专用的接口设备。这是在内核2.6.30中进行的--一些东西在2014年3月左右尝试过。我的(不合格,但可以接受)解决方案是重新启动系统。

票数 0
EN

Stack Overflow用户

发布于 2022-01-11 05:05:12

我遇到了同样的问题基准nvme PCIE通过与QEMU / Proxmox。

首先注意使用中的司机:

代码语言:javascript
运行
复制
lspci -nnk -s '0000:82:00.0'

它应该说

正在使用的内核驱动程序: vfio-pci

现在解除驱动程序的绑定,然后重新探测:

代码语言:javascript
运行
复制
echo '0000:82:00.0' > /sys/bus/pci/drivers/vfio-pci/unbind
echo '0000:82:00.0' > /sys/bus/pci/drivers_probe

请再次检查司机:

代码语言:javascript
运行
复制
lspci -nnk -s '0000:82:00.0'

正在使用的内核驱动程序: nvme

lsblk现在应该显示驱动器。找到过程这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36022132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档