Asahi Linux 7.3 report: M3 support GA, partial Thunderbolt

The Asahi Linux project, which ports Linux to Apple Silicon Macs, has published its progress report for Linux 7.3. It covers upstreaming, M3 and M4/M5 hardware, the M3 GPU, Thunderbolt and gaming.

Upstreaming. Two major drivers reached the kernel mailing list this cycle: macaudio and AVD. Macaudio was hard to prepare because Apple Silicon audio is unusual and needed a number of core ALSA changes, plus significant modifications to the speaker and headset amplifier drivers that already existed upstream. The driver and its Devicetree changes come to about 3100 lines, a hefty chunk of the total Asahi patchset. AVD is about 13000 lines of code including related Devicetree changes, yet it spent barely 3 months in the downstream tree before being sent to the list. The authors call that their shortest turnaround yet for a major SoC component and say it bodes well for a move to upstream-first development at some point in the future. Initial Devicetrees for M4 Pro and Max devices and for M5 also reached the list, credited to Yureka. They are barebones and only enough to boot the SoC to a TTY. Changes to the TI USB-PD and SPMI drivers needed for new devices, and the initial Thunderbolt support, were developed upstream-first.

M3 goes GA. M3 support was announced last time behind the EXPERT flag in the Asahi installer. After almost no issues from early adopters, it is now generally available without the flag. The team also enabled DCP on M3, which improves performance and battery life, allows sleep on M3 devices and makes the area around the notch usable on MacBooks. The authors say m1n1 and kernel updates are coming in the coming days.

M4 and M5 virtualisation. Last time the team showed m1n1 virtualising SPTM-enabled macOS, which enables reverse engineering on M4 machines. M5 is harder: the macOS versions that support it all require Exclaves, small applications that run in an isolated environment controlled by the Secure Kernel. On M5 and above macOS uses them for sensitive tasks such as drawing the camera-in-use indicator. XNU talks to the Secure Kernel and Exclaves through SPTM using another IPC protocol called Tightbeam, and XNU panics if it cannot find the running Exclaves. Some Exclaves can be bypassed with command-line settings, but the authors predict that will not always work. Sven therefore put the Secure Kernel and Exclave userspace in another VM next to SPTM and macOS. It worked: m1n1 now spawns three VMs in EL1, and the team can virtualise and reverse engineer macOS on both M4 and M5 series machines.

M3 GPU. M3 is now mostly at feature parity with M1 and M2 except for the GPU, which the authors say is a significant departure from the M1 and M2 designs. At XDC this year, Alyssa Millburn, Anna Maniscalco and TellowKrinkle, a newer group of contributors, gave a talk on reverse engineering it. m1n1 can now initialise the GPU and the team has drawn a triangle. Apple's design choices will require significant engineering effort to integrate into upstream Mesa.

Thunderbolt. In January 2024 the project promised Thunderbolt support within the year and then said almost nothing for two years. The report explains why. Apple designed its own controller early: a Cortex-M3 running RTKit coupled with a bespoke Thunderbolt/USB4 router, one for each Thunderbolt-enabled USB-C port on every Apple Silicon Mac. Linux's Thunderbolt subsystem is built around Intel's controllers, which supplied nearly every other implementation, and Apple's controller breaks many of its assumptions about topology, capabilities and register access. The controller's reset line is also controlled by bits in the middle of PMGR's MMIO range, and it took time to realise those odd writes were not noise. Sven, who has worked on this for nearly 5 years, got it working. The patchset went upstream first and is also in the downstream kernel, which now ships to users. The catch: only USB3, XDomain and Thunderbolt Networking work. You can plug in USB devices or link two Thunderbolt computers and ping between them. PCIe and DisplayPort tunnelling, which most Thunderbolt docks need, are not supported yet.

Games. Playing x86 retail PC games relies on FEX for binary translation, WINE (with mature ARM64EC support, so FEX only translates the game binaries) and muvm, a thin VM using DRM Native Context that presents a 4 KiB page size, which games tend to assume. The hoped-for near-native GPU performance inside muvm did not materialise: the penalty is about 20% depending on workload, and muvm cannot use Wayland, has slow I/O and struggles with some input devices. macOS handles this easily because XNU lets userspace processes map at any page granularity; Linux requires all pages to be mapped at the kernel's granularity. Last year's demo of Windows games outside muvm relied on hacks inside FEX that have since been removed for maintainability and translation correctness.

A possible way out comes from Android, which is moving from 4 KiB to 16 KiB pages. Google engineers Kalesh Singh and Frederick Mayle gave a Linux Plumbers Conference talk on P3S, Per Process Page Size, an addition to the Android kernel. On ARM64 it tracks each process's pagetable granularity and writes the right bits to the Translation Control Registers when switching to a process with a different size. It is a single register write and a no-op for native-size processes, so the performance penalty is effectively zero. The patchset mostly rebases cleanly on mainline Linux. The Asahi team rebased it onto their tree, fixed some bugs and showed games running: Star Wars Battlefront (a simple Direct3D 9.0 game from 22 years ago), Wolfenstein: The New Order (a well-optimised 64-bit OpenGL title), a comically buggy 32-bit game that also exercises DXVK, and Bethesda games. The authors note performance is still patchy.

Key facts

  • Two major drivers reached the upstream Linux list this cycle: macaudio (about 3100 lines with Devicetree changes) and AVD (around 13000 lines), the latter after barely 3 months downstream.
  • M3 support is now generally available in the Asahi installer without the EXPERT flag, with DCP enabled for better performance and battery life, sleep and a usable notch area.
  • Thunderbolt now ships to users, but only USB3, XDomain and Thunderbolt Networking; PCIe and DisplayPort tunnelling, needed for most docks, are not supported yet.
  • m1n1 can now virtualise macOS on both M4 and M5 by running the Secure Kernel and Exclaves in a third VM; the M3 GPU reverse engineering has drawn a triangle.
  • Google's P3S per-process page size patchset, rebased onto the Asahi tree, ran 4 KiB-page x86 games without muvm, which costs about 20% performance.

Why it matters

Asahi has long carried a large downstream patchset, and this report shows the balance shifting. AVD went from downstream tree to the mailing list in barely 3 months, and the authors see that as a sign of a future upstream-first approach. Thunderbolt, TI USB-PD and SPMI changes already were developed upstream-first. The report also removes two long-standing gaps: M3 machines are out of the experimental installer path, and Thunderbolt, promised in January 2024, finally ships in limited form. The P3S experiment points to a fix for the 4 KiB page assumption that x86 games bake in, without a VM.

Who it affects

Owners of M3 Macs can now install Asahi without the EXPERT flag. Users of Apple Silicon Macs with Thunderbolt-enabled USB-C ports get USB3 and Thunderbolt-to-Thunderbolt networking. Kernel maintainers and reviewers on the ALSA, Devicetree and Thunderbolt side receive the macaudio, AVD and Thunderbolt patchsets. People who want to play x86 Windows games on Asahi are the audience for the P3S work, and the M3 GPU contributors and Mesa developers face the next big integration task.

How to use it

M3 owners can use the Asahi installer without the EXPERT flag; the authors say to watch for m1n1 and kernel updates in the coming days, which bring DCP, sleep and notch support. Thunderbolt is already in the downstream kernel, so you can plug in USB devices or connect two Thunderbolt computers and make them ping each other. Docks that need PCIe or DisplayPort tunnelling will not work yet. The P3S gaming setup is a developer experiment on a rebased Asahi tree, and the report does not describe it as a shipped feature.

How solid is it

This is a first-party report from the Asahi Linux authors, so the claims are the project's own. Several items are concrete and checkable: macaudio and AVD are on the upstream list, M3 GA follows the EXPERT-flag period, and Thunderbolt is described as shipping in the downstream kernel. The M3 GPU result is early: initialise the GPU and draw a triangle. The P3S results are shown as demos, and the authors themselves say performance is still patchy. The report does not give a timeline for macaudio or AVD being merged upstream, or for PCIe and DisplayPort tunnelling support. It also does not say that P3S has been accepted into mainline Linux or into Asahi's shipped kernel; it only says the patchset was rebased onto the Asahi tree.

Risks and caveats

The M4 Pro/Max and M5 Devicetrees are barebones and only boot to a TTY. On M5, the authors predict that bypassing Exclaves with command-line settings will not always work, which is why the extra VM was needed. Thunderbolt is limited to USB3, XDomain and networking. The M3 GPU work needs significant engineering effort before it fits into upstream Mesa. The existing muvm route costs about 20% depending on workload and lacks Wayland, with slow I/O and trouble with some input devices. The P3S gaming demos include simple or older titles by the authors' own description, and the patchset is Google's, built primarily for Android.

“You can plug in USB devices or connect two Thunderbolt computers together and make them ping each other, but that’s about it.”

— Asahi Linux progress report: Linux 7.3