New Linux kernel fixes and additions to the Device Tree for PCIe M.2 connector support

A Key Evolution of the Linux Kernel for Managing PCIe M.2 Connectors via Device Tree

The Linux kernel continues its adaptation to current hardware requirements in 2025, with patches specifically targeting support for PCIe M.2 connectors in Device Tree (DT) environments. Traditionally, systems using ACPI benefit from seamless management of PCIe M.2 connected devices, such as NVMe SSDs. This ease stems from the fact that the firmware and BIOS handle power management and activation of these connectors without direct intervention from the Linux kernel.

However, on platforms where Device Tree remains the primary tool for describing hardware configuration, particularly some ARM architectures, this management now requires enhanced support. Device Tree, by its very nature, offers a powerful declarative model for precisely describing hardware, but it also places a burden on the kernel to manage all the resource-related details, including powering the PCIe M.2 connectors.

  • A Qualcomm engineer, Manivannan Sadhasivam, recently submitted a series of patches aimed at unifying and standardizing the representation of PCIe M.2 connectors in Device Tree files. These patches represent a significant leap forward by replacing older, approximate methods where these connectors were simulated via PMU nodes or fixed regulators in the DT. This new approach ensures better coordination between the hardware and the Linux kernel, which is crucial in embedded or portable environments such as modern notebooks and tablets.
  • Explicit support for PCIe M.2 connectors in the Device Tree

Introduction of a specific binding for the Key M mechanical connector

Power sequence management and activation via a dedicated driver (pwrseq)

Current limitation to the PCIe interface, without support for optional SATA or other interfaces.

This fundamental work addresses a well-known problem in hardware management on Linux: the coexistence of two major standards, ACPI and Device Tree, each involving different mechanisms. For distributions based on ARM architectures, often very similar to embedded systems, this advancement paves the way for better support of SSDs connected via PCIe M.2, thus facilitating the integration of recent hardware without having to resort to workarounds or machine-specific solutions.

  • Discover the latest Linux kernel patches to optimize support for PCIe M.2 connectors, improving the compatibility and performance of your system.
  • Technical impact of the patches on PCIe M.2 connector management under Linux The addition of this support in the Linux kernel implies several architectural changes within the code, particularly in the Device Tree layers and in the driver managing the power-on sequence of PCIe M.2 connectors. Here are the key points of these technical changes:
  • Definition of a new Device Tree binding: This describes the M.2 Mechanical Key M connectors, allowing for precise specification in the hardware description of how these connectors should be powered and controlled. Dedicated pwrseq driver: An upstream driver is responsible for the connector’s power sequence, ensuring reliable and controlled power-on and power-off management in accordance with PCIe standard requirements.
  • PCI adaptations in the kernel: The Linux kernel incorporates modifications to better manage the integration of these connectors into the PCI device tree, thus guaranteeing automatic detection and optimal operation. Hardware dependency management

In parallel, these patches introduce careful management of dependencies with power regulators and other critical system resources.

Before these patches, developers often had to work around the lack of direct support in Device Tree by creating fake nodes, which could complicate maintenance and lead to unexpected behavior. With this new series of patches, maintenance is greatly simplified, both for kernel developers and original equipment manufacturers (OEMs).

To illustrate this change, a concrete example is observed on Qualcomm Snapdragon X1 Elite platforms, where real-world tests with a Lenovo ThinkPad T14s equipped with an NVMe SSD connected via M.2 show significant improvements in stability and power management. This use case clearly reflects the value of this development for ARM platforms, which represent a significant segment of current Linux users.

  • Another indirect benefit of this support is paving the way for additional peripherals connected via M.2, such as Wi-Fi or Bluetooth modules, a feature promised for future releases. https://www.youtube.com/watch?v=95dZrcsu7sM Comparison between ACPI and Device Tree in PCIe M.2 Hardware Management
  • The coexistence of ACPI and Device Tree standards in the Linux ecosystem remains a major source of disparities in hardware management. The seamless support of PCIe M.2 connectors on ACPI-based systems contrasts with the constraints encountered in Device Tree-based devices. This section dissects these differences to better understand the issues at stake. ACPI – Firmware-centric and standardized:
  • ACPI allows firmware (BIOS, UEFI) to handle power management, offloading a significant portion of hardware management from the Linux kernel, particularly for PCIe M.2 connectors. This improves the user experience and reduces the need for specific kernel patches. Device Tree – increased flexibility and responsibility:
  • The Device Tree, frequently used in ARM architectures and embedded systems, requires the kernel to accurately interpret the hardware description to manage, among other things, power and the activation of PCIe M.2 connectors. Differences in maintenance and scalability:

ACPI solutions rely on closed specifications and depend on the firmware, while the Device Tree promotes an open and extensible approach, even if it requires more effort from kernel developers.

Impact on hardware compatibility:

Recent patches strengthen this latter solution, improving compatibility for newer devices in ARM environments, which were previously hampered by imperfect support. With the advancements made by Qualcomm and other contributors regarding PCIe M.2 management under Device Tree, the Linux ecosystem is tending to reduce the functional gap between the two methods. This harmonization is essential to guarantee a high level of hardware support in Linux environments, regardless of the hardware used.

Furthermore, this trend is part of a broader approach to unifying hardware description methods, which is essential for the long-term viability of Linux systems on heterogeneous platforms.

  • Discover the latest Linux kernel patches to optimize the compatibility and performance of PCIe M.2 connectors on your system.Impact of Linux kernel patches on the ARM ecosystem and embedded implementations
  • ARM platforms, dominant in the embedded and mobile sectors, greatly benefit from Linux kernel updates designed to improve the management of PCIe M.2 connectors. Indeed, many motherboards and SoC systems now include M.2 connectors for storage or communication modules, requiring reliable and efficient management.
  • These updates notably enable:Better integration of NVMe SSDs in ARM environments,

which addresses the growing demand for fast and reliable storage in embedded solutions.

  • Optimized hardware power management,
  • essential for mobile and portable systems where battery life is paramount.

A more robust software foundation for developing specific Linux tools and drivers,

  • making developers’ work easier.
  • Furthermore, correcting the power sequence and coordinating it with the Device Tree improves the long-term reliability of PCIe M.2 configurations. This reduces the risk of failures related to poor power management, a source of complex and difficult-to-trace bugs. In an industrial context, these fixes promote greater adoption of Linux on various ARM platforms, increasing companies’ confidence in this system for their embedded products. This confidence is based in particular on: Easier maintenance thanks to clear documentation of the updated Device Tree binding
  • Increased compatibility with improved native support in the kernel A community of developers mobilized to quickly correct any malfunctions
  • https://www.youtube.com/watch?v=iPWlZLKcOE0 Future prospects and expected extensions around PCIe M.2 connectors in Linux

The initial support for the PCIe M.2 Mechanical Key M connector is an important step, but it’s only the starting point for more comprehensive and standardized support under Linux. Developers and the open-source community are already working on several areas for improvement:

Extending support to optional interfaces,

such as SATA connections via M.2, which are currently not supported by the driver.