Uploaded June 2021 | Updated September 2026, 9 hours ago
After 13 episodes of the hypervisor series, it boots macOS! Let's go over the hypervisor implementation bit by bit and recap how it all works together.
0:00:00 Intro
0:01:20 Why a hypervisor?
0:02:40 How MMIO works
0:06:45 Reverse engineering hardware
0:13:57 The Apple Device Tree
0:17:08 Virtualization on ARMv8-A
0:20:20 The demo effect...
0:26:20 Non-hypervisor EL1
0:28:54 ARM Hypervisor features
0:34:18 HV demo
0:41:35 HV overview
0:42:35 Initialization / startup
0:46:39 Exception vectors
0:55:02 m1n1 proxy & callback flow
1:00:54 Synchronous exceptions
1:03:44 System register emulation
1:11:39 Virtual memory
1:16:18 Page tables
1:30:06 Translation & table walks
1:37:49 Data aborts (page faults)
1:45:28 MMIO trace events
1:48:15 Load/store emulation
1:52:11 HV watchdog
1:57:55 HV timer & interrupt handling
2:00:58 The VM timer problem
2:05:18 Virtual UART
2:07:20 The Python side (hv.py)
2:09:27 Guarded mode (GXF)
2:11:24 hv.py init
2:24:59 hv.py event handling
2:30:00 hv.py EL1 exception tracing hack
2:31:58 Using the HV to RE the GPU
2:34:18 hv.py main exception handler
2:36:52 hv.py MMIO tracing (GPU demo)
2:42:19 Comments / Q&A
2:43:08 The VM timer problem (redux)
2:46:35 Linux big.LITTLE scheduling
2:47:52 Next steps for HV
2:50:05 Getting started with RE
2:51:40 Whoops, I crashed DCP
2:54:15 Coprocessors and firmware
2:59:25 On Devicetrees
3:00:45 m1n1 on non-Apple devices
3:03:28 Patreon & support
3:05:58 Origins of m1n1
3:07:24 iBoot2/Firmware setup & updates
3:09:25 Devicetree variants
3:09:58 Windows on M1
3:11:54 M1 OS bootrstrap design
3:16:45 x86_64 emulation
3:21:44 Back to the crashed DCP
Website: asahilinux.org
Patreon: patreon.com/marcan
GitHub Sponsors: github.com/sponsors/marcan
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music!
After 13 episodes of the hypervisor series, it boots macOS! Let's go over the hypervisor implementation bit by bit and recap how it all works together.
0:00:00 Intro
0:01:20 Why a hypervisor?
0:02:40 How MMIO works
0:06:45 Reverse engineering hardware
0:13:57 The Apple Device Tree
0:17:08 Virtualization on ARMv8-A
0:20:20 The demo effect...
0:26:20 Non-hypervisor EL1
0:28:54 ARM Hypervisor features
0:34:18 HV demo
0:41:35 HV overview
0:42:35 Initialization / startup
0:46:39 Exception vectors
0:55:02 m1n1 proxy & callback flow
1:00:54 Synchronous exceptions
1:03:44 System register emulation
1:11:39 Virtual memory
1:16:18 Page tables
1:30:06 Translation & table walks
1:37:49 Data aborts (page faults)
1:45:28 MMIO trace events
1:48:15 Load/store emulation
1:52:11 HV watchdog
1:57:55 HV timer & interrupt handling
2:00:58 The VM timer problem
2:05:18 Virtual UART
2:07:20 The Python side (hv.py)
2:09:27 Guarded mode (GXF)
2:11:24 hv.py init
2:24:59 hv.py event handling
2:30:00 hv.py EL1 exception tracing hack
2:31:58 Using the HV to RE the GPU
2:34:18 hv.py main exception handler
2:36:52 hv.py MMIO tracing (GPU demo)
2:42:19 Comments / Q&A
2:43:08 The VM timer problem (redux)
2:46:35 Linux big.LITTLE scheduling
2:47:52 Next steps for HV
2:50:05 Getting started with RE
2:51:40 Whoops, I crashed DCP
2:54:15 Coprocessors and firmware
2:59:25 On Devicetrees
3:00:45 m1n1 on non-Apple devices
3:03:28 Patreon & support
3:05:58 Origins of m1n1
3:07:24 iBoot2/Firmware setup & updates
3:09:25 Devicetree variants
3:09:58 Windows on M1
3:11:54 M1 OS bootrstrap design
3:16:45 x86_64 emulation
3:21:44 Back to the crashed DCP
Website: asahilinux.org
Patreon: patreon.com/marcan
GitHub Sponsors: github.com/sponsors/marcan
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music!
![Work stream: Writing a hypervisor Pt.8 [2021-05-11]
Mmiotrace hypervisor, maybe?
Website: https://asahilinux.org
Patreon: https://patreon.com/marcan
GitHub Sponsors: https://github.com/sponsors/marcan
In these streams I show how I work. I may or may not talk, and I may or may not read the chat. If you need to catch my attention, its probably best to ping me on IRC, check out asahilinux.org for details!
There is currently no set schedule for these streams, so subscribe and click the bell if you want to be notified when they happen.
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music! Work stream: Writing a hypervisor Pt.8 [2021-05-11]](https://i.ytimg.com/vi/iw_FvXnb_WQ/mqdefault.jpg)

![Bringing up Asahi Linux on the M1 Pro, Part 4 [2021-11-10]
PCIe and the SD card reader work; lets tackle SMC and NVMe!
Website: https://asahilinux.org
Patreon: https://patreon.com/marcan
GitHub Sponsors: https://github.com/sponsors/marcan
In these streams I show how I work. I may or may not talk, and I may or may not read the chat. If you need to catch my attention, its probably best to ping me on IRC, check out asahilinux.org for details!
There is currently no set schedule for these streams, so subscribe and click the bell if you want to be notified when they happen.
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music! Bringing up Asahi Linux on the M1 Pro, Part 4 [2021-11-10]](https://i.ytimg.com/vi/j5V4EJXPq6Q/mqdefault.jpg)



![It boots! Work stream: Writing a hypervisor Pt.13 [2021-05-27]
Virtualized macOS on Apple Silicon :-)
Website: https://asahilinux.org
Patreon: https://patreon.com/marcan
GitHub Sponsors: https://github.com/sponsors/marcan
In these streams I show how I work. I may or may not talk, and I may or may not read the chat. If you need to catch my attention, its probably best to ping me on IRC, check out asahilinux.org for details!
There is currently no set schedule for these streams, so subscribe and click the bell if you want to be notified when they happen.
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music! It boots! Work stream: Writing a hypervisor Pt.13 [2021-05-27]](https://i.ytimg.com/vi/l4fp_nBRNfw/mqdefault.jpg)



![Work stream: chicken bits [2021-01-25]
Chickens. Chickens everywhere.
Website: https://asahilinux.org
Patreon: https://patreon.com/marcan
GitHub Sponsors: https://github.com/sponsors/marcan
In these streams I show how I work. I may or may not talk, and I may or may not read the chat. If you need to catch my attention, its probably best to ping me on IRC, check out asahilinux.org for details!
There is currently no set schedule for these streams, so subscribe and click the bell if you want to be notified when they happen.
I do not broadcast background music, for copyright reasons and because my music tastes may not match yours. I highly recommend bringing along your own music! Work stream: chicken bits [2021-01-25]](https://i.ytimg.com/vi/nI2e-J6fsuk/mqdefault.jpg)