当前位置: 首页 > java >正文

【linux unbind 设备驱动】

我们在设备中,可能会出现如下情况,需要unbind 设备原来的驱动,然后再给设备bind的一个新的驱动,下面记录操作方式。

找到设备的sysfs路径

[root]ls /sys/bus/pci/devices/          # 对于PCI设备
[root]ls /sys/bus/usb/devices/          # 对于usb设备
[root]ls /sys/bus/platform/devices/     #对于平台设备

PCI设备驱动卸载

lspci
03:00.0 Class 0200: 10ec:8125 //卸载
00:01.0 Class 0604: 17cd:dc08
00:04.0 Class 0604: 17cd:dc08
00:00.0 Class 0604: 17cd:dc16
06:00.0 Class 0c03: 1912:0014
00:03.0 Class 0604: 17cd:dc16
00:02.0 Class 0604: 17cd:dc01
00:05.0 Class 0604: 17cd:dc01

查看当前驱动

[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#ls
lrwxrwxrwx    1 root     root             0 May 16 02:30 0000:03:00.0 -> ../../../../devices/platform/soc/40000000.pcie/pci0000:00/0000:00:02.0/0000:03:00.0
--w-------    1 root     root          4096 May 16 02:30 bind
lrwxrwxrwx    1 root     root             0 May 16 02:30 module -> ../../../../module/cardDrvKernelRtl
--w-------    1 root     root          4096 May 16 02:30 new_id
--w-------    1 root     root          4096 May 16 02:30 remove_id
--w-------    1 root     root          4096 May 16 02:30 uevent
--w-------    1 root     root          4096 May 16 02:30 unbind
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#cd ../
[root@MPU /sys/devices/platform/soc/40000000.pcie/pci0000:00/0000:00:02.0/0000:03:00.0]#ls
-r--r--r--    1 root     root          4096 May 16 02:29 ari_enabled
-rw-r--r--    1 root     root          4096 May 16 02:29 broken_parity_status
-r--r--r--    1 root     root          4096 May 16 02:29 class
-rw-r--r--    1 root     root          4096 May 16 02:29 config
-r--r--r--    1 root     root          4096 May 16 02:29 consistent_dma_mask_bits
-r--r--r--    1 root     root          4096 May 16 02:29 current_link_speed
-r--r--r--    1 root     root          4096 May 16 02:29 current_link_width
-r--r--r--    1 root     root          4096 May 16 02:29 device
-r--r--r--    1 root     root          4096 May 16 02:29 devspec
-r--r--r--    1 root     root          4096 May 16 02:29 dma_mask_bits
lrwxrwxrwx    1 root     root             0 May 16 02:29 driver -> ../../../../../../../bus/pci/drivers/rtl-dc-drv
-rw-r--r--    1 root     root          4096 May 16 02:29 driver_override
-rw-r--r--    1 root     root          4096 May 16 02:29 enable
-r--r--r--    1 root     root          4096 May 16 02:29 irq
-r--r--r--    1 root     root          4096 May 16 02:29 local_cpulist
-r--r--r--    1 root     root          4096 May 16 02:29 local_cpus
-r--r--r--    1 root     root          4096 May 16 02:29 max_link_speed
-r--r--r--    1 root     root          4096 May 16 02:29 max_link_width
-r--r--r--    1 root     root          4096 May 16 02:29 modalias
-rw-r--r--    1 root     root          4096 May 16 02:29 msi_bus
-rw-r--r--    1 root     root          4096 May 16 02:29 numa_node
--w--w----    1 root     root          4096 May 16 02:29 remove
--w--w----    1 root     root          4096 May 16 02:29 rescan
--w-------    1 root     root          4096 May 16 02:29 reset
-r--r--r--    1 root     root          4096 May 16 02:29 resource
-rw-------    1 root     root           256 May 16 02:29 resource0
-rw-------    1 root     root         65536 May 16 02:19 resource2
-rw-------    1 root     root         16384 May 16 02:29 resource4
-r--r--r--    1 root     root          4096 May 16 02:29 revision
lrwxrwxrwx    1 root     root             0 May 16 02:29 subsystem -> ../../../../../../../bus/pci
-r--r--r--    1 root     root          4096 May 16 02:29 subsystem_device
-r--r--r--    1 root     root          4096 May 16 02:29 subsystem_vendor
-rw-r--r--    1 root     root          4096 May 16 02:27 uevent
-r--r--r--    1 root     root          4096 May 16 02:29 vendor
[root@MPU /sys/devices/platform/soc/40000000.pcie/pci0000:00/0000:00:02.0/0000:03:00.0]#cd driver/
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#pwd
/sys/bus/pci/devices/0000:03:00.0/driver
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#当前驱动名字为  rtl-dc-drv

卸载驱动

[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#ls
lrwxrwxrwx    1 root     root             0 May 16 02:30 0000:03:00.0 -> ../../../../devices/platform/soc/40000000.pcie/pci0000:00/0000:00:02.0/0000:03:00.0
--w-------    1 root     root          4096 May 16 02:30 bind
lrwxrwxrwx    1 root     root             0 May 16 02:30 module -> ../../../../module/cardDrvKernelRtl
--w-------    1 root     root          4096 May 16 02:30 new_id
--w-------    1 root     root          4096 May 16 02:30 remove_id
--w-------    1 root     root          4096 May 16 02:30 uevent
--w-------    1 root     root          4096 May 16 02:30 unbind[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#
echo "0000:03:00.0" > /sys/bus/pci/drivers/驱动名称/unbind
echo "0000:03:00.0" >/sys/bus/pci/drivers/rtl-dc-drv/unbind
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#echo "0000:03:00.0" >/sys/bus/pci/dri
vers/rtl-dc-drv/unbind
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#ls
--w-------    1 root     root          4096 May 16 02:30 bind
lrwxrwxrwx    1 root     root             0 May 16 02:30 module -> ../../../../module/cardDrvKernelRtl
--w-------    1 root     root          4096 May 16 02:30 new_id
--w-------    1 root     root          4096 May 16 02:30 remove_id
--w-------    1 root     root          4096 May 16 02:30 uevent
--w-------    1 root     root          4096 May 16 02:51 unbind
[root@MPU /sys/bus/pci/drivers/rtl-dc-drv]#重新绑定
echo "0000:03:00.0" >/sys/bus/pci/drivers/rtl-dc-drv/bind

平台设备

操作流程

[root@LPU /sys/bus/platform/drivers/stmmaceth]#echo 2820c000.eth >unbind 
[ 2407.875477][  0] stmmaceth 2820c000.eth eth0: stmmac_dvr_remove: removing driverJan  1 1970 00:40:07  %IPU-MSG-3:ipu_sub_chan_rx_thread 297, chan 0, proto 0620, Network is down
Jan  1 1970 00:40:07  %IPU-MSG-3:ipu_sub_chan_rx_thread 297, chan 0, proto 0621, Network is down
[root@LPU /sys/bus/platform/drivers/stmmaceth]#
[root@LPU /sys/bus/platform/drivers/stmmaceth]#dmesg
[   28.484663][  0] igb_uio 0000:01:00.0: uio device registered with irq 29
[   29.168287][  0] igb_uio 0000:01:00.1: uio device registered with irq 30
[   30.418937][  0] Generic PHY stmmac-0:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=stmmac-0:00, irq=POLL)
[   30.439589][  0] dwmac1000: Master AXI performs fixed burst length
[   30.445868][  0] stmmaceth 2820c000.eth eth0: No Safety Features support found
[   30.453258][  0] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   30.578792][  0] Generic PHY stmmac-1:00: attached PHY driver [Generic PHY] (mii_bus:phy_addr=stmmac-1:00, irq=POLL)
[   30.598581][  0] dwmac1000: Master AXI performs fixed burst length
[   30.604765][  0] stmmaceth 28210000.eth eth1: No Safety Features support found
[   30.612118][  0] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 2407.875477][  0] stmmaceth 2820c000.eth eth0: stmmac_dvr_remove: removing driver
[root@LPU /sys/bus/platform/drivers/stmmaceth]#
[root@LPU /sys/bus/platform/drivers/stmmaceth]#
[root@LPU /sys/bus/platform/drivers/stmmaceth]#echo 2820c000.eth >bind 
[ 2428.523550][  0] stmmaceth 2820c000.eth: PTP uses main clock
[ 2428.529261][  0] stmmaceth 2820c000.eth: no reset control found
[ 2428.551614][  0] stmmaceth 2820c000.eth: User ID: 0x10, Synopsys ID: 0x36
[ 2428.558411][  0] stmmaceth 2820c000.eth:     DWMAC1000
[ 2428.563282][  0] stmmaceth 2820c000.eth: DMA HW capability register supported
[ 2428.577601][  0] stmmaceth 2820c000.eth: RX Checksum Offload Engine supported
[ 2428.593601][  0] stmmaceth 2820c000.eth: COE Type 2
[ 2428.601601][  0] stmmaceth 2820c000.eth: TX Checksum insertion supported
[ 2428.617417][  0] stmmaceth 2820c000.eth: Normal descriptors
[ 2428.626600][  0] stmmaceth 2820c000.eth: Ring mode enabled
[ 2428.638601][  0] stmmaceth 2820c000.eth: Enable RX Mitigation via HW Watchdog Timer
[ 2428.672218][  0] libphy: stmmac: probed
[ 2428.676052][  0] YT8531S Ethernet stmmac-0:00: attached PHY driver [YT8531S Ethernet] (mii_bus:phy_addr=stmmac-0:00, irq=POLL)
[ 2428.691601][  0] YT8531S Ethernet stmmac-0:01: attached PHY driver [YT8531S Ethernet] (mii_bus:phy_addr=stmmac-0:01, irq=POLL)
[root@LPU /sys/bus/platform/drivers/stmmaceth]#
[root@LPU /sys/bus/platform/drivers/stmmaceth]#
http://www.xdnf.cn/news/6602.html

相关文章:

  • API 加速方案:如何使用 Redis 与 Memcached 进行高效缓存优化
  • SpringBoot常用注解详解
  • 【蓝桥杯省赛真题50】python字母比较 第十五届蓝桥杯青少组Python编程省赛真题解析
  • ubuntu22鼠键失灵恢复记录笔记chatgpt解决
  • JavaScript性能优化实战(10):前端框架性能优化深度解析
  • nosqlbooster pojie NoSQLBooster for MongoDB
  • Android studio 实现弹出表单编辑界面
  • Cadence sch 删除原理图位号下划线
  • neo4j框架:ubuntu系统中neo4j安装与使用教程
  • c++20引入的三路比较操作符<=>
  • Linux-进程概念(一)
  • WAS和Tomcat的对比
  • 如何查询Ubuntu系统中最大的几个目录以G单位显示大小,从大到小排列?
  • 我用 CodeBuddy 开发了一个颜色命名搜索器 —— ColorNameHub 的诞生记
  • 在 Kotlin 中,什么是解构,如何使用?
  • 探索嵌入式硬件的世界:技术、应用与未来趋势
  • 知识蒸馏实战:用PyTorch和预训练模型提升小模型性能
  • LeetCode 746 使用最小花费爬楼梯
  • java -jar命令运行 jar包时如何运行外部依赖jar包
  • IEEE 列表会议第五届机器人、自动化与智能控制国际会议
  • python怎么将函数设置为保护状态
  • Suna: 开源多面手 AI 代理
  • MySQL数据库——支持远程IP访问的设置方法总结
  • LLM学习笔记(六)线性代数
  • 04、基础入门-SpringBoot官方文档架构
  • 代理(主要是动态)和SpringAOP
  • Hue面试内容整理-Hue 架构与前后端通信
  • pytorch 14.3 Batch Normalization综合调参实践
  • SearxNG本地搜索引擎
  • Java并发编程核心组件简单了解