User:Pietinger/Experimental/Manual Configuring Kernel Version 6.10
Even though this page is in the user namespace, corrections and additions are much appreciated! This is simply wiki policy, this page can be moved to the main wiki as soon as it achieves critical mass more.
Manual Configuring Kernel Version 6.10
Normally I do not recommend switching to a new major version of the kernel immediately, but to wait for two, three or four minor versions first. I did this this time too, because no new features are relevant for me. But if you have a high-end server with a very high load, then X86_POSTED_MSI (*) could be interesting for you. That's why I looked at the configuration of 6.10.
Notes for 6.10
A good overview of everything new in 6.10 can be found here:
- https://lwn.net/Articles/973687/
- https://lwn.net/Articles/974869/
- https://kernelnewbies.org/Linux_6.10
Many options from Device Drivers -> Graphics support have been moved one level lower to :
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
One of the newly added options is:
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
[ ] Display a user-friendly message when a kernel panic occurs (NEW)
You are welcome to try to activate them ... but it will disappear again immediately after you have activated this option (this is a must) - because both cannot be activated at the same time:
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
[*] Enable legacy fbdev support for your modesetting driver
Thomas Gleixner explained of this posted interrupts on bare metal hardware feature:
"Posted interrupts is a virtualization feature which allows to inject interrupts directly into a guest without host interaction. The VT-d interrupt remapping hardware sets the bit which corresponds to the interrupt vector in a vector bitmap which is either used to inject the interrupt directly into the guest via a virtualized APIC or in case that the guest is scheduled out provides a host side notification interrupt which informs the host that an interrupt has been marked pending in the bitmap.
This can be utilized on bare metal for scenarios where multiple devices, e.g. NVME storage, raise interrupts with a high frequency. In the default mode these interrupts are handles independently and therefore require a full roundtrip of interrupt entry/exit.
Utilizing posted interrupts this roundtrip overhead can be avoided by coalescing these interrupt entries to a single entry for the posted interrupt notification. The notification interrupt then demultiplexes the pending bits in a memory based bitmap and invokes the corresponding device specific handlers.
Depending on the usage scenario and device utilization throughput improvements between 10% and 130% have been measured.
As this is only relevant for high end servers with multiple device queues per CPU attached and counterproductive for situations where interrupts are arriving at distinct times, the functionality is opt-in via a kernel command line parameter."
Upgrade from 6.6
Please read:
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.7#Upgrade_from_6.6
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.8#Upgrade_from_6.7
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.9#Upgrade_from_6.8
and then the following chapter.
Upgrade from 6.9
I took over all default values with <return> when I did the make oldconfig. Here is a possible list (I have left out - as always - all new modules for some new hardware; if you have one of them, enable it):
Enable BPF Just In Time compiler (BPF_JIT) [N/y/?] (NEW) 1. Enable smaller-sized data structures for core (BASE_SMALL) [N/y/?] (NEW) 2. Enable MSI and MSI-x delivery by posted interrupts (X86_POSTED_MSI) [N/y/?] (NEW) 3. Kprobes (KPROBES) [N/y/?] (NEW) 4. Use HMAC and encrypted transactions on the TPM bus (TCG_TPM2_HMAC) [Y/n/?] (NEW) 5. Enable DisplayPort CEC-Tunneling-over-AUX HDMI support (DRM_DISPLAY_DP_AUX_CEC) [N/y/?] (NEW) DRM DP AUX Interface (DRM_DISPLAY_DP_AUX_CHARDEV) [N/y/?] (NEW) ACPI Quickstart button driver (ACPI_QUICKSTART) [N/y/?] (NEW) 6. Enable memory allocation profiling (MEM_ALLOC_PROFILING) [N/y/?] (NEW)
Remarks
1. We only get this question because we have already activated CONFIG_EXPERT
2. We only get this question because we have already activated IRQ_REMAP
3. There is a discrepancy between the default here and the default setting when you install with the default .config from make defconfig. I have adopted “N”o here. (see next chapter)
4. I only got this question because I have already activated TCG_TPM (because of IMA)
5. Enable it only if you need it.
6. I have adopted the default. You can activate this if you are looking for a memory leak.
New Installation
If you want to activate X86_POSTED_MSI you must first activate IRQ_REMAP; in this order:
Device Drivers --->
[*] IOMMU Hardware Support --->
[*] Support for Interrupt Remapping
Processor type and features --->
[*] Enable MSI and MSI-x delivery by posted interrupts
Check whether you really want this (I used the default when transferring using “make oldconfig”; see previous chapter) - As always, the <Help> is really very informative:
General architecture-dependent options --->
[?] Kprobes
Be aware that many settings for the graphics can now be found here (we will have to update some wiki pages in the future):
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
...
# I dont run in a VM
< > Virtio GPU driver
Please read also:
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.7#New_Installation
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.8#New_Installation
- User:Pietinger/Experimental/Manual_Configuring_Kernel_Version_6.9#New_Installation
and then configure according to the instructions of User:Pietinger/Tutorials/Manual_Configuring_Kernel_Version_6.6.
In the meantime, I have written a completely new article. Since 6.10 and 6.11 is currently up to date, you can also use this article: User:Pietinger/Experimental/Manual_Configuring_Current_Kernel