Linux 6.13-rc2 To Workaround Buggy Intel Lunar Lake Leading To Responsiveness Issues

Written by Michael Larabel in Linux Kernel on 8 December 2024 at 07:00 AM EST. 8 Comments
LINUX KERNEL
Sent out this morning were the "x86/urgent" updates ahead of Linux 6.13-rc2 due out later today. There are x86 fixes for both Intel and AMD processors this week. Most notable though is fixing some buggy Intel Core Ultra "Lunar Lake" behavior that could lead to responsiveness/delay issues due to the MONITOR implementation being buggy/broken.

With the x86/urgent pull request that was just sent out a few minutes ago, the urgent Intel/AMD CPU fixes include:
- Have the Automatic IBRS setting check on AMD does not falsely fire in the guest when it has been set already on the host

- Make sure cacheinfo structures memory is allocated to address a boot NULL ptr dereference on Intel Meteor Lake which has different numbers of subleafs in its CPUID(4) leaf

- Take care of the GDT restoring on the kexec path too, as expected by the kernel

- Make sure SMP is not disabled when IO-APIC is disabled on the kernel cmdline

- Add a PGD flag _PAGE_NOPTISHADOW to instruct machinery not to propagate changes to the kernelmode page tables, to the user portion, in PTI

- Mark Intel Lunar Lake as affected by an issue where MONITOR wakeups can get lost and thus user-visible delays happen

- Make sure PKRU is properly restored with XRSTOR on AMD after a PRKU write of 0 (WRPKRU) which will mark PKRU in its init state and thus lose the actual buffer

Of those changes, most noticeable from my side is the Intel Lunar Lake fix where MONITOR wake-ups can get lost and user-visible delays happen as a result. One month ago I originally wrote about the problem and the patch that was sent out at the time in Linux Fix Pending For Annoying Intel Lunar Lake Laptop Problems. This x86/urgent pull has that same patch of extending the Goldmont CPU check for setting "X86_BUG_MONITOR" to now also include Lunar Lake (INTEL_LUNARLAKE_M).
"x86/cpu: Add Lunar Lake to list of CPUs with a broken MONITOR implementation

Under some conditions, MONITOR wakeups on Lunar Lake processors can be lost, resulting in significant user-visible delays.

Add Lunar Lake to X86_BUG_MONITOR so that wake_up_idle_cpu() always sends an IPI, avoiding this potential delay."

It's not clear why it took one month for the patch to be fixed up given that it's causing real nuisance issues for new Lunar Lake laptops, but in any event it was sent out today and is marked for back-porting to the current Linux kernel stable series.

Lunar Lake ASUS laptop


See the x86/urgent pull request for the full list of patches now on their way to the mainline kernel in the coming hours.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week