Apple M1 NVMe Linux Driver Out For Review
Sent out last week amid the busy Linux 5.18 merge window days were the patch series wiring up an Apple NVMe driver for use with the M1, M1 Pro, and M1 Max SoCs.
Sven Peter sent out the set of patches for this Apple NVMe driver that is now under review and on its way towards mainlining in a future kernel series. The patch series contains the necessary bits for supporting NVMe storage on Apple M1 hardware with the Linux kernel.
Due to the NVMe controller on Apple M1 Macs not being attached to the PCIe bus and various quirks needed -- including fundamental changes to command submission handling -- it ended up meaning to write a new standalone Linux driver. Apple's NVMe controller also is running a proprietary RTOS (RTKit) that the Linux kernel needs to interface with for bringing up the NVMe support.
As for the current state of this Apple NVMe Linux driver, "The driver itself has been successfully used by multiple people as their daily driver for weeks at this point and no major issues have been reported. A smaller issue is that flushes on the devices take *much* longer than expected. Jens Axboe has a workaround where the flushes are delayed but that one isn't ready for submission yet."
For more details, see this patch series for this initial Apple NVMe open-source driver for Linux systems that is already carried by the likes of Asahi Linux.
In case you missed it, check out the recent Asahi Linux benchmarks on the Apple M1.