Il y a des moments où il n’est pas étrange de voir de grandes entreprises manipuler d’une manière ou d’une autre le comportement de leurs produits lorsqu’il est détecté que certaines tâches sont en cours d’exécution, comme des jeux ou des benchmarks spécifiques, dans le but d’augmenter artificiellement le résultat en ces programmes. C’est précisément ce qui semble s’être produit au début avec les processeurs AMD Ryzen, et bien qu’à la fin il semble que ce ne soit pas comme ça, bien sûr, la question est assez suspecte.
Le contrôleur PnP PCI manipule le processeur AMD Ryzen
Comme Ionescu l’a découvert, le pilote PCI pour Windows recherche 19 hachages (fichiers exécutables) qui ont été rapidement trouvés pour correspondre aux fichiers exécutables de 19 jeux, ce qui en soi a soulevé des soupçons. Si le contrôleur détecte que l’une de ces applications est en cours d’exécution, il désactive certaines fonctions via le registre spécifique du modèle de processeur (MSR).
Jouer avec mon premier système AMD Ryzen. Il s’avère que le «pilote AMD PCI» n’est pas en fait un pilote PCI… du tout.
Voici quelques faits amusants:
1) Il enregistre une routine de notification de création de processus et vérifie tous les noms de processus par rapport à une liste de 19 noms hachés.
– Alex Ionescu (@aionescu) 16 mai 2021
Avec une Processeur AMD Ryzen 1000 (de l’architecture Zen 1 et affecte donc probablement aussi les Ryzen 2000), certaines fonctions du cache pour les instructions (cache des opérations) sont affectées, tandis qu’avec les processeurs Ryzen 3000, ce sont certaines fonctions du cache L1 et L2 qui sont affectées. Rappelez-vous, d’après ce que Ionescu a déterminé, cela n’affecte pas les derniers processeurs AMD Ryzen 5000.
À l’origine, Ionescu avait supposé qu’AMD activerait des fonctionnalités avantageuses pour les performances et susceptibles de provoquer une instabilité dans ces 19 jeux; l’optimisation des performances est pratiquement masquée avec le contrôleur PCI. Cependant, il semble que cela ne fonctionne pas comme ça à la fin puisque le même pilote désactive ces fonctions, probablement pour éviter les problèmes d’instabilité; malgré cela, le code AMD est toujours là et on ne sait pas très bien pourquoi.
L’approche d’AMD reste discutable
Il ne fait aucun doute que l’approche d’AMD à ce sujet est pour le moins discutable. Selon Ionescu, ni le bit du MSR qui a été adapté par le contrôleur, ni la fonction qu’il contient ne sont documentés. Le fait que le responsable du traitement ait reçu le Certificat WQHL même s’il effectue des tâches complètement en dehors de sa fonction réelle, et alors que le contrôleur PCI devrait atteindre précisément l’objectif de WQHL d’augmenter la stabilité du système, cette fonction cachée fait exactement le contraire.
Crash un système Ryzen dans une seule ligne de PowerShell tweetable:
(Get-NtFile Device NTPNP_PCI0031) .DeviceIoControl (0x9C402400, 5, 5)
Hé, AMD, si vous voulez bidouiller des bits MSR magiques qui contrôlent le cache d’instructions lorsque vous jouez à certains jeux vidéo, pouvez-vous au moins coder correctement https://t.co/hb0jB5bCxh pic.twitter.com/ryNzbQYSFL
– Alex Ionescu (@aionescu) 16 mai 2021
Ionescu fait référence à un autre problème à cet égard et dans ce cas, il est lié à la sécurité: l’interface IOCTL du contrôleur permettait à Ionescu de verrouiller l’ordinateur avec une seule ligne de code via PowerShell, et il est également possible de manipuler la liste des contrôlés. processus par le responsable du traitement.
AMD n’a rien dit sur ces accusations pour le moment, mais il est certainement au moins suspect que ce « problème » ait été détecté alors que le constructeur ne l’a documenté nulle part.