【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 driver

Jan  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]#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值