快速回忆
echo 0000:01:00.0 > /sys/bus/pci/drivers/mlx5_core/unbind #接绑
echo 0000:01:00.0 > /sys/bus/pci/drivers/mlx5_core/bind #再次绑定
ls /sys/bus/pci/drivers/mlx5_core/ -l #查看某个驱动中绑定的设备
ls /sys/bus/pci/drivers #查看所有的PCIe驱动
背景
有些场景需要将PCIe驱动与PCIe设备进行接绑,接绑的意思就是不使用某个驱动来管理某个PCIe设备。比如要使用vfio从用户态来处理驱动,或者就是要接绑驱动。本文简单记录方法
命令和实操
以Mellanox的PCIe网卡为例:
解绑
echo 0000:01:00.0 > /sys/bus/pci/drivers/mlx5_core/unbind
解绑的时候会调用PCIe驱动模块的exit函数。
实操效果,可以看到实操后01:00.0设备已经被接绑,并在驱动中无法查看
并且会调用remove的函数:
绑定
echo 0000:01:00.0 > /sys/bus/pci/drivers/mlx5_core/bind
再次绑定的的时候会调用PCIe的probe函数
查看某个驱动绑定了哪些设备?
通过在/sys/bus/pci/drivers目录下指定的驱动比如mlx5_core.ko的目录下查看有哪些子目录。
查看路径:
ls /sys/bus/pci/drivers/mlx5_core/ -l
实操后可以看到,有两个PCIe设备绑定到该驱动:
查看所有的PCIe驱动有哪些?
ls /sys/bus/pci/drivers
实操效果:
如何查看系统加载了某些驱动,还没有被probe生效调用过?
就查看驱动目录下是否有pcie设备,比如下面的就没有。