问题标签 [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.
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
吗?
- Ubuntu:16.04.6 LTS
- 内核:5.4.14.050414-generic
- NVMe驱动版本:1.0
kernel - NVME 驱动程序在哪里将其命名空间注册为内核代码中的块设备?
我试图弄清楚 NVME 驱动程序在哪里将其命名空间注册为最新内核代码(5.xx)中的块设备。
NVME 的最后一个显式块设备注册在内核 4.3.x block/nvme-core.c中看到,其中register_blkdev
和unregister_blkdev
被调用。
从内核 4.4.xblock/nvme-core.c
中删除,似乎所有内容nvme
都移到了drivers/nvme
. 但是,尽管有很多地方使用API,但我在drivers/nvme/core.c 上看不到任何明确的块设备注册。blk-mq
有谁知道变化在哪里以及为什么发生?
linux - 让内核模块与 NVMe 驱动程序对话的最优雅方式是什么?
我目前正在编写一个需要与 NVMe 设备通信的内核模块。做这个的最好方式是什么?我查看了 SPDK 库,但似乎它在用户空间中运行,这不是我想要的。我发现在 linux 内核库 ( /lib/modules
) 中有一个用于 nvme 驱动程序的编译内核模块,但我不知道如何与之交互。
将不胜感激任何帮助。
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 源代码,这个错误可以得到解决。
那么,获取驱动程序头文件并在内核模块中使用它们的最佳方法是什么。任何帮助,将不胜感激。
powershell - 用于识别 NVMe 驱动器的 Windows api
如果驱动器是 nvme 类型,是否有任何返回的 windows api?在powershell中,当我这样做时
它给出了 MediaType asSSD
和 BusType as RAID
。之前,我使用STORAGE_BUS_TYPE
win32 通过 BusType 检查 NVMe,但我有一个 SSD Nvme 设备,它的 BusType 为 RAID。
谢谢。
amazon-ec2 - 断开和重新连接 nvme
amazon/centos/linux 内是否有能力切换硝基磁盘的订购轮次?
我有一个 ami,它的设备顺序不正确,我的意思是 nvme1n1 和 nvme2n1 应该轮换。如果我运行,nvme id-ctrl -v /dev/nvme1n1 | grep sn
我会在重新启动后获得不同的序列号。我知道他们是“错误的”,因为序列号不能反映他们的能力......希望这是有道理的(我很欣赏这有点令人困惑)。这只发生在具有两个或更多磁盘的服务器上;重新启动后,磁盘“正确”
我的问题是,是否有一种方法可以强制 nvme 设备断开连接并重新连接(希望映射以正确的顺序按预期工作)。
多谢你们
linux - 更改 nvme 设备的控制器数量
是否有更改 nvme 控制器 ID 的方法。因此,例如将 nvme3n1 转换为 nvme1n1。我注意到控制器ID 通常在删除和添加设备后会增加,但我想减少它或保持它不变。在我看来,这将与 /sys 中的某些内容相呼应,但我还没有找到任何有用的东西。这在重新启动后始终得到解决,所以我假设我可以拨打电话来重置/更改它?
我希望这会起作用,但即使我重新扫描特定的 pci 总线,它仍然会失败:
多谢你们
linux - 在linux中使用ftrace了解nvme linux驱动
我是 linux 新手。我正在尝试使用 ftrace 来了解 linux nvme 驱动程序代码流。根据 net 中的文章,一旦我的 nvme 设备被挂载,我将发出以下命令来获取跟踪
- cd /sys/内核/调试/跟踪
- cat /dev/nvme0n1 > trace (sudo nvme list 显示 nvme 设备 nvme0n1)
- echo nvme_queue_rq > set_graph_function (当我们发出 IO 时调用来自 nvme 驱动程序的 nvme_queue_rq )
- echo function_graph > current_tracer
- 回声 1 > tracking_on
- nvme write /dev/nvme0n1 -s0 -c63(使用 nvme cli 发出 write cmd)
- 回声 0 > tracking_on
- 猫 /dev/nvme0n1 > 跟踪
- 猫踪迹
但是没有任何东西附加到跟踪文件中。我需要做些什么来确保正确捕获函数调用。有没有其他方法可以捕获 linux nvme 驱动程序的函数调用?
提前致谢
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,它可以从同一个链接正常工作。