麒麟版 V10 海光 10G 板载网卡驱动排查记录

发布时间:2026/8/6 9:51:22

麒麟版 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形式成功加载说明当前未处于强制签名状态。

相关新闻

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

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

2026/8/6 9:51:22

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

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

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

2026/8/6 9:51:22

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

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

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

2026/8/6 9:51:22

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

基于Kubernetes的AI算力精细化管理:从资源调度到成本控制

基于Kubernetes的AI算力精细化管理:从资源调度到成本控制

2026/8/6 11:01:29

在实际技术领域,尤其是涉及人工智能、机器学习模型部署和算力资源管理的项目中,我们经常面临一个核心矛盾:如何在有限的资源(如计算卡、内存、预算)下,高效、稳定地运行和迭代前沿模型。这不仅仅是技术选型…

3分钟快速上手:obs-multi-rtmp插件实现OBS多平台直播推流终极指南

3分钟快速上手:obs-multi-rtmp插件实现OBS多平台直播推流终极指南

2026/8/6 11:01:29

3分钟快速上手:obs-multi-rtmp插件实现OBS多平台直播推流终极指南 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 你是否正在为多平台直播而烦恼?想要同时推流到…

MySQL数据库入门与实战指南

MySQL数据库入门与实战指南

2026/8/6 11:01:29

1. MySQL入门:从零开始掌握数据库核心第一次接触MySQL时,我被它简洁的命令行界面吓到了——黑底白字的窗口闪烁着光标,仿佛在嘲笑我的无知。但当我真正开始使用后,发现这可能是最友好的关系型数据库之一。MySQL作为开源数据库的标…

Linux常用指令大全:从基础到进阶系统管理

Linux常用指令大全:从基础到进阶系统管理

2026/8/6 11:01:29

1. Linux常用指令概述作为一名Linux系统管理员,我每天都要与各种命令行工具打交道。Linux指令系统就像一把瑞士军刀,看似简单却蕴含着强大的功能。对于初学者来说,掌握这些基础指令是迈向Linux世界的第一步;而对于有经验的用户&am…

2026本科毕业论文工具深度横评:实战避坑挑对学范文省时又安心

2026本科毕业论文工具深度横评:实战避坑挑对学范文省时又安心

2026/8/6 11:01:29

在2026年这个毕业论文季,无数本科毕业生正经历着‘选题难、文献挤牙膏、查重如过山车’的痛。前段时间,一位大四学弟找我吐槽:花了大半个月爆肝写的初稿,一查重发现62.7%,差点原地裂开。这事儿搁谁不崩溃?正…

YOLO可编辑环境搭建与二次开发实战指南

YOLO可编辑环境搭建与二次开发实战指南

2026/8/6 10:51:28

1. 项目概述:为什么要搭建可二次编辑的YOLO环境?在计算机视觉领域,YOLO(You Only Look Once)作为单阶段目标检测算法的代表,因其实时性和高精度成为工业界首选。但官方预编译的版本往往存在三个致命缺陷&am…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/6 5:43:30

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…