Il y a un peu de code du noyau Linux pour les processeurs AMD Zen 2 appelé le”poulet spectral”et un appel pour nettoyer ce code, qui a été écrit à l’origine par un ingénieur Intel Linux, a été rejeté.
Dans le fichier d’en-tête Linux x86 pour les MSR, il y a le”ZEN2_SPECTRAL_CHICKEN”et dans le chemin du code du processeur AMD se trouve un peu de code pour traiter ce morceau de poulet, et un commentaire de code :”Sur Zen2, nous offrons ce poulet (bit ) sur l’autel de la spéculation. Cela supprime la spéculation du milieu d’un bloc de base, c’est-à-dire qu’il supprime les prédictions sans branche. Nous utilisons STIBP comme heuristique pour filtrer Zen2 du reste de F17H.
Borislav Petkov, un ingénieur Linux de longue date qui a d’abord travaillé pour AMD il y a plus de dix ans au centre de recherche sur les systèmes d’exploitation AMD, fermé depuis, et des années depuis, a été employé par SUSE alors qu’il y a quelques mois, il a rejoint AMD , a cherché à nettoyer ce code AMD Spectral Chicken.
Il a envoyé un correctif avec le message :
“Nous nous sommes assez amusés avec le morceau de poulet spectral-nommez-le ce qu’il fait vraiment : il supprime les prédictions sans branche.
Renommer définit pour indiquer clairement qu’il s’agit uniquement de Zen2.
Aucun changement fonctionnel.”
Le bit MSR du poulet spectral AMD Zen 2 est renommé”ZEN2_DE_CFG2″et”ZEN2_DE_CFG2_SUPPRESS_NOBR_PRED”ainsi que le nettoyage du commentaire de code pour s’y référer comme supprimant la spéculation pour les prédictions non-branche. Bien que rien de trop dramatique à propos de ce changement non fonctionnel, l’auteur original de ce code se trouvait être un ingénieur Intel.
Peter Zijlstra a répondu :
“NAK [Not Acknowledge], j’ai dû écrire tout cela sans * aucune * communication officielle d’AMD, principalement par ouï-dire.
Cela devient à jamais le poulet spectral comme punition. La prochaine fois AMD peuvent réessayer, et s’ils parviennent à se ressaisir et à publier quelque chose avant que j’écrive le code et que j’invente un nom pour un morceau magique, ils peuvent le nommer comme ils veulent.”
À quoi Petkov a soulevé qu’il est peu probable que Peter ait besoin d’écrire à nouveau un tel code, ce que Thomas Gleixner a qualifié d’hypothèse purement spéculative.
Pour ceux qui ne le savent pas, un morceau de poulet fait généralement référence à un morceau qui peut être utilisé pour désactiver certaines fonctionnalités de la puce s’il s’avère défectueux ou problématique.
Il ressemble donc au poulet spectral AMD code restera autour du noyau Linux pour un plaisir un peu plus léger.
Ce code a été initialement rédigé par un ingénieur Linux d’Intel dans le cadre des efforts d’exécution spéculative et à l’époque, AMD avait moins d’ingénieurs Linux qu’aujourd’hui. Au cours des dernières années, AMD a renforcé son équipe d’ingénieurs Linux pour mieux gérer ses contributions au noyau Linux et l’activation en temps opportun de nouvelles fonctionnalités à la fois pour Ryzen et EPYC. Les contributions du noyau Linux d’AMD ont considérablement augmenté ces derniers temps et pour améliorer leurs dernières générations de produits. Ainsi, la prochaine fois qu’un tel problème surviendra, s’il est traité directement par les ingénieurs d’AMD, ils pourront nommer les éléments qu’ils souhaitent tandis que le Zen 2 Spectral Chicken semble rester inchangé.