Linux-Kernel

是否可以在歷史核心日誌中檢查 KPTI 和 ASID/PCID 的使用情況?

  • March 24, 2018

我保存了幾個月的核心日誌。我可以從他們那裡獲得任何有用的資訊,了解我的系統何時開始使用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 (mockbuild@bkernel01.phx2.fedoraproject.org) (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 (mockbuild@bkernel02.phx2.fedoraproject.org) (gcc version 7.3.1 20180130 (Red Hat 7.3.1-2) (GCC)) #1 SMP Tue Feb 13 17:02:01 UTC 2018

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 中實現pcid如果您的 cpu 支持它(和pge標誌),則應該啟用它lscpu,除非您使用 Xen(“Xen PV 需要一些工作”)或引導 32 位核心(“PCID 只能在 64 位模式下使用” )。

這有點令人困惑。隨後在上游 Linux 4.15 中引入了 KPTI。然而,上面的日誌消息來自 Fedora 核心 4.14.8-300,它必須包含 KPTI 的反向移植。考慮到 Meltdown 漏洞的災難性,這是個好消息。KPTI、X86_BUG_CPU_INSECURE 等的程式碼已反向移植到2018 年 1 月 2 日發布的上游穩定版 4.14.11


其他最明顯的消息似乎也沒有為我的調查提供一個很好的明確嫌疑人:(。

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

引用自:https://unix.stackexchange.com/questions/433311