You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何停止Linux 4.19内核中eMMC的CQE恢复?

解决方案

你的方案可行性分析

  1. MMC_CQE_RECOVERY_TIMEOUT 参数:该值是内核编译时定义的宏,并非可动态配置的内核命令行参数,预编译内核无法通过启动参数修改,此方案不可行。
  2. 用户态调用 mmc_cqe_request_done:mmc_cqe_request_done 是内核态专属函数,用户态程序无法直接获取内核中的 struct mmc_host 和 struct mmc_request 结构体指针,mknod 仅能创建设备文件,无法提供这些内核对象的访问入口,此方案也不可行。

无需修改内核源码的可行方法

方法1:通过内核命令行禁用CQE功能

Linux 4.19的MMC子系统支持通过内核启动参数全局禁用CQE,避免触发恢复流程:

  • 在启动配置(如GRUB、U-Boot的bootargs)中添加参数:mmc.cqe_disable=1
  • 若需针对特定MMC主机禁用,可使用:mmc_host.<host_num>.cqe_disable=1(将<host_num>替换为实际主机编号,如mmc_host.0.cqe_disable=1)
  • 重启系统后生效,此时eMMC将使用传统的非CQE路径,不会出现"running CQE recovery"提示。

方法2:运行时通过sysfs动态禁用CQE

无需重启,可在系统运行时通过sysfs节点调整:

  1. 找到对应eMMC主机的sysfs目录,通常位于/sys/class/mmc_host/mmcX/(X为主机编号,可通过ls /sys/class/mmc_host/查看)
  2. 检查目录下是否存在cqe_disable或cqhci_enable文件:
    • 若存在cqe_disable,执行:echo 1 > /sys/class/mmc_host/mmcX/cqe_disable
    • 若存在cqhci_enable,执行:echo 0 > /sys/class/mmc_host/mmcX/cqhci_enable
  3. 执行上述命令后,重新以读写模式挂载分区即可。

内容的提问来源于stack exchange,提问作者Bret Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:32:51