Recent kernel fixes enable OpenBSD/arm64 to run as a guest on Apple Silicon hypervisors, resolving critical GPU memory mapping issues.
A series of commits by OpenBSD developers Helg Bredow and Stefan Fritsch has resolved a critical issue preventing OpenBSD/arm64 from functioning as a guest operating system under Apple's Hypervisor framework. The core fix addresses a memory mapping flaw in the virtio GPU driver that previously caused kernel panics on Apple Silicon hardware.
The problem centered on the viogpu_wsmmap() function in sys/dev/pv/viogpu.c. This function incorrectly returned a kernel virtual address (kva) when the Apple Hypervisor expected a physical address for framebuffer operations. This mismatch caused two visible failures: When running under QEMU, users encountered a black screen upon launching X11; under the native Apple Hypervisor, it triggered immediate kernel panics.
The solution modifies viogpu_wsmmap() to properly utilize bus_dmamem_mmap(9), the standard OpenBSD interface for device memory mapping. This returns the required physical address to the hypervisor layer, aligning with the expectations of Apple's virtualization stack. The change demonstrates OpenBSD's continued adaptation to ARM64 architectures, particularly Apple Silicon's growing presence in developer environments.
While this enables basic guest functionality, practical limitations remain. GPU acceleration features beyond basic framebuffer output aren't yet implemented, and performance characteristics under heavy graphical workloads haven't been documented. Users should expect continued refinement as OpenBSD's ARM64 support evolves.
The OpenBSD CVS repository shows the full technical implementation. This fix highlights OpenBSD's incremental approach to hardware support—prioritizing functional correctness over marketing-driven timelines, consistent with the project's security-focused ethos.

Comments
Please log in or register to join the discussion