是否可以在历史内核日志中检查 KPTI 和 ASID/PCID 的使用情况?

是否可以在历史内核日志中检查 KPTI 和 ASID/PCID 的使用情况?

我保存了几个月的内核日志。我可以从他们那里获得有关我的系统何时开始使用的任何有用信息吗KPTI,并且可能是ASID/PCID哪些功能会降低其性能?

我对 Fedora 内核 4.14 - 4.15 特别感兴趣。

我当前的内核是4.15.10-300.fc27.x86_64,并且它启用了 KPTI。

$ cat /sys/devices/system/cpu/vulnerabilities/meltdown 
Mitigation: PTI

我尝试过天真的搜索,但没有结果。

$ journalctl --since=2018-01-01 _TRANSPORT=kernel | grep -iE "kpti|asid|pcid"

语境

我正在尝试调试可怕的 Xwayland 车祸

对我来说,崩溃似乎是在 2018 年 2 月 28 日开始的。对于其他人来说,这种情况更为频繁,也许早在 2018-02-25 就发生了。

我对 CPU 微代码更新非常怀疑,这个错误已知会导致“意外页面错误”。但时间表并不完全令人信服。所以这让我思考,因为我调查意外的页面错误时,另一个需要查看的地方是内核。显然,最近内核页表支持发生了一些重大变化!

我的内核于 2018 年 2 月 18 日从 4.14 升级到 4.15 系列(使用 Fedora 应用的任何补丁)。

Feb 16 18:59:00 alan-laptop kernel: Linux version 4.14.18-300.fc27.x86_64 ([email protected]) (gcc version 7.3.1 20180130 (Red Hat 7.3.1-2) (GCC)) #1 SMP Thu Feb 8 01:35:31 UTC 2018
Feb 18 12:50:42 alan-laptop kernel: Linux version 4.15.3-300.fc27.x86_64 ([email protected]) (gcc version 7.3.1 20180130 (Red Hat 7.3.1-2) (GCC)) #1 SMP Tue Feb 13 17:02:01 UTC 2018

答案1

KPTI 由这一行显示:

Jan 04 14:40:33 alan-laptop kernel: Kernel/User page tables isolation: enabled

如果你禁用通过传递PCID nopcid,有一条日志消息。

+   pr_info("nopcid: PCID feature disabled\n");

否则,您需要一些深入的知识来检查内核版本,抱歉。

PCID 支持在上游内核版本 4.14 中实现。如果您的 cpu 支持(pcid以及pge中的标志),则应启用它lscpu,除非您使用 Xen(“Xen PV 需要一些工作”)或启动 32 位内核(“PCID 只能在 64 位模式下使用”) )。

这有点令人困惑。KPTI 随后在上游 Linux 4.15 中引入。然而,上面的日志消息来自 Fedora 内核 4.14.8-300,其中一定包含 KPTI 的向后移植。考虑到 Meltdown 漏洞的灾难性,这是个好消息。 KPTI、X86_BUG_CPU_INSECURE 等代码向后移植到上游稳定 4.14.11,于 2018 年 1 月 2 日发布。


其他最明显的消息似乎也没有为我的调查提供明确的嫌疑:(。

CPU微码更新:

May 18 18:42:52 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x23
May 18 18:42:52 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x24

May 19 09:03:58 alan-laptop kernel: microcode: microcode updated early to revision 0x24, date = 2016-04-29
May 19 09:03:58 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x24
May 19 09:03:58 alan-laptop kernel: microcode: Microcode Update Driver: v2.2.

Jun 03 09:24:34 alan-laptop kernel: microcode: microcode updated early to revision 0x25, date = 2017-01-27
Jun 03 09:24:34 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x25

Jan 11 08:48:40 alan-laptop kernel: microcode: microcode updated early to revision 0x25, date = 2017-01-27
Jan 11 08:48:40 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x25

Feb 15 17:02:12 alan-laptop kernel: microcode: microcode updated early to revision 0x28, date = 2017-11-17
Feb 15 17:02:12 alan-laptop kernel: Intel Spectre v2 broken microcode detected; disabling Speculation Control
Feb 15 17:02:12 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x28

Mar 21 12:21:28 alan-laptop kernel: microcode: microcode updated early to revision 0x2a, date = 2018-01-18
Mar 21 12:21:28 alan-laptop kernel: microcode: sig=0x306d4, pf=0x40, revision=0x2a

幽灵变种2:

Jan 15 09:10:59 alan-laptop kernel: Spectre V2 mitigation: Vulnerable: Minimal generic ASM retpoline

Jan 25 10:59:57 alan-laptop kernel: Spectre V2 mitigation: Mitigation: Full generic retpoline

Feb 15 17:02:12 alan-laptop kernel: Intel Spectre v2 broken microcode detected; disabling Speculation Control
Feb 15 17:02:12 alan-laptop kernel: Spectre V2 : Mitigation: Full generic retpoline

Mar 21 12:21:28 alan-laptop kernel: Spectre V2 : Mitigation: Full generic retpoline
Mar 21 12:21:28 alan-laptop kernel: Spectre V2 : Spectre v2 mitigation: Enabling Indirect Branch Prediction Barrier
Mar 21 12:21:28 alan-laptop kernel: Spectre V2 : Enabling Restricted Speculation for firmware calls

相关内容