麒麟版 V10 海光 10G 板载网卡驱动排查记录
状态已解决重启后网卡可正常使用 记录日期2026-08-05一、环境信息项目内容整机联想hostname:lenovo-pc海光平台操作系统银河麒麟桌面操作系统V10KYLIN_RELEASE_ID020系统基线ID_LIKEdebian内核版本5.4.18-87.76-generic架构x86_64网卡海光Chengdu Haiguang IC Design集成 10 Gb Ethernet Controller ×4PCI 地址06:00.4/06:00.5/06:00.6/06:00.7PCI ID1d94:1458Port 0/1、1d94:1459Port 2/3板载标识DeviceName: LOM 1二、故障现象系统安装完成后无任何有线网络接口ip link show仅有lo1: lo: LOOPBACK,UP,LOWER_UP mtu 65536 ...dmesg中没有任何eth、firmware failed相关报错说明并非固件缺失而是驱动根本没有被触发。三、排查过程3.1 确认硬件与驱动状态lspci -nn | grep -iE ethernet|network输出显示四个海光 10G 控制器PCI ID 为1d94:1458/1d94:1459。海光 CPU 基于 AMD 授权架构其集成网卡对应 AMD 的amd-xgbe驱动AMD 侧 PCI ID 为1022:1458/1022:1459。lspci -k -s 06:00.4关键输出06:00.4 Ethernet controller: Chengdu Haiguang IC Design Co., Ltd. 10 Gb Ethernet Controller Port 0/Port1 DeviceName: LOM 1 Subsystem: ...既没有Kernel driver in use也没有Kernel modules。这是本次定位的关键判据有driver in use→ 驱动已绑定问题在配置层只有Kernel modules无in use→ 模块存在但未绑定两者都无 → PCI ID 匹配表里根本没有这个设备3.2 确认驱动模块本身存在modinfo amd-xgbe | head -5 ls /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/amd/xgbe/结果filename: /lib/modules/5.4.18-87.76-generic/kernel/drivers/net/ethernet/amd/xgbe/amd-xgbe.ko description: AMD 10 Gigabit Ethernet Driver version: 1.0.3 license: Dual BSD/GPL模块文件存在且完好。说明不需要重新编译驱动本体。3.3 定位根因PCI ID 匹配表缺失grep -i v0000102[2]d00001458 /lib/modules/$(uname -r)/modules.alias grep -i 1d94 /lib/modules/$(uname -r)/modules.alias结果# AMD 的 ID 在 alias pci:v00001022d00001458sv*sd*bc*sc*i* amd_xgbe ​ # 海光的 ID 里其他驱动都有唯独没有 xgbe alias pci:v00001D94d0000790Bsv*sd*bc*sc*i* i2c_piix4 alias pci:v00001D94d00001463sv*sd*bc*sc*i* k10temp alias pci:v00001D94d00001486sv*sd*bc*sc*i* ccp alias pci:v00001D94d00001468sv*sd*bc*sc*i* ccp alias pci:v00001D94d00001456sv*sd*bc*sc*i* ccp alias pci:v00001D94d00001537sv*sd*bc*sc*i* ccp根本原因确认amd-xgbe驱动的xgbe_pci_table[]中只收录了 AMD 厂商 ID0x1022未收录海光厂商 ID0x1d94。内核 PCI 子系统按 ID 匹配失败因此设备永远不会触发amd-xgbe的 probe 流程。补充判断依据ccp、k10temp、i2c_piix4均已收录1d94系列 ID说明该内核确实做过海光适配只是 xgbe 被遗漏。这提示大概率只是 ID 缺失而非需要额外的板级适配代码 —— 后续验证证实了这一判断。四、解决方案4.1 关键技术点new_id必须携带driver_data内核提供/sys/bus/pci/drivers/driver/new_id接口可在运行时向驱动动态注册 PCI ID。new_id的字段顺序全部按十六进制解析vendor device subvendor subdevice class class_mask driver_data⚠️ 重要陷阱amd-xgbe的 probe 函数会直接解引用id-driver_data该字段指向版本描述结构体xgbe_v2a/xgbe_v2b。若使用new_id时省略该字段默认为 0probe 会发生 NULL 指针解引用直接导致内核 oops。因此必须从/proc/kallsyms取出符号地址一并传入。4.2 手工验证步骤# 1. 加载模块 sudo modprobe amd-xgbe # 2. 确认 sysfs 下驱动目录名注意alias 中是下划线 amd_xgbesysfs 中是连字符 amd-xgbe ls /sys/bus/pci/drivers/ | grep -i xgbe # 输出: amd-xgbe # 3. 放开内核符号地址限制并取符号 sudo sysctl -w kernel.kptr_restrict0 V2A$(sudo awk $3xgbe_v2a{print $1} /proc/kallsyms) V2B$(sudo awk $3xgbe_v2b{print $1} /proc/kallsyms) echo V2A$V2A V2B$V2B # 输出: V2Affffffffc1688900 V2Bffffffffc16888c0 # ★ 必须为非零十六进制地址若为空或全 0禁止继续执行 # 4. 注册 PCI ID echo 1d94 1458 ffffffff ffffffff 0 0 $V2A | sudo tee /sys/bus/pci/drivers/amd-xgbe/new_id echo 1d94 1459 ffffffff ffffffff 0 0 $V2B | sudo tee /sys/bus/pci/drivers/amd-xgbe/new_id4.3 验证结果dmesg输出[1957.251814] libphy: amd-xgbe-mii: probed [1957.252339] amd-xgbe 0000:06:00.4 eth0: net device enabled [1957.252406] amd-xgbe 0000:06:00.5: enabling device (0140 - 0142) [1957.253100] amd-xgbe 0000:06:00.5 eth1: net device enabled [1957.258274] amd-xgbe 0000:06:00.5 eno2: renamed from eth1 [1957.291714] amd-xgbe 0000:06:00.4 eno1: renamed from eth0 [1960.542990] amd-xgbe 0000:06:00.6 eth0: net device enabled [1960.543782] amd-xgbe 0000:06:00.7 eth1: net device enabled [1960.547106] amd-xgbe 0000:06:00.7 eno4: renamed from eth1 [1960.575571] amd-xgbe 0000:06:00.6 eno3: renamed from eth0 [1964.746361] amd-xgbe 0000:06:00.6 eno3: Link is Up - 1Gbps/Full - flow control rx/txip link show2: eno1: BROADCAST,MULTICAST ... link/ether e8:61:1a:6e:36:1d 3: eno2: BROADCAST,MULTICAST ... link/ether e8:61:1a:6e:36:1e 4: eno3: BROADCAST,MULTICAST ... link/ether e8:61:1a:6e:36:1f 5: eno4: BROADCAST,MULTICAST ... link/ether e8:61:1a:6e:36:20lspci -k -s 06:00.4新增Kernel driver in use: amd-xgbe四个网口全部识别MAC 地址 OUIe8:61:1a为联想驱动绑定成功。4.4 开机固化new_id为运行时注册重启后失效。通过 systemd 服务在 NetworkManager 启动之前完成绑定。绑定脚本/usr/local/sbin/hygon-xgbe-bind.sh#!/bin/bash modprobe amd-xgbe # 已绑定则直接退出防重复执行 [ -e /sys/bus/pci/drivers/amd-xgbe/0000:06:00.4 ] exit 0 R$(sysctl -n kernel.kptr_restrict); sysctl -qw kernel.kptr_restrict0 A$(awk $3xgbe_v2a{print $1} /proc/kallsyms) B$(awk $3xgbe_v2b{print $1} /proc/kallsyms) sysctl -qw kernel.kptr_restrict$R # 空值 / 全零保护避免 probe 时 NULL 解引用 [ -n $A ] [ $A ! 0000000000000000 ] \ echo 1d94 1458 ffffffff ffffffff 0 0 $A /sys/bus/pci/drivers/amd-xgbe/new_id [ -n $B ] [ $B ! 0000000000000000 ] \ echo 1d94 1459 ffffffff ffffffff 0 0 $B /sys/bus/pci/drivers/amd-xgbe/new_id exit 0服务单元/etc/systemd/system/hygon-xgbe.service[Unit] DescriptionBind Hygon 10G NIC to amd-xgbe DefaultDependenciesno Aftersysinit.target Beforenetwork-pre.target NetworkManager.service Wantsnetwork-pre.target [Service] Typeoneshot RemainAfterExityes ExecStart/usr/local/sbin/hygon-xgbe-bind.sh [Install] WantedBymulti-user.target EOF启用sudo chmod x /usr/local/sbin/hygon-xgbe-bind.sh sudo systemctl daemon-reload sudo systemctl enable hygon-xgbe.service sudo sysctl -w kernel.kptr_restrict1 # 恢复安全设置BeforeNetworkManager.service是刻意设计既保证开机即有网也顺带规避了下文的热添加崩溃问题。五、过程中遇到的次生问题5.1 NetworkManager 段错误手工执行new_id后dmesg 出现[1964.764505] NetworkManager[923]: segfault at 68 ip 0000557398eb1ef7 sp 00007ffc16063ba0 error 4 in NetworkManager[557398d2c0001df000] Code: ... 48 8b 5f 68 ...反汇编48 8b 5f 68即mov rbx,[rdi0x68]rdi接近 NULL。判断NetworkManager 在处理运行中途热添加的新网络设备时踩了空指针。因 NM 已启动完成设备才凭空出现某个初始化路径被跳过。影响NM 崩溃后无人管理接口四个口随即全部Link is Down。规避通过 systemd 服务让设备在 NM 启动前就位开机流程不会走到该热添加路径。经重启验证问题未复现。5.2 应急联网方式NM 不可用时在 NM 故障期间可绕开它直接配置sudo ip link set eno3 up sudo dhclient -v eno3 # 或静态配置 sudo ip addr add 192.168.1.100/24 dev eno3 sudo ip route add default via 192.168.1.1 echo nameserver 114.114.114.114 | sudo tee /etc/resolv.confKylin V10 为 Debian 系也可使用 ifupdown/etc/network/interfaces。六、经验小结lspci -k的输出形态是快速分流的关键判据可一眼区分模块缺失、模块未绑定、已绑定但配置问题三种情况避免一上来就盲目编译驱动。国产化平台常见问题模式驱动代码是通用的缺的只是厂商 PCI ID。海光/兆芯等基于授权架构的 CPU其外设往往可直接复用上游驱动只需补充 ID 匹配项。交叉验证技巧检查modules.alias中同厂商其他设备是否已收录。本例中ccp、k10temp均有1d94条目佐证了内核已做海光适配、xgbe 系遗漏从而对仅补 ID 即可建立了信心。使用new_id时务必确认驱动是否依赖driver_data。盲目省略该字段可能触发内核 oops。操作前应先存盘。dmesg中的Link is Up - 1Gbps/Full是物理链路层的可靠证据可据此排除线缆、接口形态RJ45 / SFP等问题。七、后续待办事项说明优先级向厂商反馈联想售后 麒麟软件技术支持报1d94:1458/1459KYLIN_RELEASE_ID 020 内核5.4.18-87.76索取正式驱动适配补丁高反馈 NM segfault一并提交 NetworkManager 热添加设备时的空指针崩溃问题中内核升级后复验当前方案依赖运行时new_id。虽然脚本每次动态取符号地址不受地址变动影响但内核大版本升级后仍需验证服务是否生效中考虑重编模块更彻底的方案是在xgbe_pci_table[]中补充两条 ID 后重新编译amd-xgbe.ko需linux-headers-5.4.18-87.76-generic严格同版本低合规提醒本机为国防版系统若属涉密内网设备自建 systemd 服务、加载非原厂配置、修改kernel.kptr_restrict等操作可能需向保密管理员报备。长期方案应以厂商官方适配包为准自行编译的内核模块可能不符合相关管理规定。国防版系统的 KySec 安全机制可能拦截未签名内核模块。本机 dmesg 中 nvidia 模块以module verification failed ... tainting kernel形式成功加载说明当前未处于强制签名状态。

相关新闻

优惠活动设计:商业逻辑与运营实践

优惠活动设计:商业逻辑与运营实践

1. 优惠活动背后的商业逻辑作为一名在零售行业摸爬滚打多年的从业者,我见过太多"优惠活动"沦为单纯的降价噱头。实际上,一场精心设计的促销活动背后隐藏着完整的商业闭环。今天我就从运营视角,拆解优惠活动设计的核心要素。任何优惠…

2026/8/6 9:51:45 阅读更多 →
车载信息娱乐与ADAS中的MTFC32GAZAQDW-AAT:32GB eMMC 5.1存储应用案例解析

车载信息娱乐与ADAS中的MTFC32GAZAQDW-AAT:32GB eMMC 5.1存储应用案例解析

MTFC32GAZAQDW-AAT:车规级32GB eMMC 5.1嵌入式存储深度解析在车载信息娱乐、高级驾驶辅助系统(ADAS)以及高可靠性工业嵌入式应用中,存储方案的性能、寿命和宽温适应能力直接决定了系统的稳定性和用户体验。美光(Micron…

2026/8/6 9:51:45 阅读更多 →
深入解析STM32 PWM定时器:从寄存器操作到电机驱动实战

深入解析STM32 PWM定时器:从寄存器操作到电机驱动实战

1. 项目概述:为什么PWM定时器是微控制器的“心跳”与“画笔” 如果你玩过Arduino,大概率用过 analogWrite() 函数让一个LED灯从暗到亮平滑变化;如果你调试过电机,肯定接触过通过调节“占空比”来控制转速的概念。这背后默默工作…

2026/8/6 9:51:45 阅读更多 →

最新新闻

FigmaCN终极指南:5分钟让Figma界面说中文,设计师效率翻倍

FigmaCN终极指南:5分钟让Figma界面说中文,设计师效率翻倍

FigmaCN终极指南:5分钟让Figma界面说中文,设计师效率翻倍 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾被Figma的英文界面困扰?面对"…

2026/8/6 10:58:17 阅读更多 →
Unity Shader实战:MatCap技术实现炫酷镭射材质效果

Unity Shader实战:MatCap技术实现炫酷镭射材质效果

1. 项目概述:从“贴图球”到次世代质感 如果你在Unity或者Blender社区里混过一阵子,大概率见过一种叫“MatCap”的技术。这玩意儿听起来挺玄乎,但说白了,就是一种极其高效、效果又出奇好的“作弊”渲染手法。它不跟你玩复杂的光照…

2026/8/6 10:58:17 阅读更多 →
大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑

大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑

大麦网自动抢票终极指南:5分钟配置Python脚本告别手速焦虑 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 还在为周杰伦、五月天演唱会门票秒光而烦恼吗&#xff…

2026/8/6 10:58:17 阅读更多 →
打破语言壁垒:PotPlayer字幕翻译插件完整配置指南

打破语言壁垒:PotPlayer字幕翻译插件完整配置指南

打破语言壁垒:PotPlayer字幕翻译插件完整配置指南 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为外语电影的字幕而烦…

2026/8/6 10:58:17 阅读更多 →
飞书CLI开源:AI Agent与办公自动化融合的技术路径与实践

飞书CLI开源:AI Agent与办公自动化融合的技术路径与实践

1. 从命令行到智能体:飞书CLI开源背后的范式转移 最近,飞书官方开源了其命令行工具(CLI),这件事在开发者圈子里激起的波澜,远比表面上看起来要大。很多人第一反应可能是:“哦,又一个…

2026/8/6 10:58:17 阅读更多 →
AI 工具安装

AI 工具安装

千问工具 1. 网址 大模型服务平台百炼控制台百炼控制台是阿里云大模型服务平台,提供AI模型训练、部署、推理一站式服务,支持多种大模型框架,助力企业快速构建AI应用。https://bailian.console.aliyun.com/cn-beijing?tabdoc#/doc/?typemo…

2026/8/6 10:57:16 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →