我的电脑运行的是 ubuntu 20.04 内核(5.15.0-52-generic)。我获取了内核源代码,然后尝试启用 CMA(连续内存管理)。运行以下命令:$ LANG=C fakeroot debian/rules editconfigs 无法通过某些检查,并出现以下警告:
check-config:/tmp/tmp.okfgV2ZLKk/CONFIGS/amd64-config.flavour.lowlatency:加载配置 check-config:/home/tester/linux/linux-hwe-5.15-5.15.0/debian.hwe-5.15/config/annotations 加载注释 check-config:失败(n!= -):CONFIG_DMA_PERNUMA_CMA 策略<{'arm64':'y','armhf':'n'}> check-config:失败(32!= -):CONFIG_CMA_SIZE_MBYTES 策略<{'arm64':'32','armhf':'32'}> 标记注释<LP:1823753> check-config:失败(n!= -):CONFIG_CMA_SIZE_SEL_PERCENTAGE 策略<{'arm64': 'n','armhf':'n'}> 检查配置:失败(y != -):CONFIG_CMA_SYSFS 策略<{'arm64':'y','armhf':'y','ppc64el':'y','s390x':'y'}> 检查配置:失败(8 != -):CONFIG_CMA_ALIGNMENT 策略<{'arm64':'8','armhf':'8'}> 检查配置:失败(y != -):CONFIG_CMA_SIZE_SEL_MBYTES 策略<{'arm64':'y','armhf':'y'}> 检查配置:失败(y != -):CONFIG_DMA_CMA 策略<{'arm64':'y','armhf':'y', 's390x':'n'}> 标记注释<LP#1362261>注释<LP:1803206> 检查配置:失败(y!= -):CONFIG_CMA_DEBUGFS策略<{'arm64':'n','armhf':'n','ppc64el':'n','s390x':'n'}> 检查配置:失败(y!= -):CONFIG_CMA_DEBUG策略<{'arm64':'n','armhf':'n','ppc64el':'n','s390x':'n'}> 检查配置:失败(y!= -):CONFIG_DMABUF_HEAPS_CMA策略<{'arm64':'y','armhf':'y'}>检查配置:失败(7 != -):CONFIG_CMA_AREAS 策略<{'arm64':'7','armhf':'7','ppc64el':'7','s390x':'7'}> 检查配置:失败(n != -):CONFIG_CMA_SIZE_SEL_MAX 策略<{'arm64':'n','armhf':'n'}> 检查配置:失败(n != -):CONFIG_CMA_SIZE_SEL_MIN 策略<{'arm64':'n','armhf':'n'}> 检查配置:失败(y != n):CONFIG_CMA 策略<{'amd64':'n','arm64':'y','armhf':'y', 'ppc64el': 'y', 's390x': 'y'}> 标记注释<LP#1362261> 注释<LP:1803206> 检查配置:11433/11447 检查已通过 -- 退出 1
*** 错误:检测到 2 个配置检查失败
警告:配置操作仅适用于部分架构(跳过 armhf arm64 ppc64el s390x)
出现错误。我该如何解决?我在 x64/amd64 平台上运行。目前我不太关心这些额外的平台。
答案1
除了 arm 之外,CMA 配置在所有平台上都是故意禁用的。debian.master/config/annoatations 似乎禁用了 amd64 CMA。可能值得尝试以与 arm64 相同的方式将其打开,然后检查配置并查看它是否在您的发行版中有效。我在 Ubuntu 22.04 中对其进行了测试,现在不会失败。但变更日志中显示 amd64 中的 CMA 启用导致性能和稳定性问题的原因,因此请仅将 hack 用于测试目的。