Hay un parche pendiente a través de x86/urgente para solucionar un problema con los procesadores Intel Alder Lake y Raptor Lake que, por el momento, permite a los desarrolladores del kernel deshabilitar los identificadores de contexto de proceso (PCID) con estos procesadores móviles/de escritorio Intel.

Se ha configurado un parche para el desarrollo de Linux 6.4 y también se retroportará a las versiones estables del kernel para evitar vaciados INVLPG globales incompletos. El parche de un ingeniero de Intel Linux explica:

“La instrucción INVLPG se usa para invalidar las entradas de TLB para una dirección virtual específica. Cuando los PCID están habilitados, se supone que INVLPG invalida las entradas de TLB para la dirección especificada para ambos las entradas actuales de PCID *y* Global. (Nota: solo las asignaciones del núcleo establecen Global=1.)

Desafortunadamente, algunas implementaciones de INVLPG pueden dejar las traducciones globales sin descargar cuando los PCID están habilitados.

Como solución alternativa, nunca habilite los PCID en los procesadores afectados.

Espero eventualmente habrá mitigaciones de microcódigo para reemplazar esta solución alternativa de software. Sin embargo, los números de versión exactos donde eso sucederá no se conocen hoy. Una vez que los números de versión están grabados en piedra, la lista de procesadores se puede modificar para deshabilitar solo los PCID en los procesadores afectados con microcódigo afectado.

Nota: si alguien quiere una solución rápida que no requiera parches, simplemente inserte’nopcid’en la línea de comandos de su kernel”.

Los procesadores afectados terminan siendo Intel Alder Lake y Raptor Lake procesadores Como se menciona en el mensaje del parche, se dice que Intel está trabajando en una mitigación de microcódigo para este problema, pero por ahora al menos el kernel de Linux está configurado para deshabilitar la compatibilidad con PCID para Alder Lake/Alder Lake L/Alder Lake N/Raptor Lake/Raptor Lake P/Raptor Lake S hasta que se pueda manejar la mitigación del microcódigo.

INVLPG se usa para invalidar entradas TLB específicas. Al menos Alder Lake y Raptor Lake no necesita el aislamiento de la tabla de páginas del kernel (KPTI) para mitigar Meltdown, ya que estos procesadores más nuevos no se ven afectados por este. años atrás. La documentación del kernel PTI continúa para señalar más extensamente los beneficios de la compatibilidad con PCID:

“Process Context IDentifiers (PCID) es una característica de la CPU que nos permite omitir el vaciado de todo el TLB al cambiar las tablas de páginas configurando un bit especial en CR3 cuando se cambian las tablas de páginas. Esto hace que el cambio de tablas de página (en el cambio de contexto o entrada/salida del kernel) sea más económico. Pero, en los sistemas compatibles con PCID, el código de cambio de contexto debe eliminar las entradas del kernel y del usuario del TLB. El vaciado de TLB de PCID de usuario se difiere hasta la salida al espacio de usuario, lo que minimiza el costo. Visite intel.com/sdm para obtener los detalles sangrientos de PCID/INVPCID.

En sistemas sin compatibilidad con PCID, cada escritura CR3 vacía todo el TLB. Eso significa que cada llamada al sistema, interrupción o excepción vacía el TLB”.

En cualquier caso, ejecutaré algunos puntos de referencia en Raptor Lake para ver si esto, al menos temporalmente, deshabilita el soporte de PCID significa para cualquiera de las áreas habituales de rendimiento para los usuarios finales.

Categories: IT Info