Fusionado el domingo antes de etiquetar Linux 6.2-rc6 es una”solución”tardía para el código AMD Secure Encrypted Virtualization Secure Nested Paging (SEV-SNP) para evitar posibles situaciones de comportamiento indefinido con problemas difíciles de depurar donde un host Linux moderno con SEV-SNP puede intentar arrancar una máquina virtual Linux con un kernel desactualizado.
Algunas funciones de AMD SEV-SNP necesitan soporte del lado invitado para funcionar correctamente, por lo que si un host Linux moderno con un kernel reciente que admite funciones más nuevas de las CPU AMD EPYC modernas intenta iniciar una máquina virtual invitada con un kernel que no es compatible con algunos características SEV, puede haber problemas, problemas que no son necesariamente fáciles de diagnosticar. Sorprendentemente, el kernel de Linux de la línea principal tardó hasta ayer en recibir el soporte de negociación de características de invitado SEV-SNP para lidiar con esta posibilidad real de que el host/hipervisor tenga un kernel más nuevo que el que se encuentra en las máquinas virtuales invitadas.
Del parche que agrega este soporte de negociación de funciones de invitado SEV-SNP:
“El hipervisor puede habilitar varias funciones nuevas (SEV_FEATURES[1:63]) e iniciar el SNP invitado. Algunas de estas funciones necesitan implementación del lado del invitado. Si alguna de estas funciones está habilitada sin implementación del lado del invitado, el comportamiento del invitado SNP no estará definido. El inicio del invitado SNP puede fallar de una manera no obvia, lo que dificulta la depuración..
En lugar de permitir que el invitado continúe y que falle aleatoriamente más tarde, detecte esto temprano y falle correctamente.
SEV_STATUS MSR indica funciones que el hipervisor ha habilitado. Durante el arranque, los invitados SNP deben asegurarse de que todas las funciones habilitadas tengan implementación del lado del invitado. En caso de que alguna función no esté implementada en el invitado, el invitado finaliza el arranque con el evento de solicitud de finalización de salida no automática (NAE) del protocolo GHCB. ITINFO2 con máscara de funciones no admitidas que el hipervisor puede informar fácilmente al usuario”.
Esto se trata como una solución, por lo que se eligió para Linux 6.2-rc6 en lugar de esperar a que siguiente ventana de combinación. A su vez, también se adaptará pronto a la serie estable del kernel de Linux.
La x86/solicitud de extracción urgente de ayer caracterizó el problema así:”El parche SEV-SNP parece un poco grande y tal vez, a primera vista, no es un material realmente urgente, pero la intención detrás de esto es fallar con gracia al arrancar kernels más antiguos en hipervisores más nuevos cuando estos últimos admiten funciones que esos kernels más antiguos aún no conocen. a estable, por lo que enviarlo ahora es un momento tan bueno como cualquier otro… Haga que un invitado SEV-SNP verifique explícitamente las funciones habilitadas por el hipervisor y falle con gracia si el invitado no admite algunas en lugar de fallar de forma no obvia y difícil. forma de depuración”.