问题标签 [nvme]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
215 浏览

ubuntu-16.04 - /sys/bus/pci/设备/Ubuntu 内核 5.4.14.050414-generic 上缺少 /rescan 文件

在我的 ubuntu 上,我在/sys/bus/pci/devices/<B:D:F:>/ 是否有人知道如何恢复它们?我可以简单地复制它们/sys/bus/pci/rescan吗?

  1. Ubuntu:16.04.6 LTS
  2. 内核:5.4.14.050414-generic
  3. NVMe驱动版本:1.0
0 投票
0 回答
76 浏览

kernel - NVME 驱动程序在哪里将其命名空间注册为内核代码中的块设备?

我试图弄清楚 NVME 驱动程序在哪里将其命名空间注册为最新内核代码(5.xx)中的块设备。

NVME 的最后一个显式块设备注册在内核 4.3.x block/nvme-core.c中看到,其中register_blkdevunregister_blkdev被调用。

从内核 4.4.xblock/nvme-core.c中删除,似乎所有内容nvme都移到了drivers/nvme. 但是,尽管有很多地方使用API,但我在drivers/nvme/core.c 上看不到任何明确的块设备注册。blk-mq

有谁知道变化在哪里以及为什么发生?

0 投票
0 回答
101 浏览

linux - 让内核模块与 NVMe 驱动程序对话的最优雅方式是什么?

我目前正在编写一个需要与 NVMe 设备通信的内核模块。做这个的最好方式是什么?我查看了 SPDK 库,但似乎它在用户空间中运行,这不是我想要的。我发现在 linux 内核库 ( /lib/modules) 中有一个用于 nvme 驱动程序的编译内核模块,但我不知道如何与之交互。

将不胜感激任何帮助。

0 投票
1 回答
595 浏览

linux - 如何在用 C 编写的内核模块中包含 linux 驱动程序源文件?

我目前正在编写一个需要包含来自 linux 驱动程序源代码的文件的 linux 内核模块。我要包含的特定文件是:https ://elixir.bootlin.com/linux/latest/source/drivers/nvme/host/nvme.h

但该/lib/modules/$(shell uname -r)/build目录不包含该drivers文件夹。我试过这样做sudo apt-get install linux-headers-$(shell uname -r),但这也不包括驱动程序头文件。我的 Makefile 看起来像这样:

然后,我尝试对最接近我的内核版本的内核版本进行完整的内核检查(我找不到我的内核版本的确切源代码。)我指出我的 Makefile 使用该版本,但是当我尝试插入内核模块,它会抛出Invalid module format错误并dmesg显示no symbol version for module layout. 我的源目录确实包含该Module.symvers文件,但它仍然会引发此错误。我相信如果我以某种方式使用我当前的 linux 源代码,这个错误可以得到解决。

那么,获取驱动程序头文件并在内核模块中使用它们的最佳方法是什么。任何帮助,将不胜感激。

0 投票
1 回答
792 浏览

powershell - 用于识别 NVMe 驱动器的 Windows api

如果驱动器是 nvme 类型,是否有任何返回的 windows api?在powershell中,当我这样做时

它给出了 MediaType asSSD和 BusType as RAID。之前,我使用STORAGE_BUS_TYPEwin32 通过 BusType 检查 NVMe,但我有一个 SSD Nvme 设备,它的 BusType 为 RAID。

谢谢。

0 投票
2 回答
433 浏览

amazon-ec2 - 断开和重新连接 nvme

amazon/centos/linux 内是否有能力切换硝基磁盘的订购轮次?

我有一个 ami,它的设备顺序不正确,我的意思是 nvme1n1 和 nvme2n1 应该轮换。如果我运行,nvme id-ctrl -v /dev/nvme1n1 | grep sn我会在重新启动后获得不同的序列号。我知道他们是“错误的”,因为序列号不能反映他们的能力......希望这是有道理的(我很欣赏这有点令人困惑)。这只发生在具有两个或更多磁盘的服务器上;重新启动后,磁盘“正确”

我的问题是,是否有一种方法可以强制 nvme 设备断开连接并重新连接(希望映射以正确的顺序按预期工作)。

多谢你们

0 投票
0 回答
162 浏览

linux - 更改 nvme 设备的控制器数量

是否有更改 nvme 控制器 ID 的方法。因此,例如将 nvme3n1 转换为 nvme1n1。我注意到控制器ID 通常在删除和添加设备后会增加,但我想减少它或保持它不变。在我看来,这将与 /sys 中的某些内容相呼应,但我还没有找到任何有用的东西。这在重新启动后始终得到解决,所以我假设我可以拨打电话来重置/更改它?

我希望这会起作用,但即使我重新扫描特定的 pci 总线,它仍然会失败:

多谢你们

0 投票
0 回答
25 浏览

linux - 块层请求结构的cmd字段替换成什么?

我正在浏览新的内核代码,看起来结构cmd中的字段(在 linux/blkdev.h 中定义)不再存在。是它在早期版本中的样子。request

我正在使用该字段将特定的请求结构(struct nvme_command更具体地说)发送到块设备。如何更新我的代码以使用最新版本的blkdev.h? nvme_command更具体地说,既然没有cmd字段,我如何将我的结构发送到块设备?

0 投票
0 回答
489 浏览

linux - 在linux中使用ftrace了解nvme linux驱动

我是 linux 新手。我正在尝试使用 ftrace 来了解 linux nvme 驱动程序代码流。根据 net 中的文章,一旦我的 nvme 设备被挂载,我将发出以下命令来获取跟踪

  1. cd /sys/内核/调试/跟踪
  2. cat /dev/nvme0n1 > trace (sudo nvme list 显示 nvme 设备 nvme0n1)
  3. echo nvme_queue_rq > set_graph_function (当我们发出 IO 时调用来自 nvme 驱动程序的 nvme_queue_rq )
  4. echo function_graph > current_tracer
  5. 回声 1 > tracking_on
  6. nvme write /dev/nvme0n1 -s0 -c63(使用 nvme cli 发出 write cmd)
  7. 回声 0 > tracking_on
  8. 猫 /dev/nvme0n1 > 跟踪
  9. 猫踪迹

但是没有任何东西附加到跟踪文件中。我需要做些什么来确保正确捕获函数调用。有没有其他方法可以捕获 linux nvme 驱动程序的函数调用?

提前致谢

0 投票
1 回答
256 浏览

linux-kernel - 在 Linux Kernel 5.3 上安装 Broadcom 的 PCI/PCIe 软件开发工具包

这是关于来自https://www.broadcom.com/products/pcie-switches-bridges/software-dev-kits的 PLXsdk 我有一些 NVMe SSD 连接到 PCI,我正在尝试为此读写 BAR 寄存器Linux Kernel 5.3 中的 NVMe 驱动器使用 Broadcom 提供的 PLXSDK,我能够构建驱动程序并将其加载到内核中。但是当我尝试在我的 Gigabyte 主板 PC 上针对给定示例运行它时,它说没有设备或驱动程序发现错误代码 204,我正在使用insmod PlxSvc 加载驱动程序并在终端 PlxSvc 中使用 lsmod 检查它是否存在。所以,我怀疑我在尝试加载它时是否做错了什么。谁能告诉我他/她是否尝试过使用 PLXsdkhttps://www.broadcom.com/products/pcie-switches-bridges/software-dev-kits在 Linux 上,对于 Windows,它可以从同一个链接正常工作。