Intel Continues Prepping The Linux Kernel For X86S
Nearly one year ago Intel published the X86S specification (formerly stylized as "X86-S") for simplifying the Intel architecture by removing support for 16-bit and 32-bit operating systems. X86S is a big step forward with dropping legacy mode, 5-level paging improvements, and other modernization improvements for x86_64. With the Linux 6.9 kernel more x86S bits are in place for this ongoing effort.
Sent out overnight were the x86 boot improvements for the Linux 6.9 merge window. This merge carries continued work on improving the x86 early start-up code to allow it to be position independent. Ultimately the goal there is allow the entire core kernel to be built with position independent code (-fPIC). Plus there are early console improvements, some micro-optimizations and cleanups, and then more X86S bits.
Of the X86S work in Linux 6.9 is for accommodating the removal of compatibility mode in ring 0 and thus the "trampoline_start64" code needed to be reworked. Intel Linux engineer Kirill Shutemov explained:
And, yes, what was announced as X86-S is now known as X86S. Intel Linux developers have recently been referring to it as X86S and indeed the original Intel specification was quietly updated in November to v1.1 and with a revision history note that the name has indeed changed from X86-S to X86S.
In addition to the ongoing X86S work, Linux 6.9 is also notable for merging Intel FRED as another overhaul coming with future processors... Potentially at the same time as X86S.
All the x86/boot changes for Linux 6.9 are laid out in this pull request.
Sent out overnight were the x86 boot improvements for the Linux 6.9 merge window. This merge carries continued work on improving the x86 early start-up code to allow it to be position independent. Ultimately the goal there is allow the entire core kernel to be built with position independent code (-fPIC). Plus there are early console improvements, some micro-optimizations and cleanups, and then more X86S bits.
Of the X86S work in Linux 6.9 is for accommodating the removal of compatibility mode in ring 0 and thus the "trampoline_start64" code needed to be reworked. Intel Linux engineer Kirill Shutemov explained:
"The trampoline_start64() function is reworked to only enter compatibility mode if it is necessary to change the paging mode. If the CPU is already in the desired paging mode, it will proceed in long mode.
This change will allow a secondary CPU to boot on an X86S machine as long as the CPU is already in the correct paging mode.
In the future, there will be a mechanism to switch between paging modes without disabling paging."
And, yes, what was announced as X86-S is now known as X86S. Intel Linux developers have recently been referring to it as X86S and indeed the original Intel specification was quietly updated in November to v1.1 and with a revision history note that the name has indeed changed from X86-S to X86S.
In addition to the ongoing X86S work, Linux 6.9 is also notable for merging Intel FRED as another overhaul coming with future processors... Potentially at the same time as X86S.
All the x86/boot changes for Linux 6.9 are laid out in this pull request.
66 Comments