linux驱动 pcie 框架_NVMe学习笔记8 NVMe设备驱动

本文介绍了Linux驱动中NVMe设备的初始化过程,从pci.c的nvme_probe函数开始,涉及PCIe设备描述符、工作队列、寄存器映射、控制器与队列初始化等关键步骤。驱动通过PCIe ID找到对应的驱动,启动controller reset和namespace scan工作线程,最终完成字符设备和块设备的注册,使得系统能够与NVMe设备交互。
摘要由CSDN通过智能技术生成

今天大概来了解一下NVMe设备驱动都做了什么。

首先使用的源码版本是5.9版的github torvalds版本

在linux/drivers/nvme的目录下,共有两个主要目录,一个是host另一个是target。这两个目录分别是给NVMe over PCIe和NVMe over Fabric使用的。

这里我们只关心host目录下的文件,

f4db81ee4f6e7fca5ab0451837a76e7a.png

从makefile里面可以找到需要编译和连接的文件

d44d0b21a4c7b1d72496ad87485f76e5.png

其中core.c主要包含了NVMe设备驱动的主要操作,pci.c包含了nvme设备的基本注册流程,和主要数据结构。其他的文件包括zns和lightnvm我们之前都有提到过(Zoned Namespace的简单介绍 和 Open Channel SSD和lightNVM(1)),这里仅仅就nvme标准设备的初始化和基本操作对照nvme spec进行学习了解。

我们从linux\drivers\nvme\host\pci.c开始

首先是注册一个nvme类型的设备

module_init(nvme_init);

注册的数据结构是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值