Just an update. Today I spent some time trimming down our config to the bare essentials for my machine specifically, to minimize build times as I looked into this issue. With the latest release of 5.10.0-rc1, I opted to test against this, not bothering to immediately rebase our patches in the event it didn't resolve my NVMe namespaces to begin with.
Fortunately, I have some good news. I can confirm that this build of the kernel resolved our NVMe namespaces. After this, I passed it off to @DataDrake and @Girtablulu, which both have similar or identical (depending on the person) Samsung controllers for their NVMe drives as I do, and they both validated that their namespaces were also being resolved and they were able to boot into the desktop! @DataDrake 's logging documentation was also invaluable to validating that it was actually fixed and my initial issues were elsewhere (failing to reach the login screen made me suspicious initially), so massive thanks to him. I would've wasted countless hours otherwise ❤️
From this point, I went and rebased our kernel patches (such as for apparmor confinement, ELANtech touchpad support, etc.) then copied and updated our 5.6 kernel config for 5.10. I've listed some of the features / flags I've enabled below:
- ZSTD Compression. Changed from lz4 to zstd for default.
- ACPI_DPTF: Intel DPTF (Dynamic Platform and Thermal Framework) Support
- APPLE_MFI_FASTCHARGE: Fast charge control for iOS devices
- BRIDGE_MRP: Enables ethernet bridges to run MRP protocol to detect loops
- DM_MULTIPATH_HST: I/O Path Selector based on historical service time
- DPTF_PCH_FIVR: Dynamic Platform and Thermal Framework (DPTF) PCH FIVR Participant device support
- DRM_AMD_DC_DCN3_0: AMD sienna_cichlid DCN 3.0 family support
- INTEL_SOC_PMIC_BXTWC: Support for Intel Broxton Whiskey Cove PMIC
- MFD_INTEL_PMC_BXT: Intel PMC Driver for Broxton and Apollo Lake
- MMC_HSQ: Selects the MMC Host Software Queue support. This may increase performance, if the host controller and its driver supports it.
- MT7663U: MediaTek MT7663U (USB) support
- NVME_TARGET_PASSTHRU: NVMe Target Passthrough support
- PINCTRL_EMMITSBURG: Intel Emmitsburg pinctrl and GPIO driver
- PINCTRL_JASPERLAKE: Intel Jasper Lake PCH pinctrl and GPIO driver
- RMI4_F3A: RMI4 Function 3A (GPIO)
- RTW88_8723DE: Realtek 8723DE PCI wireless network adapter
- RTW88_8821CE: Realtek 8821CE PCI wireless network adapter
- SENSORS_AMD_ENERGY: AMD RAPL MSR based Energy driver
- SND_HDA_INTEL_HDMI_SILENT_STREAM: Intel hardware has a feature called 'silent stream', that keeps external HDMI receiver's analog circuitry powered on avoiding 2-3 sec silence during playback start. This mechanism relies on setting channel_id as 0xf, sending info packet and preventing codec D3 entry (increasing platform static power consumption when HDMI receiver is plugged-in). 2-3 sec silence at the playback start is expected whenever there is format change.
- SND_SOC_AMD_RENOIR: AMD Audio Coprocessor - Renoir support
- SND_SOC_AMD_RV_RT5682_MACH: AMD RV support for RT5682
- SND_SOC_INTEL_CATPT: Intel Haswell and Broadcom support with I2S codec present.
- SND_SOC_INTEL_SOF_PCM512x_MACH: Adds support for ASoC machine driver for SOF platforms with TI PCM512x I2S audio codec.
- SPI_AMD: Enables SPI controller driver for AMD SoC.
- SPI_MUX: Adds support for SPI multiplexers. Each SPI mux will be accessible as a SPI controller, the devices behind the mux will appear to be chip selects on this controller. It is still necessary to select one or more specific mux-controller drivers.
- SURFACE_3_POWER_OPREGION: Support for ACPI operation region of the Surface 3 battery platform driver
- USB_LGM_PHY: Support Intel DWC3 PHY USB phy
Alongside all of this, I grabbed a patch that enables the building of nvidia-glx-driver against 5.10. In all likelihood this can be applied to the other drivers (390, beta, and developer). I've validated that graphics work, as you can see from the screenshot below, and that snaps work as well (in other words, I didn't break the AppArmor confinement, which is always a plus).
Given all of this, it does indeed appear that 5.10 will be the kernel that current will see an update to. That being said, 5.10 isn't scheduled for release until late December, so @DataDrake and I need to determine whether or not we're going to defer Solus 4.2 until then or ship with an RC, given it doesn't appear 5.9 has gotten all the NVMe changes. Obviously we recognize that Solus 4.2 is much needed (we want to release it too!), especially given I'll be starting the GNOME 3.38 upgrade locally next week and Budgie 10.5.2 will be officially released when GNOME 3.38 lands in our stable repo. At that point there won't be any blockers besides the kernel for tagging.