Linux x86/x86_64 内核长期以来一直使用 clearcpuid=
内核参数来禁止内核使用某些 CPUID 功能。然而它的使用并不直观,因为它依赖于传递特定功能的位号(bit numbers)。在 Linux 5.19 中,如果想要禁用特定的 CPUID 功能,将会变得更容易处理了。
到现在为止,如果想禁用 Linux 内核所使用的 CPUID 功能,用户需要查看内核 x86 区域的 cpufeatures.h
头文件,并找到你想禁用的功能的位号。例如,想要禁用 AVX 意味着你需要设置 clearcpuid=156
。而且需要特别留意的是,有些位号在不同的 Linux 内核版本中并不完全一致。
在 Linux 5.19 中,clearcpuid=
内核参数可以设置为 /proc/cpuinfo
中显示的标志值字符串。因此,与其需要记住像 clearcpuid=156
这样的数字,你现在可以直接使用 clearcpuid=avx
。多个 CPUID 标志可以通过使用逗号来分隔。
对于系统管理员和那些在系统上调试内核行为的开发者来说,这是一个早就应该进行的内核可用性改进。此次改进并不意味着此前使用的位数方法会被淘汰,新版本中依然可以使用位数。用户空间的软件通过直接调用 CPUID 或直接使用任何相关指令也能够继续使用对应的功能, clearcpuid=
只是为了避免 Linux 内核的使用,并从 /proc/cpuinfo
输出中删除它。这一变化将作为 Linux 5.19 的 x86/cpu 更新的一部分被合并。
暂无回复。