Michael Reeves

Michael Reeves

@integralpilot.bsky.social

Teenage security researcher & systems developer. Discovered CVE-2025-43539, author of rustc_codegen_jvm, working on Apple M3 Linux drivers. https://github.com/IntegralPilot 🇦🇺

452 followers4 following30 posts

Pinned

On Apple M3, a Linux KDE plasma desktop under Fedora Asahi Remix is now WORKING! Super excited to share this update and happy to answer any questions! Co-credits to noopwafel and Shiz. :)

Pink + Purple == Apple? 🌸🍎 Got Google's Fuchsia OS booting on an Apple M3 MacBook, through to userspace! Apple's interrupt controller (AIC), timer, and m1n1 virtual UART are working on native hardware. Here's how it works:

View full thread

5/6 Finally, a driver had to be made for Apple's S5L UART. As fully talking to the USB controllers would be too much for this side project, I left m1n1 as hypervisor in EL2, and within EL1 Fuchsia talks to a virtualised Apple S5L UART which m1n1 sets up.

6/6 Here's the code: github.com/IntegralPilo... The core changes described here are in the "apple-t8122" branch, while some hacks I needed to get the framebuffer to work for the nice demo are in the "rest" branch. This was a really fun side project to work on! Happy to answer any questions.

github.comGitHub - IntegralPilot/fuchsia: Experimental Apple T8122 bringup for FuchsiaExperimental Apple T8122 bringup for Fuchsia. Contribute to IntegralPilot/fuchsia development by creating an account on GitHub.

Pink + Purple == Apple? 🌸🍎 Got Google's Fuchsia OS booting on an Apple M3 MacBook, through to userspace! Apple's interrupt controller (AIC), timer, and m1n1 virtual UART are working on native hardware. Here's how it works:

View full thread

3/6 One of the unique things about Apple's hardware is that they don't use the normal ARM interrupt controller (GIC). They have a custom interrupt controller, called the AIC. It needed a fully custom driver, and an increase to the Zircon MAX_INTERRUPTS, because M3 has 1,600!

4/6 Another quirk with Apple's interrupts is that they route architectural timers and IPIs as FIQs instead of IRQs! I had to modify Zircon’s exception tables and interrupt masking to touch the F bit in DAIF and hook platform_fiq to use Apple's custom sysreg (S3_5_c15_c1_1)

Pink + Purple == Apple? 🌸🍎 Got Google's Fuchsia OS booting on an Apple M3 MacBook, through to userspace! Apple's interrupt controller (AIC), timer, and m1n1 virtual UART are working on native hardware. Here's how it works:

2/6 For Asahi, we have a custom bootloader and hypervisor called m1n1. It can boot things using the ARM64 Linux Boot Protocol. Luckily, Fuchsia has a "boot shim" that can enable it to be started this way. But then, we have to teach Zircon about Apple's custom hardware.

On Apple M3, a Linux KDE plasma desktop under Fedora Asahi Remix is now WORKING! Super excited to share this update and happy to answer any questions! Co-credits to noopwafel and Shiz. :)

Update: It’s officially out! 🚀 You can now install Linux on Apple M3 yourself! So excited we've finally been able to release it. More details in my post here: bsky.app/profile/inte...

Michael Reeves@integralpilot.bsky.social

You can now install Linux on Apple M3 MacBooks! 🐧 We've got USB, Audio, WiFi, and more working, but not the GPU yet. Instructions to install in the reply. It was so fun to help make this happen, and credits to the rest of the team too! Let me know how you find it!

You can now install Linux on Apple M3 MacBooks! 🐧 We've got USB, Audio, WiFi, and more working, but not the GPU yet. Instructions to install in the reply. It was so fun to help make this happen, and credits to the rest of the team too! Let me know how you find it!

Just got my first performance patch merged into OpenJDK. ☕ It fuses separate multiply instructions on x86_64, yielding a ~1.85x speedup for 128-bit multiplication on the JVM. Big thanks to the reviewers who helped guide this through!

You can now run unsafe Rust code... on the JVM! I just shipped support for some basic unions (consisting of primitives and structs) to my project, rustc_codegen_jvm. Here's the test case that passes on CI JVM. Recently I also added support for function pointers and modules!

🧵Can electronics help with biological breakthroughs? I presented my Cryo-EM FPGA hardware accelerator project at #RegeneronISEF 2026 in Phoenix! It was such an awesome experience to meet so many like-minded students. I was honoured to come 2nd place in my category and get some special awards too.

View full thread

3/4 My FPGA resulted in a 8.6x improvement in performance per Watt compared to the RTX 3080 and involved a custom system architecture I designed, including a WebSerial (over USB-UART) dashboard to enable easy use and custom Rust-based firmware running on the Arm cores.

4/4 The trip was a cool experience! It was cool to see FPGAs in the wild in Waymo's autonomous fleet, and I was SUPER surprised by how smooth and futuristic they were. Hopefully they can come to Australia soon! And I had a lot of fun meeting new friends across so many different disciplines of STEM.

🧵Can electronics help with biological breakthroughs? I presented my Cryo-EM FPGA hardware accelerator project at #RegeneronISEF 2026 in Phoenix! It was such an awesome experience to meet so many like-minded students. I was honoured to come 2nd place in my category and get some special awards too.

2/4 My FPGA project accelerated Cryo-EM, which won a Nobel prize in 2017 but is currently bottlenecked by Nvidia GPUs. I implemented a custom FPGA pipeline using a mix of VHDL and HLS C++, and took some inspiration from Apple Unified Memory and Systolic Arrays in Google TPUs

Playing DOOM on Apple M3 under Linux. Have been working hard over the last month on Linux bringup for the M3 Mac line, currently working on SMC drivers. Making this Bluesky to share updates about my progress!

You are up to date.