De nombreux rapports ont été publiés la semaine dernière sur le bug du Bypass Translation Buffer (TLB) d'AMD et son impact sur les puces Opteron quadricœurs. Selon les médias étrangers, AMD prépare un noyau pour le célèbre Red Hat Enterprise Linux 64 bits. comme mise à niveau 4. Correctifs. Contrairement aux correctifs du BIOS (Basic Input Output System) et aux mises à jour du microcode d'AMD, qui réduiraient les performances de 10 à 20 %, les correctifs Linux entraîneraient une perte de performances inférieure à 1 %. Cependant, nous avons également appris que les utilisateurs devront signer un accord de non-divulgation pour obtenir le correctif.
Une fois la situation confirmée, AMD a publié le code source du correctif sur la liste de diffusion x86-64.org. Cependant, ce code est basé sur la situation actuelle et ne sera pas modifié, avec un autre avertissement selon lequel il n'est pas entièrement adapté aux systèmes traditionnels :
En raison de la nature intrusive et puissante de ce correctif et du très petit nombre d'utilisateurs concernés (vous le saurez si une partie de votre système est affectée), nous ne recommandons pas d'utiliser ce correctif sur les systèmes Linux classiques. Ce patch n'est pas destiné aux utilisateurs grand public, et ce n'est pas non plus un produit Linux à vendre ! Ce correctif a subi des tests fonctionnels minimes. Chaque utilisateur doit l'évaluer avant utilisation pour s'assurer qu'il répond aux normes de qualité nécessaires.
Dans un article précédemment publié sur la même liste de diffusion, Elsie Wahlig, employée d'AMD, a également averti que le correctif n'était "pas recommandé pour les produits en amont". Wahlig a mentionné que le correctif avait été développé par le groupe du centre de recherche sur les systèmes d'exploitation d'AMD pour Linux 2.6.23.8 et a fourni une description détaillée de l'erreur :
La description de l'erreur 298 est la suivante : "Le fonctionnement du processeur peut ne pas être atomique, modifiant les octets accédés ou sales dans l'entrée de la table de traduction de page de l'adresse 0b à 1b dans le cache de deuxième niveau. Dans un court intervalle de temps, d'autres opérations de cache peut entraîner l'installation d'entrées de table de traduction de pages non valides dans le cache L3 avant que les données répliquées modifiées ne soient renvoyées dans le cache L2. De plus, si la ligne de cache est détectée pendant cet intervalle, le processeur n'effectuera pas d'opérations de cache sans rapport avec l'accès ou. octets sales et éventuellement des données erronées. Le système peut signaler une erreur de protocole de cache de niveau 3 via un événement de détection de machine. Dans ce cas, le contenu du registre (MSR 0000_0410) sera B2000000_000B0C0F ou BA000000_000B0C0F. le registre d'adresse MC4 (MSR 0000_0412) sera 26h.
Wahlig a décrit le fonctionnement du correctif Linux, qui contourne également l'espace de travail du BIOS et émule les « octets consultés et sales » pour empêcher la création de données erronées dans les en-têtes de fichiers :
La solution du correctif du noyau dépend de la cause première du problème d'expulsion du cache L2. Le problème n'est révélé que lorsque le TLB doit définir un bit A ou D dans une entrée de table de pages. Si le TLB n'a jamais besoin de définir un bit A ou D, l'erreur ne se produira pas. En émulant les bits A et D en utilisant les bits actuellement inscriptibles, le patch garantira que les bits A et D réels sont souvent prédéfinis. Ceci est accompli en forçant une page d'erreur lors du premier accès à une page pour laquelle le bit d'émulation A n'est pas défini, et lors du premier accès en écriture à une page inscriptible pour laquelle le bit d'émulation D n'est pas défini. Les bits A et D simulés sont stockés dans des registres de bits, qui sont généralement disponibles pour le système d'exploitation sous forme d'entrées de table de pages.
AMD a arrêté de publier le correctif dans une déclaration plus délicate que prévu initialement, mais la société n'a pas délivré de « laissez-passer » à tous les utilisateurs de Linux pour éviter la perte de performances causée par le correctif du BIOS.