El desarrollo de Linux en el procesador M4 de Apple presenta desafíos únicos debido a la introducción de SPTM (Secure Page Table Monitor) y restricciones en el registro RVBAR. A diferencia de las generaciones anteriores, que permitían el uso de m1n1 para analizar el hipervisor, el M4 requiere modificaciones significativas en el código del hipervisor para compatibilizar con macOS. El autor documenta el proceso de inicialización de Linux, que implicó desactivar funciones de seguridad estrictas y utilizar una consola serial para depurar el sistema.
Un obstáculo crítico fue la inicialización de la MMU (Memory Management Unit). Al habilitar la MMU, el acceso a la consola serial se bloqueaba porque el kernel de Linux no mapeaba correctamente el espacio de direcciones de memoria-mapped I/O, a diferencia de m1n1. La solución consistió en modificar las tablas de páginas para establecer un mapeo 1:1 para el espacio MMIO. Además, se identificó un registro específico (SYS_IMP_APL_VM_TMR_FIQ_ENA_EL2) que provocaba caídas al intentar ejecutar instrucciones de virtualización, lo que se resolvió comentando la escritura en dicho registro.
Otro problema fundamental fue la instrucción WFI (Wait For Interrupt), que en el M4 causaba la pérdida de estado arquitectónico de la CPU, violando la especificación ARM64. Dado que el bit 'chicken' estaba bloqueado o eliminado en el M4, se reemplazaron las instrucciones WFI y WFIT por NOP en el kernel. Este trabajo técnico, realizado en paralelo con el equipo de Asahi Linux, permite ejecutar Linux en el M4 con todos los núcleos activos, sentando las bases para una solución upstream futura.
