Merged today for the recently-opened Linux 6.15 merge window were all of the “x86/core” changes that are particularly heavy on new feature work for both Intel and AMD x86/x86_64 processors. This is easily quite one of the most significant Intel/AMD CPU set of updates in a given kernel cycle in quite some time.
As covered already in a separate article, the x86/core pull request lands the AMD INVLPGB usage by the Linux kernel for that feature found on Zen 3 processors and newer. AMD INVLPGB usage for broadcast TLB invalidation is yielding some nice performance benefits as shown in the patches themselves and some of our own benchmarks. I will have more AMD INVLPGB benchmarks soon now seeing these patches cross the finish line.
On the AMD side there is also some AMD SMN improvements and other improvements to the AMD Node driver introduced the prior kernel cycle.
Over on the Intel CPU side, there is continued work around wrapping up their work on restructuring the vendor / family / model handling in preparation for upcoming CPUs no longer part of “Family 6” but moving to Family 18 and Family 19.
Intel Linux engineers also have Linear Address Masking (LAM) updates as part of this pull. In addition, they have landed their work on FineIBT-BHI mitigations for tougher kernel defenses.
Thanks to Intel is also work on better handling of Intel P or E core only mitigations. With prior kernels if a CPU was affected by a given vulnerability only affecting its P or E cores but not both, they would be applied to all cores regardless. Moving forward the Linux kernel is now able to better handle security mitigations just affecting a subset of the cores.
The x86/core pull request also has a new “setcpuid=” boot parameter for overriding the exposed CPU features. This is part of the effort for forcing CPU bugs or mitigations even if the actual CPU is not vulnerable. Similarly is also a “clearcpuid=” boot parameter option too.
Back in Linux 6.13 was an interesting change for Linux kernel modules for large read-only execute (ROX) pages. That change was reverted before Linux 6.13 final due to issues while now EXECMEM_ROX has been reworked for Linux 6.15. Hopefully all is well now.
Kernel Address Space Layout Randomization (KASLR) also sees changes as part of this x86/core pull. The KASLR entropy is being reduced on most x86 systems now in order to support PCI BAR space beyond the 10 TiB region. That reduction is being done when the kernel is built with “CONFIG_PCI_P2PDMA” enabled. While it’s a reduction in entropy, it’s better than the situation otherwise of having to disable KASLR completely with such P2PDMA kernel builds.
The x86/core pull for Linux 6.15 also raises the minimum GCC compiler version to 8.1 for building the kernel or LLVM/Clang 15.0.
For those running upstream and modern Linux kernel versions on old hardware, this pull also lands the rework of x86 32-bit kernels on x86_64 CPUs and that includes the patches for removing CONFIG_HIGHMEM64G support. What this means is dropping support for more than 4GB of RAM on x86 32-bit kernels. The 32-bit “bigsmp” support is removed as is CONFIG_HIGHMEM64G and other old options catering to x86 32-bit Linux kernel builds.
Also on the Linux x86 side with the v6.15 kernel is improving performance by using the asm_inline() function for atomic locking instructions. Plus various other fixes and improvements.
See this pull request for the lengthy list of x86/core changes that have been merged for the Linux 6.15 kernel.
This article is just about the x86/core changes but there are also other significant Intel and AMD processor changes coming via other pull requests for Linux 6.15. Some recent examples include the x86 crypto performance optimizations and CRC speed-ups, among others. The Linux 6.15 merge window runs through the end of next week, so stay tuned to Phoronix about all of the other exciting changes.