La semana pasada hubo muchos informes sobre el error Bypass Translation Buffer (TLB) de AMD y su impacto en los chips Opteron de cuatro núcleos. Según informes de medios extranjeros, AMD está preparando un kernel para el conocido Red Hat Enterprise Linux de 64 bits. como Actualización 4. Parches. A diferencia de las correcciones del BIOS (Sistema básico de entrada y salida) y las actualizaciones de microcódigo de AMD, que, según se informa, reducen el rendimiento entre un 10 y un 20%, se dice que los parches de Linux tienen una pérdida de rendimiento de menos del 1%. Sin embargo, también supimos que los usuarios deberán firmar un acuerdo de confidencialidad para poder obtener el parche.
Después de que se confirmó la situación, AMD publicó el código fuente del parche en la lista de correo de x86-64.org. Sin embargo, este código se basa en la situación actual y no se modificará, con otra advertencia de que no es totalmente adecuado para los sistemas convencionales:
Debido a la poderosa naturaleza intrusiva de este parche y al número muy pequeño de usuarios afectados (lo sabrá si parte de su sistema se ve afectado), no recomendamos utilizar este parche en sistemas Linux normales. ¡Este parche no está destinado a usuarios comunes ni es un producto de Linux a la venta! Este parche ha sido sometido a pruebas funcionales mínimas. Cada usuario debe evaluarlo antes de su uso para asegurarse de que cumple con los estándares de calidad necesarios.
En una publicación publicada anteriormente en la misma lista de correo, la empleada de AMD, Elsie Wahlig, también advirtió que el parche "no se recomienda para productos upstream". Wahlig mencionó que el parche fue desarrollado por el grupo del Centro de Investigación de Sistemas Operativos de AMD para Linux 2.6.23.8 y proporcionó una descripción detallada del error:
La descripción del error 298 es la siguiente: "La operación del procesador puede no ser atómica, cambiando los bytes accedidos o sucios en la entrada de la tabla de traducción de páginas de la dirección 0b a 1b en el caché de segundo nivel. Dentro de un pequeño intervalo de tiempo, otras operaciones de caché puede provocar que se instalen entradas de la tabla de traducción de páginas no válidas en la caché L3 antes de que los datos replicados modificados se devuelvan a la caché L2. Además, si se detecta la línea de caché durante este intervalo, el procesador no realizará operaciones de caché no relacionadas en las accesos o. bytes sucios y posiblemente datos erróneos. El sistema puede informar un error de protocolo de caché de nivel 3 a través de un evento de detección de la máquina. En este caso, el contenido del registro MC4 (MSR 0000_0410) será B2000000_000B0C0F o BA000000_000B0C0F. el registro de dirección MC4 (MSR 0000_0412) será 26h ".
Wahlig describió cómo funciona el parche de Linux, que también pasa por alto el espacio de trabajo del BIOS y emula los "bytes sucios y a los que se accede" para evitar que se generen datos erróneos en los encabezados de los archivos:
La solución del parche del kernel depende de la causa raíz del problema de desalojo de la caché L2. El problema sólo se revela cuando el TLB necesita establecer un bit A o D en una entrada de la tabla de páginas. Si el TLB nunca necesita establecer un bit A o D, no se producirá el error. Al emular los bits A y D utilizando los bits que se pueden escribir actualmente, el parche garantizará que los bits A y D reales a menudo estén preestablecidos. Esto se logra forzando una página de error cuando se accede por primera vez a una página para la cual el bit de emulación A no está establecido, y cuando se accede por primera vez a una página de escritura para la cual el bit de emulación D no está establecido. Los bits A y D simulados se almacenan en registros de bits, que normalmente están disponibles para el sistema operativo como entradas de la tabla de páginas.
AMD dejó de publicar el parche en una declaración con más tacto de lo esperado inicialmente, pero la compañía no emitió un "pase" a todos los usuarios de Linux para evitar la pérdida de rendimiento causada por la corrección del BIOS.