今天早上发出的是 Linux 6.13-rc2 之前发布的 “x86/紧急” 更新。本周有适用于 Intel 和 AMD 处理器的 x86 修复程序。不过,最值得注意的是修复了一些有问题的 Intel Core Ultra“Lunar Lake”行为,该行为可能会因 MONITOR 实现有问题/损坏而导致响应/延迟问题。
对于几分钟前刚刚发出的 x86/紧急拉取请求,紧急的 Intel/AMD CPU 修复包括:
– 在主机上
设置了 AMD 的自动 IBRS 设置检查不会在客户机中错误地触发它 – 确保分配了 cacheinfo 结构内存以解决 Intel Meteor Lake 上的启动 NULL ptr 取消引用问题,该湖在其 CPUID(4) 叶
子中具有不同数量的子叶子 – 也要注意 kexec 路径上的 GDT 恢复, 正如内核
所期望的那样 – 确保在内核命令行
上禁用 IO-APIC 时未禁用 SMP
– 在 PTI中添加 PGD 标志_PAGE_NOPTISHADOW以指示机器不要将对内核模式页表的更改传播到用户部分 – 将 Intel Lunar Lake 标记为受 MONITOR 唤醒可能丢失并因此发生
用户可见延迟的问题的影响- 确保在 PRKU 写入 0 (WRPKRU) 后使用 AMD 上的 XRSTOR 正确恢复 PKRU,这会将 PKRU 标记为其初始化状态,从而丢失实际缓冲区
在这些变化中,从我的角度来看,最明显的是 Intel Lunar Lake 修复,其中 MONITOR 唤醒可能会丢失,并因此发生用户可见的延迟。一个月前,我最初在 Linux Fix Pending For Annoying Intel Lunar Lake Laptop Problems 中写了关于这个问题和当时发送的补丁。这个 x86/urgent pull 有相同的补丁,扩展了 Goldmont CPU 检查,将设置“X86_BUG_MONITOR”扩展到现在还包括 Lunar Lake (INTEL_LUNARLAKE_M)。
“x86/cpu:将 Lunar Lake 添加到 MONITOR 实现
损坏的 CPU 列表中在某些情况下,Lunar Lake 处理器上的 MONITOR 唤醒可能会丢失,从而导致明显的用户可见延迟。
将 Lunar Lake 添加到 X86_BUG_MONITOR 中,以便 wake_up_idle_cpu() 始终发送 IPI,从而避免这种潜在的延迟。
目前尚不清楚为什么需要一个月的时间才修复该补丁,因为它对新的 Lunar Lake 笔记本电脑造成了真正的麻烦问题,但无论如何,它是今天发出的,并被标记为向后移植到当前的 Linux 内核稳定系列。
请参阅 x86/urgent 拉取请求,了解未来几个小时内正在进入主线内核的补丁的完整列表。
转自 Linux 6.13-rc2 To Workaround Buggy Intel Lunar Lake Leading To Responsiveness Issues – Phoronix