Una solución está en camino al núcleo principal de Linux 6.4 y también está marcada para la migración posterior a la serie de núcleos estables existentes para corregir los informes de topología x86 para los sistemas Intel Hybrid. El error de topología dentro del kernel se vuelve más pronunciado para las computadoras portátiles Meteor Lake, donde actualmente las computadoras portátiles de prueba internas de Intel pueden informar que los sistemas tienen 11 zócalos de CPU en lugar de la cantidad adecuada de núcleos, todos contenidos dentro de un zócalo de CPU.
Si bien los diseños de CPU híbrida de Intel han sido comunes desde fines de 2021, el kernel de Linux hasta este momento no ha manejado correctamente la variable”smp_num_siblings”que, a su vez, se propaga al espacio del usuario y puede terminar reportando información incorrecta. En el caso de una próxima plataforma Intel Meteor Lake P, el kernel de Linux hasta este punto con el comando común lscpu informaría que hay 11 zócalos de CPU en el sistema, cada uno con un solo núcleo. En realidad, es una computadora portátil de un solo zócalo que tiene 16 núcleos en total.
Además de la información incorrecta que se propaga al espacio del usuario con fines informativos, este manejo inadecuado de smp_num_siblings podría terminar causando un impacto en las decisiones del programador del kernel de Linux. Como comentó el ingeniero de Intel, Zhang Rui,”también se espera que esto haga que el programador haga cosas bastante raras”.
Explicó además con este parche:
“Tradicionalmente , todas las CPU en un sistema tienen números idénticos de hermanos SMT. Eso cambia con los procesadores híbridos donde algunas CPU lógicas tienen un hermano y otras no.
Hoy, el código de arranque de la CPU establece la variable global smp_num_siblings cuando se trae cada subproceso de CPU arriba. El último subproceso en arrancar lo sobrescribirá con el número de hermanos de *ese* subproceso. Ese último subproceso en arrancar”ganará”. Si el subproceso es un Pcore, smp_num_siblings==2. Si es un Ecore, smp_num_siblings==1.
smp_num_siblings describe si el *sistema* es compatible con SMT. Debe especificar el número máximo de subprocesos SMT entre todos los núcleos.
Asegúrese de que smp_num_siblings representa el máximo de todo el sistema número de hermanos aumentando siempre su valor. Nunca permitas que disminuya.
En la plataforma MeteorLake-P, esto soluciona el problema de que las CPU de Ecore no se actualizan en ningún mapa de hermanos de CPU porque el sistema se trata como un sistema UP cuando se prueban las CPU de Ecore”.
Ese parche fue recogido ayer por la rama x86/urgent de TIP. A su vez, esto se enviará al kernel de Linux 6.4 probablemente durante el fin de semana como una solución urgente. El parche también está marcado para volver a portar a Linux existente versiones estables del núcleo para garantizar que el recuento de hermanos SMP se informe correctamente en las plataformas híbridas de Intel.