Thomas Gleixner de Linutronix, que fue adquirida por Intel el año pasado, y su equipo están trabajando para limpiar el proceso de arranque de Linux x86/x86_64. Un conjunto de 17 parches que tocan el código inicial de inicialización del kernel de Linux y otros cambios en todo el árbol ahora se han publicado para su discusión.

Los desarrolladores del kernel de Linux están trabajando para desinfectar el proceso de arranque x86 y limpiar el código. Thomas Gleixner explicó el código de arranque actual de Linux x86 y el enfoque de esta nueva serie de parches:

“Mi equipo y yo mismo estamos trabajando para desinfectar el proceso de arranque x86, especialmente el espectáculo de terror completo de CPUID evaluación, que se construye con circuitos de alambre, cinta adhesiva y superpegamento.

Un objetivo relacionado es mover la inicialización de la infraestructura que no se requiere durante el arranque temprano a una fase posterior del proceso de arranque. El arranque temprano es frágil y ya es lo suficientemente complicado, por lo que cualquier cosa que pueda pasar a una fase posterior es una victoria.

La inicialización de la FPU X86 es una de las partes obvias que no tiene justificación para hacerse antes. El único requisito es que suceda antes de parches alternativos. Hacerlo temprano también requiere un análisis de línea de comando personalizado que obviamente se puede evitar cuando la inicialización ocurre más tarde.

Los parches alternativos ocurren desde check_bugs(), que se invoca tarde en start_kernel(). Mover la inicialización de la FPU a eso es demasiado tarde porque check_bugs() se invoca después de fork_init(), pero fork_init() requiere que la FPU se inicialice en X86, ya que en X86 el tamaño de task_struct depende del tamaño del búfer de registro de la FPU.

Para evitar otra función mágica, nos propusimos mover check_bugs() antes e inspeccionamos todas las encarnaciones para ver si había alguna razón para hacerlo tan tarde. Resultó que no hay ninguno (últimas palabras famosas), pero también reveló que check_bugs() es un nombre inapropiado.

check_bugs() se ha convertido en un basurero para finalizar la inicialización de la CPU antes de ejecutar el resto del código de inicio”.

Esta serie de parches inicialmente en 17 parches tiene como objetivo limpiar ese código de arranque de Linux x86. Es un buen esfuerzo y sigue el trabajo reciente de Gleixner en CPU paralela soporte de recuperación programado para Linux 6.5 como otra mejora de arranque.

Categories: IT Info