linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作。

板子上电前PCIe插槽有一块NVME的固态硬盘

[    0.198515] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400
[    0.199284] pci 0000:01:00.0: [126f:2263] type 00 class 0x010802
[    8.161374] nvme nvme0: pci function 0000:01:00.0
[    8.166407] nvme 0000:01:00.0: enabling device (0000 -> 0002)# ls /sys/bus/pci/devices/0000\:01\:00.0
broken_parity_status      enable                    rescan
class                     irq                       reset
config                    local_cpulist             resource
consistent_dma_mask_bits  local_cpus                subsystem
device                    modalias                  subsystem_device
devspec                   msi_bus                   subsystem_vendor
dma_mask_bits             power                     uevent
driver_override           remove                    vendor

现在需要在板子保持开机运行的状态下,先取下NVME的固态硬盘,再换上一块PCIe 网卡,并让网卡正常工作。

  • remove 原有设备,然后lspci查看, 0000:01:00.0: [126f:2263]已经不见了
# echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/remove
#
# lspci
00:00.0 Class 0604: 16c3:abcd
  • 现在可以从插槽取下固态硬盘,插上网卡
  • 通过上游bus进行rescan
 echo 1 > /sys/bus/pci/devices/0000\:00\:00.0/rescan
[   72.436704] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[   72.445041] pci 0000:01:00.0: [10ec:8168] type 00 class 0x020000
[   72.451319] pci 0000:01:00.0: reg 0x10: initial BAR value 0x00000000 invalid
[   72.458380] pci 0000:01:00.0: reg 0x10: [io  size 0x0100]
[   72.464113] pci 0000:01:00.0: reg 0x18: [mem 0x00000000-0x00000fff 64bit]
[   72.471112] pci 0000:01:00.0: reg 0x20: [mem 0x00000000-0x00003fff 64bit]
[   72.479299] pci 0000:01:00.0: supports D1 D2
[   72.483583] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   72.490667] pci_bus 0000:01: busn_res: [bus 01] end is updated to 01
[   72.497090] pci 0000:00:00.0: BAR 7: assigned [io  0x1000-0x1fff]
[   72.503202] pci 0000:01:00.0: BAR 4: assigned [mem 0xf1100000-0xf1103fff 64bit]
[   72.510683] pci 0000:01:00.0: BAR 2: assigned [mem 0xf1104000-0xf1104fff 64bit]
[   72.518162] pci 0000:01:00.0: BAR 0: assigned [io  0x1000-0x10ff]
# [   72.569018] r8169 0000:01:00.0: no of_node; not parsing pinctrl DT
[   72.575313] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[   72.580996] r8169 0000:01:00.0: enabling device (0000 -> 0003)
[   72.603261] r8169 0000:01:00.0 eth1: RTL8168h/8111h at 0xc8ea0000, e8:4e:06:72:f5:8a, XID 14100800 IRQ 66
[   72.612886] r8169 0000:01:00.0 eth1: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[   72.846167] r8169 0000:01:00.0: Direct firmware load for rtl_nic/rtl8168h-2.fw failed with error -2
[   72.855262] r8169 0000:01:00.0 eth1: unable to load firmware patch rtl_nic/rtl8168h-2.fw (-2)
[   72.876122] r8169 0000:01:00.0 eth1: link down
  • 查看新的网卡设备,多了一个eth1
# lspci
00:00.0 Class 0604: 16c3:abcd
01:00.0 Class 0200: 10ec:8168
#
#
# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:67:AB:81:02:BBUP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)Interrupt:16eth1      Link encap:Ethernet  HWaddr E8:4E:06:72:F5:8AUP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

[嵌入式linux]PCIe 热拔插(rescan)相关推荐

  1. 嵌入式linux pcie网卡配置,[嵌入式linux]PCIe 热拔插(rescan)

    linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作. ...

  2. 嵌入式linux pcie网卡配置,嵌入式Linux下PCIE数据采集卡驱动开发

    目录 5.4 中断 (34) 5.4.1 Linux中断处理架构 (34) 5.4.2 Linux中断编程 (34) 5.5 本章小结 (35) 第六章PCIE高速数据采集卡驱动程序开发 (36) 6 ...

  3. 【Orangepi Zero2 全志H616】语音刷抖音 / 手机连接Linux热拔插相关

    目录 一.手机连接Linux步骤 二.adb控制指令 三.基于Linux串口实现语音刷抖音 1.语音模块控制详情 2.代码实现 一.手机连接Linux步骤 1.把手机接入开发板 2.安装adb工具,在 ...

  4. Linux | PCIe Hotplug | 概念及工作原理的不完全总结

    本文对 PCIe 热插拔的概念及工作原理进行不完全总结. 更新: 2022 / 12 / 31 Linux | PCIe Hotplug | 概念及工作原理的不完全总结 热插拔 组成部件 实现代码 通 ...

  5. 韦东山二期驱动视频-热拔插驱动——RK3399自制linux系统不支持HDMI热拔插问题分析

    背景: 公司的板子,对于HDMI的显示器热拔插不支持,只能在插入HDMI时启动才能输出,而当开机之后,再插入HDMI显示器则无输出,不知道原因. 推测如下: 1.设备树的引脚配置有误,导致插入HDMI ...

  6. 嵌入式Linux内核配置、裁剪与编译浅析(ARM版)

    第一部分Linux内核裁减 (1)安装新内核: i)将新内核copy到/usr/src下并解压: #tar -zxvf linux-2.6.38.4.tar.gz ii) 将名为linux的符号链接删 ...

  7. 嵌入式 Linux 2.6.31内核优化指南小结

    介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南.作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核. 本文提及的内核调优,主要是通过选择最佳 ...

  8. 嵌入式linux加载引导内核和根文件系统的方法

    总体来说,嵌入式Linux内核和根文件的引导与PC机差不多. 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NA ...

  9. 嵌入式Linux开发板_WIFI无线网卡驱动移植

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  10. 嵌入式烧写Linux内核,嵌入式linux 内核和根文件系统烧写方式简介

    总体来说,嵌入式Linux内核和根文件的引导与PC机差不多. 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...

最新文章

  1. 【企业管理】整理和思考-陈春花:2022年经营关键词
  2. .net随笔-vb.net打开外部程序发送键盘信号(3)
  3. 其他综合-跳板机jumpserver的安装
  4. LVS负载均衡-NET、DR模式配置
  5. 如何把Win11任务栏变窄
  6. 基于实例数据详解准确率和召回率
  7. ArrayList<object> list 转org.json.JSONArray
  8. C#调用第三方ocx控件 (winform /aspx)
  9. 非标机械设计该怎么做,老机械工程师告诉你
  10. 用于Linux系统/网络管理的nmap命令的实例
  11. a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?...
  12. AD9833介绍与应用(C语言实现)
  13. 小猿日记 - 程序猿的日常日记(2)
  14. 【cocos2d-x 2】关于CocosStudio编辑出的csb的简单使用
  15. 开题报告:基于java多用户商城平台系统 毕业设计论文开题报告模板
  16. Animated详解
  17. Django书籍下载地址收集
  18. 计算机网络:IP地址和子网掩码的关系
  19. 打造最小的XP系统180M
  20. vim 一些常用命令

热门文章

  1. MySQL over函数的用法
  2. 数字图像字符识别——数字识别
  3. Gurobi求解标准数独问题
  4. 0到1使用spring-security(Spring的安全认证框架)
  5. BankNext 微服务:案例研究
  6. 番外篇--1. 简历优化
  7. 供应链管理-降低产品复杂度
  8. OpenCV-python安装教程
  9. 数据库优化方案之分库分表
  10. 内存颗粒和闪存颗粒的区别_slc、mlc、tlc闪存芯片颗粒哪个好?有什么区别?