第1章
NVMe驱动开发概述
NVMe协议简介 · 驱动在Linux内核位置 · 开发环境搭建
协议基础环境
第2章
PCIe基础与NVMe设备枚举
PCIe配置空间 · BAR映射 · 设备发现 · 枚举失败分析
PCIe枚举
第3章
NVMe控制器初始化
Admin Queue创建 · Identify命令 · 寄存器配置 · 失败案例
初始化AdminQ
第4章
I/O队列创建与管理
SQ/CQ创建 · 队列深度 · 中断绑定 · 分配失败处理
队列中断
第5章
PRP与SGL数据传递机制
PRP列表 · SGL描述符 · 缓冲区对齐 · DMA映射错误
数据传递DMA
第6章
NVMe命令提交与完成
Doorbell机制 · CQE轮询/中断 · 超时处理 · 重试策略
命令完成
第7章
中断处理与MSI-X
MSI-X配置 · 亲和性 · 负载均衡 · 中断丢失排查
中断MSI-X
第8章
NVMe驱动中的锁与并发
自旋/互斥锁 · RCU · 竞态条件 · 死锁案例分析
并发锁
第9章
内存管理
DMA缓冲区 · 内存池 · 大页支持 · 泄漏检测
内存DMA
第10章
块设备层集成
请求队列 · bio处理 · blk-mq · I/O调度器
块层blk-mq
第11章
电源管理
APST · 电源状态切换 · 空闲检测 · 唤醒延迟优化
电源APST
第12章
错误处理与恢复
AER · 控制器重置 · 命名空间管理 · 错误日志解析
错误恢复AER
第13章
NVMe over Fabrics基础
NVMe-oF概念 · RDMA/TCP · 连接建立 · 配置问题
NVMe-oFRDMA
第14章
多路径与故障切换
多路径I/O · 路径优先级 · 故障检测 · 负载均衡
多路径故障切换
第15章
虚拟化支持
SR-IOV · VF驱动 · 直通问题 · 热迁移兼容性
虚拟化SR-IOV
第16章
性能调优
队列深度 · 中断合并 · CPU亲和性 · 写缓存 · 基准测试
性能调优
第17章
调试工具与技巧
ftrace · perf · devmem2 · nvme-cli · QEMU调试
调试工具
第18章
固件更新与管理
固件下载/提交 · 激活策略 · 回滚 · 失败恢复
固件更新
第19章
安全特性
命名空间加密 · TCG Opal · 安全擦除 · TPM集成
安全加密
第20章
兼容性与互操作性
厂商差异 · 协议版本 · quirks · 合规性测试
兼容性互操作
第21章
热插拔支持
PCIe热插拔 · 设备移除/添加 · I/O悬挂 · 优雅卸载
热插拔PCIe
第22章
NVMe-MI管理接口
MI协议 · 带外管理 · 温度/健康监控 · SMBus/I2C
管理MI
第23章
原子操作与持久性
原子写 · 持久性内存 · 写原子性 · 电源故障保护
原子性持久性
第24章
流式命令与命名空间管理
流式命令集 · 命名空间创建/删除 · 容量管理 · 多命名空间
流式命名空间
第25章
NVMe驱动测试框架
kunit单元测试 · fio功能测试 · 压力测试 · 回归自动化
测试kunit
第26章
内核版本演进与API变化
驱动接口差异 · 适配策略 · 向后兼容 · 社区补丁
内核API
第27章
ZNS(分区命名空间)支持
ZNS概念 · 分区管理 · 顺序写入 · 垃圾回收优化
ZNS分区
第28章
计算存储与NVMe
计算存储概念 · 计算命令集 · 可编程存储 · 卸载引擎
计算存储卸载
第29章
Key-Value存储与NVMe
KV命令集 · 数据结构 · 与传统块设备对比 · 应用场景
KV存储
第30章
NVMe驱动开发未来趋势
CXL融合 · 持久内存 · 智能NIC · 开放标准演进
趋势CXL