alfred_zheng
先反馈一下 r7897 版本反馈 中提到的问题。
经过本次系统固件和 MCU 升级,以及后续连续运行测试,之前反馈的蜂窝网络启动异常、5G 连接后无流量、wwan0 无地址或默认路由,以及 QMI 与另一套拨号路径可能产生争用的问题,目前已经解决或不再复现。
当前实际运行情况:
- 系统固件:
R26.04.1 / r7908-e9d43baf74 - 内核:
6.12.91 - MCU:
RA2E1260813002 - Modem:
RM500Q-CN - 中国广电 5G 注册正常
-
quectel-cm单独负责 QMI 拨号 -
wwan0IPv4/IPv6 地址和默认路由正常 - 未发现 MBIM、umbim 或第二套拨号程序
- OpenClash、DNS、Samba、Wi-Fi 均正常
这部分基本可以确认,之前反馈的蜂窝网络问题已经得到解决。实际使用中也不再需要同时启用第二套拨号器。
不过现在发现一个新的问题。这个问题在本次固件升级前就已经存在,升级到 r7908、同时升级 MCU 后仍然持续,并不是本次升级新引入的。
CMA 内存分配告警
系统日志中每隔大约 64 秒出现一次:
cma: __cma_alloc: reserved: alloc failed, req-size: 2 pages, ret: -12
cma: number of available pages: ... => 8 free of 16384 total pages
rk_gmac-dwmac 2a220000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
现场数据:
CmaTotal: 65536 kB
CmaFree: 32 kB
MemAvailable: 约 3.4 GB
也就是说,系统普通内存并没有耗尽,仍有约 3.4 GB 可用;真正耗尽的是 64 MB 的 CMA 专用连续内存区,目前只剩约 32 KB,而且剩余页是分散的。
进一步观察发现:
- 告警均关联到
rk_gmac-dwmac ... eth0 -
eth0当前处于断开状态 -
eth0收发包均为 0 - 实际工作的
eth1正常,收发错误为 0 - 告警约每 64 秒重复一次
- 当前没有影响 QMI、OpenClash、管理网络或存储使用
目前的判断
目前能够确定的直接原因是:
空闲的
eth0网卡驱动周期性注册或初始化 page-pool 时,需要从 CMA 区申请连续物理页,但 CMA 区已经基本耗尽,因此返回-12。
但是还有一些问题需要进一步确认:
- CMA 区的内存到底被哪个驱动长期占用?
- 是否存在某个 DMA 驱动没有正确释放 CMA 内存?
- 为什么
eth0在没有连接网线、没有收发数据的情况下仍然周期性重新初始化? - 64 MB CMA 预留是否适合当前硬件配置?
- 这个问题是否与
rk_gmac-dwmac的 page-pool 处理有关?
目前不能仅凭日志直接断言一定是某个驱动泄漏,但可以确认这不是普通 RAM 不足,也不是 MCU、QMI 或 OpenClash 配置造成的。
希望官方确认的问题
- 这是已知的 r7908 内核或网卡驱动问题吗?
- 为什么断开的
eth0仍然每隔约 64 秒触发 page-pool 初始化? - 是否有办法确认 CMA 区的实际占用者?
- 是否计划修复
rk_gmac-dwmac的内存申请或释放逻辑? - 是否建议在设备树中增大 CMA,还是应该优先修复驱动占用问题?
- 如果该网口在当前硬件配置中未使用,是否可以由官方在设备树中禁用?
- 是否可以提供包含相关修复的测试固件或补丁?
目前我没有修改启动参数,也没有强行增大 CMA,没有禁用网卡。因为当前设备功能正常,希望先得到官方对根因和处理方式的确认。
官方 r7897/r7908 更新记录中已经包含蜂窝网络启动、连接恢复和 netifd 拨号相关修复,但没有看到 CMA 或 rk_gmac-dwmac 相关说明:
- [Photonicat 2 固件更新日志]