While there have been various elements of the Apple M1 and M2 SoC support in the mainline Linux kernel along with support for various Macs, different features have been missing from the upstream kernel such as the Apple GPU kernel graphics driver as one big example. On a more fundamental level, the upcoming Linux 6.17 kernel is going to cross off another low-level expectation for Apple Silicon Macs on the mainline kernel: the ability to reboot the system.
Queued up yesterday into the Multi-Function Device (MFD) subsystem Git tree are patches for introducing the Apple System Management Controller (SMC) driver.
The Apple SMC driver patch explains the system management controller functionality as:
“The System Management Controller (SMC) on Apple Silicon machines is a piece of hardware that exposes various functionalities such as temperature sensors, voltage/power meters, shutdown/reboot handling, GPIOs and more.
Communication happens via a shared mailbox using the RTKit protocol which is also used for other co-processors. The SMC protocol then allows reading and writing many different keys which implement the various features. The MFD core device handles this protocol and exposes it to the sub-devices.
Some of the sub-devices are potentially also useful on pre-M1 Apple machines and support for SMCs on these machines can be added at a later time.”
Another patch is introducing the Apple Mac SMC Reboot Controller support:
“On Apple Silicon machines a clean shutdown or reboot requires talking to SMC and writing to NVMEM cells. Add a binding for this MFD sub-device.”
Asahi Linux developer and herder of the Apple Silicon patches to the upstream kernel confirmed on Mastodon that indeed “Now it’s finally possible to reboot M1/M2 with an upstream kernel 😉”
The Apple SMC driver patches were previously carried by the downstream Asahi Linux distribution with their kernel to allow for Mac reboot support while finally this code has worked its way to the mainline kernel.
Besides the Apple SMC driver activity, there are also a few more Apple Silicon bits for Linux 6.17 with M1/M2 enablement continuing but not yet the newer Apple M3/M4 SoCs for the mainline kernel.