nvme pci驱动调试记录

nvme驱动解绑定
cd /sys/bus/pci/drivers/nvme
查看目录中对应的pci设备文件如下,根据设备不同,可能文件不同:
0000:10:00.0  0000:12:00.0  0000:14:00.0  0000:16:00.0  0000:18:00.0  0000:1a:00.0  0000:24:00.0  0000:26:00.0  0000:2a:00.0  bind    new_id     uevent
0000:11:00.0  0000:13:00.0  0000:15:00.0  0000:17:00.0  0000:19:00.0  0000:1b:00.0  0000:25:00.0  0000:27:00.0  0000:2b:00.0  module  remove_id  unbind
解绑某个设备的驱动
echo -n "0000:10:00.0" > unbind 

移除指定pci设备
echo 1 > /sys/bus/pci/devices/0000:03:00.0/remove
重新扫描设备
sudo echo 1 > /sys/bus/pci/rescan

dd分区拷贝:
dd if=/dev/nvme1n1p2 of=/dev/nvme0n1p2 bs=1M count=13638
拷贝进度查看(-n 5 表示5秒打印一次):
watch -n  5  pkill -USR1 -x dd

驱动自动安装步骤:
将驱动安装文件拷贝到/lib/modules/4.4.131-20200604.kylin.desktop.android-generic/kernel/driver目录下对应的驱动目录中,比如pci驱动拷贝到pci目录
输的命令:depmod
输的命令:update-initramfs -u 
查看以下文件是否增加了添加的驱动名
/lib/modules/4.4.131-20200604.kylin.desktop.android-generic/modules.dep

nvme io命令prp参数使用算法(PAGESIZE不是host页大小,是盘设置的页大小):
1、只使用prp1 entry传输数据:datalen < PAGESIZE - prp1偏移 
2、使用prp1 entry和prp2 entry传数据: (PAGESIZE - prp1偏移) < datalen < ((PAGESIZE - prp1偏移) + PAGESIZE))
3、使用prp1 entry和prp2 list传数据:datalen > ((PAGESIZE - prp1偏移) + PAGESIZE))


内核版本信息头文件,驱动版本和系统不匹配时修改该文件:
include/linux/vermagic.h
include/generated/utsrelease.h

你可能感兴趣的:(nvme,linux驱动,linux)