[嵌入式linux]PCIe 热拔插(rescan)
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)相关推荐
- 嵌入式linux pcie网卡配置,[嵌入式linux]PCIe 热拔插(rescan)
linux下可通过/sys/bus/pci/devices/0000\:[bus number]\:[device number].[function number]/ 目录下的节点进行热拔插操作. ...
- 嵌入式linux pcie网卡配置,嵌入式Linux下PCIE数据采集卡驱动开发
目录 5.4 中断 (34) 5.4.1 Linux中断处理架构 (34) 5.4.2 Linux中断编程 (34) 5.5 本章小结 (35) 第六章PCIE高速数据采集卡驱动程序开发 (36) 6 ...
- 【Orangepi Zero2 全志H616】语音刷抖音 / 手机连接Linux热拔插相关
目录 一.手机连接Linux步骤 二.adb控制指令 三.基于Linux串口实现语音刷抖音 1.语音模块控制详情 2.代码实现 一.手机连接Linux步骤 1.把手机接入开发板 2.安装adb工具,在 ...
- Linux | PCIe Hotplug | 概念及工作原理的不完全总结
本文对 PCIe 热插拔的概念及工作原理进行不完全总结. 更新: 2022 / 12 / 31 Linux | PCIe Hotplug | 概念及工作原理的不完全总结 热插拔 组成部件 实现代码 通 ...
- 韦东山二期驱动视频-热拔插驱动——RK3399自制linux系统不支持HDMI热拔插问题分析
背景: 公司的板子,对于HDMI的显示器热拔插不支持,只能在插入HDMI时启动才能输出,而当开机之后,再插入HDMI显示器则无输出,不知道原因. 推测如下: 1.设备树的引脚配置有误,导致插入HDMI ...
- 嵌入式Linux内核配置、裁剪与编译浅析(ARM版)
第一部分Linux内核裁减 (1)安装新内核: i)将新内核copy到/usr/src下并解压: #tar -zxvf linux-2.6.38.4.tar.gz ii) 将名为linux的符号链接删 ...
- 嵌入式 Linux 2.6.31内核优化指南小结
介绍 本文档是一篇关于Linux Kernel 2.6.31的最简优化指南.作者旨在编译一份性能最佳且适合普通Application/Server开发用的内核. 本文提及的内核调优,主要是通过选择最佳 ...
- 嵌入式linux加载引导内核和根文件系统的方法
总体来说,嵌入式Linux内核和根文件的引导与PC机差不多. 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我 们将内核和根文件系统直接烧入到Flash中(包括NOR和NA ...
- 嵌入式Linux开发板_WIFI无线网卡驱动移植
在线课堂:https://www.100ask.net/index(课程观看) 论 坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...
- 嵌入式烧写Linux内核,嵌入式linux 内核和根文件系统烧写方式简介
总体来说,嵌入式Linux内核和根文件的引导与PC机差不多. 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...
最新文章
- 【企业管理】整理和思考-陈春花:2022年经营关键词
- .net随笔-vb.net打开外部程序发送键盘信号(3)
- 其他综合-跳板机jumpserver的安装
- LVS负载均衡-NET、DR模式配置
- 如何把Win11任务栏变窄
- 基于实例数据详解准确率和召回率
- ArrayList<object> list 转org.json.JSONArray
- C#调用第三方ocx控件 (winform /aspx)
- 非标机械设计该怎么做,老机械工程师告诉你
- 用于Linux系统/网络管理的nmap命令的实例
- a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?...
- AD9833介绍与应用(C语言实现)
- 小猿日记 - 程序猿的日常日记(2)
- 【cocos2d-x 2】关于CocosStudio编辑出的csb的简单使用
- 开题报告:基于java多用户商城平台系统 毕业设计论文开题报告模板
- Animated详解
- Django书籍下载地址收集
- 计算机网络:IP地址和子网掩码的关系
- 打造最小的XP系统180M
- vim 一些常用命令