QEMU 10.1 llega mejorando la seguridad, migración y soporte ampliado
QEMU 10.1 ya está disponible y llega con un buen puñado de cambios que importan tanto a quien desarrolla como a quien despliega máquinas virtuales a gran escala. Entre lo más llamativo hay novedades en seguridad, migraciones en vivo, soporte de arquitecturas y mejoras de dispositivos, así que conviene repasarlo con calma.
Antes de meternos en harina, un apunte que evita confusiones: QEMU usa numeración basada en el tiempo. Eso implica que el número mayor del lanzamiento no marca por sí mismo el alcance de los cambios. La política del proyecto permite introducir cambios incompatibles tras un periodo de deprecación con avisos en, como mínimo, dos versiones previas, así que no des por hecho que un salto de versión mayor es sinónimo de revolución.
Disponibilidad, contexto y filosofía de QEMU 10.1
El proyecto anunció la 10.1.0 el 26 de agosto de 2025 con más de 2700 commits firmados por 226 autores. Puedes descargar el tarball desde la página oficial y consultar el changelog completo para todos los detalles. Como siempre, un agradecimiento expreso a quienes contribuyen con código, pruebas, CI, documentación y reporte de fallos.
En línea con la filosofía de QEMU, hay varias menciones a características eliminadas y opciones deprecadas. Si dependes de algo antiguo, revisa la sección ‘Removed features’ y el capítulo ‘Deprecated Features’ de la System Emulation User’s Guide, donde también se recomiendan sustituciones.
Lo más destacado de un vistazo
Para abrir boca, el resumen rápido de la 10.1 abarca seguridad, rendimiento y administración avanzada. Hay soporte inicial de VFIO para invitados confidenciales, mejoras potentes en migración y nuevas capacidades del agente invitado.
- VFIO y confidencialidad: soporte inicial para acceder/mapear memoria de invitados confidenciales cuando se usa guest_memfd, habilitando passthrough en SEV-SNP/TDX.
- Migración en vivo: multifd acelera el post-copy, optimizaciones al pre-copy y soporte RDMA sobre IPv6.
- Agente invitado: nuevo comando ‘guest-get-load’ para consultar carga en Windows.
- Arquitecturas: nuevas features ARM (FEAT_SME2, SME2p1, SVE2p1 y más), soporte RISC-V ampliado e integración KVM para TDX en x86.
Arquitecturas y máquinas: qué cambia exactamente
QEMU 10.1 pule y amplía la emulación y virtualización en múltiples familias de CPU. Desde ARM a RISC-V y x86, pasando por LoongArch, HPPA o Microblaze, hay avances concretos que conviene desglosar.
ARM
En ARM, QEMU 10.1 añade un lote de características arquitectónicas de CPU: FEAT_SME2, FEAT_SME2p1, FEAT_SME_B16B16, FEAT_SME_F16F16, FEAT_SVE_B16B16 y FEAT_SVE2p1, reforzando el soporte de procesamiento vectorial y de matrices.
En cuanto a máquinas, hay varias novedades relevantes. Se incorpora el board ‘max78000fthr’ (Analog Devices max78000 Cortex-M4), llega un nuevo multi-SoC ‘ast2700fc’, además de máquinas ‘catalina-bmc’ (Meta) y ‘gb200-bmc’ (NVIDIA); y se añade soporte de firmware a las AST2700 EVB.
El popular board ‘virt’ también crece: ahora soporta CXL, PCI hotplug vía ACPI y, bajo host kernel reciente, virtualización anidada con KVM activando ‘virtualization=on’. Ojo: los modelos ‘highbank’ y ‘midway’ quedan deprecados, y se anuncia la deprecación de ‘ast2700a0-evb’.
RISC-V
El ecosistema RISC-V recibe un aluvión de detalles en ISA, máquinas y correcciones. Se soporta la extensión de fetch atómico (Ziccif), se añade ‘Svrsw60t59b’, y se afinan casos límite de instrucciones vectoriales.
- ISA y extensiones: pseudoinstrucción ‘tail’ para llamadas en cola, eliminación de propiedades CPU con ‘Z’ mayúscula, max_satp_mode desde el host, configuración y extensión del recuento de regiones PMP (hasta 64), opción para fijar ‘vill’ en uso reservado de vsetvli.
- Máquinas: soporte para RIMT en ACPI de ‘virt’, mejoras de personalización en Microchip PolarFire SoC y nuevo CPU y plataforma Kunminghu; actualización de versiones FADT y MADT en tablas ACPI.
- Correcciones y varios: no permitir que PMP RLB salte privilegios, arreglos CSR en KVM, sstc, orden de zama16b, manejo de perfiles, correcciones de excepciones/mascarado (MEPC/SEPC para IALIGN), fix de wraparound en rangos PMP 0, arreglos de bucles infinitos de traducción en big endian, y solución de fallos de migración cuando AIA está configurado como aplic-imsic.
Además, se añaden ‘named features’ faltantes, correcciones en PPN del registro de respuesta de traducción y se evita el retraso infinito en la transmisión asíncrona, lo que mejora la estabilidad en escenarios extremos.
x86 (KVM y TCG)
En x86 hay dos puntos finos que los administradores agradecerán. Se omiten bits CPUID específicos de proveedor cuando el vendor de la CPU invitada no los define, evitando confusiones y perfiles artificiales.
Por el lado de KVM, se añade soporte para TDX (requiere Linux 6.16 o posterior), y se permite iniciar máquinas TDX o SEV-SNP a partir de un fichero IGVM, un paso importante para flujos de aprovisionamiento seguros.
En el traductor TCG, se soporta el bit de trampa TSS, mejorando la fidelidad de ciertas rutas de ejecución sin aceleración por hardware.
LoongArch
LoongArch avanza con soporte de irqchip en kernel, corrige big endian con tabla MCFG, arregla inicios fallidos cuando ‘smp cpu’ < ‘smp maxcpus’ bajo KVM, y pule detalles de instrucciones como VLDI. También se informa al invitado de KVM y se añade un chequeo para ‘fcond’.
Microblaze
Quienes trabajen con Microblaze tienen más control: la máquina ‘petalogix_s3adsp1800’ permite alternar el endianness vía la propiedad ‘endianness’. Las variantes big-endian de ml605 y xlnx-zynqmp-pmu desaparecen y esos modelos pasan a little endian en qemu-system-microblaze. Además, el binario ‘qemu-system-microblazeel’ queda deprecado y se eliminará en el futuro.
MIPS
Hay una corrección muy concreta pero muy agradecida: se soluciona el BSOD al arrancar Windows NT MIPS en la máquina magnum (issue #2464), útil para quien investiga o mantiene software histórico.
HPPA
Se ha mejorado la emulación de excepciones de coma flotante (FPE) tanto en modo usuario como en modo sistema, reforzando la precisión de esta arquitectura veterana.
Otras arquitecturas
Además de los apartados anteriores, hay capítulos para 68k, Alpha, AVR, Hexagon, OpenRISC, PowerPC, Renesas RX/SH, s390x, SPARC, Tricore y Xtensa. Aunque no se listan grandes titulares en 10.1 para todas, el mantenimiento y ajustes continúan, con especial mención a s390x en versiones recientes por nuevas definiciones de CPU y mejoras de virtio-mem.
Dispositivos, E/S y subsistemas
QEMU 10.1 trae material importante en VFIO, redes, gráficos, audio y E/S. Son cambios que influyen directamente en rendimiento, compatibilidad y operativa del día a día.
VFIO
Se introduce soporte inicial de backends de memoria guest-memfd en invitados confidenciales (CoCo), se actualiza la documentación de IGD passthrough y se arregla un crash de L2 en máquinas pseries.
También se habilita automáticamente el OpRegion para IGD passthrough, se perfecciona su detección y ahora QEMU puede informar cambios de configuración de vfio-ap.
Más allá de eso, llegan un cliente vfio-user, soporte de actualización en vivo (CPR), migración VFIO con multifd en aarch64, y una propiedad para forzar el class code PCI de un dispositivo. Por último, se oficializa el soporte de VFIO sobre VMs TDX y SNP.
Redes y almacenamiento
En dispositivos de red hay un backend nuevo: ‘passt’, pensado para escenarios de integración y sandboxing. Además, cuando se usa NBD sobre sockets Unix, QEMU intenta negociar buffers más grandes para mejorar el rendimiento de forma drástica.
PCI/PCIe y virtio
El board ARM ‘virt’ añade hotplug PCI vía ACPI y acpi-index para dispositivos PCI al activar la opción global ‘-global acpi-ged.acpi-pci-hotplug-with-bridge-support=on’.
En gráficos virtualizados, virtio-gpu permite inyectar el nombre EDID, útil para pruebas de compatibilidad y automatización.
9pfs y otros backends
Para 9pfs, se corrigen el algoritmo de recuperación de descriptores de fichero cuando se está cerca del límite del sistema y varios casos de use-after-unlink (operaciones tras borrar el fichero) que podían provocar errores sutiles.
Audio
El subsistema de audio ajusta defaults y compatibilidad: en ALSA ‘try-poll’ ahora es false por defecto y se añaden conversores de endianness para muestras en coma flotante.
Interfaz gráfica y agentes
En GUI hay mucha tela que cortar: spice/dbus soporta dmabuf multiplano, y se puede activar gl=on también con clientes remotos/no locales.
El agente vdagent añade soporte de migración, GTK mejora el manejo de escala y suma opciones ‘keep-aspect-ratio’ y ‘scale’.
En VNC se corrigen problemas de codificación de actualizaciones cuando cliente y servidor difieren en endianness, tanto en encodings no-tight como en 8/16 bpp; además se soluciona el pausado de pantalla tras migración.
I/O y depuración
En la capa de E/S, muchos backends TCP ahora permiten configurar parámetros de TCP keepalive, muy útil en entornos con firewalls o NAT agresivos.
La GDBStub añade soporte para qGDBServerVersion usado por clientes no-GDB, mejorando la interoperabilidad.
Los plugins TCG reciben mimo: el plugin ‘ips’ admite escalado configurable e instrucciones por quantum; además hay nuevas funciones para escribir registros, escribir en direcciones virtuales (con cautelas) y leer/escribir direcciones hardware. Se incorpora un test plugin ‘patcher’, y sparc64 y alpha exponen detalles de registro a plugins.
Migración en vivo y tareas de bloque
La 10.1 aprieta las tuercas a la movilidad de VMs. La migración RDMA ya habla IPv6 y se optimiza el postcopy en accesos secuenciales (casos típicos como vídeo en streaming).
Gran noticia: ahora se pueden habilitar multifd y postcopy a la vez (multifd se activa de momento durante el precopy). También se arregla la migración VFIO con multifd cuando está activo tcp zerocopy y se reduce la ventana de downtime en precopy evitando LOG_CLEAR innecesarios.
En QMP, blockdev-mirror estrena el flag booleano ‘target-is-zero’ para optimizar mirrors hacia destinos que ya leen como cero; además, incluso sin ese flag, se hace menos trabajo en bloques fuente que leen cero. blockdev-backup suma la opción ‘on-cbw-error’ para decidir el comportamiento ante errores de E/S durante copy-before-write.
En trabajos de bloque, block-commit no activo se optimiza para mantener la esparcidad; y mirror/backups heredan las mejoras anteriores para bloques cero y nuevas opciones.
Agente invitado
El QEMU Guest Agent crece en Windows: se implementa ‘guest-get-load’ para consultar la carga del sistema invitado.
También en Windows se añade un reintento al desregistrar el proveedor VSS y se propaga el error de instalación del proveedor VSS al instalador MSI, facilitando el diagnóstico.
Modo usuario y TCG
En user-mode emulation hay pequeñas actualizaciones de documentación aclarando limitaciones; se tocan áreas de señales, runtime y binfmt_misc, así como objetivos alpha, arm/aarch64, HPPA, LoongArch, PowerPC, s390 y x86.
En TCG continúan los trabajos sobre LoongArch y RISC-V y el soporte de Record/Replay, aunque sin cambios de titular más allá del ya citado bit de trampa TSS.
Compilación, dependencias y plataformas
En el proceso de build, la documentación se actualiza con ejemplos de b4 y todos los submódulos de edk2 van ahora incluidos en el firmware tarball.
Respecto a Rust, la versión mínima soportada pasa a 1.77. En Debian bookworm está disponible en el paquete rustc-web salvo en mips64el (para ese objetivo, hace falta Debian trixie o más nuevo). En Ubuntu 22.04 y 24.04, se usa el paquete rust-1.77 configurando las variables RUSTC/RUSTDOC hacia /usr/bin/rustc-1.77 y /usr/bin/rustdoc-1.77.
El soporte de Rust sigue experimental y no estable, no recomendado para otra cosa que desarrollo. Con Rust habilitado, QEMU requiere Meson 1.8.1. Se incluye un script (‘scripts/get-wraps-from-cargo-registry.py’) para poblar ‘subprojects/’ desde un registro local (p. ej., /usr/share/cargo/registry).
En plataformas host, se deja de soportar Debian bullseye, y Ninja 1.9 pasa a ser requisito (ya estaba presente en todos los sistemas soportados con QEMU 10.0). Llega además soporte experimental para compilar a WASM con Emscripten.
Sobre Windows no hay titulares específicos en esta entrega, más allá de lo ya mencionado del agente invitado. La hoja de ruta de la 10.1 está en la página Planning/10.1 si quieres seguir el detalle.
Si estabas esperando el momento para actualizar, la combinación de soporte para invitados confidenciales (TDX/SEV-SNP con IGVM y guest_memfd), migraciones más ágiles (multifd + postcopy, RDMA IPv6), y mejoras repartidas por arquitecturas y subsistemas hacen de QEMU 10.1 un lanzamiento muy redondo. Con más rendimiento práctico, mejores herramientas de administración y una base tecnológica que no deja de modernizarse, el salto compensa.