Certaines fonctions des Apple M1 et M2 marchent sous Linux… et pas sous macOS

Pierre Dandumont |

C'est le développeur Hector Martin qui le pointe sur Mastodon : les puces M1 et M2 contiennent des fonctions qu'Asahi Linux peut utiliser… et que macOS ne supporte pas, ce qui peut sembler étonnant.

Des fonctions liées à la virtualisation

Le premier point dans sa liste est le « Virtual GIC Interrupt Controller », présent dès les puces M1 mais inutilisé. GIC signifie Generic Interrupt Controller et c'est une fonction liée à la virtualisation dans les CPU ARM. Très schématiquement, une interruption est un signal émis par le matériel qui va autoriser l'arrêt du programme en cours pour exécuter une tâche importante. Le vGIC permet de transférer les interruptions directement vers la machine virtuelle pour de meilleures performances, mais les API d'Apple n'en profitent pas et passent par un traitement logiciel, plus long. Hector donne probablement une des raisons dans les réponses à son thread : la fonction a des bugs, qui sont pris en compte par GNU/Linux.

Le logo d'Asahi Linux.

Le second point est la Nested Virtualization, virtualisation imbriquée en français. Elle a été ajoutée dans les puces M2 et — comme son nom l'indique — elle autorise l'exécution d'une machine virtuelle dans une machine virtuelle. Elle a peu d'intérêt pour un usage grand public, mais est attractive dans le monde professionnel.

Le troisième point n'est pas lié à la virtualisation, mais à une faille connue : Spectre v2. Les puces M2 contiennent en effet un mécanisme pour éviter les attaques reliées à la Branch Target Injection (BTI). Essayons de faire simple, même si ça ne l'est pas : les processeurs modernes sont dits « OoO », c'est-à-dire Out-of-Order. De façon très basique, ils n'exécutent pas les instructions dans l'ordre d'arrivée, mais tentent de les placer dans le meilleur ordre possible et (surtout) s'efforcent de prédire les instructions suivantes pour améliorer le rendement.

Apple a oublié de mentionner certaines fonctions.

Cette prédiction de branchement est efficace dans une grande partie des cas : le processeur prédit les bonnes instructions et peut les exécuter rapidement. Mais sans entrer dans les détails, certaines des prédictions ratées permettent à un programme malicieux de lire des données qui ne lui sont pas destinées en utilisant des défauts de ce mécanisme et les failles Spectre se basent sur ce point.

Avec les M2, Apple a intégré une correction matérielle qui empêche l'exploitation de ce type de faille, mais le noyau de macOS n'en profite pas encore, contrairement à Fedora Asahi. Hector Martin pointe aussi le fait que le moteur JavaScriptCore d'Apple ne gère pas la fonction, alors même qu'il s'agit d'un type d'application extrêmement sensible à ce type de problèmes. Hector explique d'ailleurs que l'utilisation du BTI avec JavaScriptCore pose des soucis avec Fedora Asahi précisément à cause de l'absence de prise en charge.

Apple garde parfois certaines fonctions pour plus tard

Les exemples donnés sont intéressants, parce qu'ils sont variés. Dans le premier cas, l'absence est vraisemblablement liée aux bugs de la fonction1. Pour le troisième, le développement des puces et ceux des logiciels qui pourraient en profiter ne sont pas nécessairement synchronisés.

Dans la pratique, les développements liés au matériel n'ont pas les mêmes contraintes que ceux attachés aux OS et les calendriers des sorties matérielles ne sont pas les mêmes que ceux des sorties logicielles. Nous pouvons supposer que la virtualisation imbriquée sera peut-être mise en avant avec le futur Mac Pro ARM. Accessoirement, certaines fonctions liées à la virtualisation font probablement partie du jeu d'instruction lui-même, ce qui oblige Apple à les gérer pour des raisons contractuelles.

Enfin, il faut rappeler qu'Apple a parfois tendance à garder des fonctionnalités en réserve pour le futur. L'exemple le plus récent est celui du HomePod mini : le capteur de température et d'humidité existe depuis le lancement (2020) mais n'a été activé que cette année.

Le HomePod mini mesure l

Le HomePod mini mesure l'humidité et la température avec la version 16.3 de son logiciel


  1. Les CPU peuvent avoir des bugs, qui sont soit corrigés logiciellement avec ce qu'on appelle du microcode, soit avec une nouvelle révision de la puce.  ↩︎

avatar Scooby-Doo | 

@MacG,

Article de fond très intéressant.

Pourquoi Apple se prive de ces fonctions ?

J'ai bien compris que les calendriers matériel et logiciel ne sont pas synchrones.

Okay mais Apple Silicon M1 est sorti officiellement il y a longtemps maintenant.

Et ce processeur (SoC) était disponible chez Apple en interne pour ses développeurs bien avant encore...

« L'exemple le plus récent est celui du HomePod mini : le capteur de température et d'humidité existe depuis le lancement (2020) mais n'a été activé que cette année. »

3 longues années en informatique, c'est presque une éternité (sans exagération).

Étrange !

avatar Sgt. Pepper | 

@Scooby-Doo

Cela peut aussi être lié à des problèmes juridiques (brevet ,…) qui peuvent prendre des années à être résolus.

avatar Scooby-Doo | 

Fort possible !

avatar marc_os | 

@ Scooby-Doo

> Pourquoi Apple se prive de ces fonctions ?

Qui dit qu'Apple se priverait de ces fonctions ?
S'ils n'utilisent pas des fonctions qu'ils ont implémentées eux-même, à priori je dirais qu'ils ont de bonnes raisons.

PS : Tu trouveras une piste dans l'article. Spectre.

avatar Scooby-Doo | 

Mais Marc, je lis toujours les articles avant de les commenter !

« Avec les M2, Apple a intégré une correction matérielle qui empêche l'exploitation de ce type de faille, mais le noyau de macOS n'en profite pas encore, contrairement à Fedora Asahi. »

Que la correction soit matérielle pour Apple et que le noyau de macOS n'en profite pas a contrario de Fedora Asahi, cela ne vous interpelle pas ?

J'ai la faiblesse de croire qu'Apple a une meilleure connaissance de ses SoC et des moyens humains et financiers supérieurs à l'équipe de Fedora !

Me trompe-je ?

avatar marc_os | 

@ Scooby-Doo

Pardon pour le PS inutile dans mon commentaire.
Mais on peut imaginer ce qu'on veut, à priori comme je le disais, je dirais que les devs d'Apple savent ce qu'ils font.
Cet article est très intéressant, c'est sûr, mais voilà, je n'en tirerais aucune conclusion ni même aucune question hâtive sur le pourquoi du comment dans ce cas précis. (Je vois trop de gens faire des procès d'intention gratuits concernant Apple, parce que ça fait du buzz, c'est peut-être pourquoi je réagis parfois un peu dans ce genre de situation.)

avatar koko256 | 

@Scooby-Doo

Ils ne l'utilisent pas car leurs ingénieurs sont moins bons que la communauté open source en OS (et ce ne sont pas que des geeks bénévoles).

avatar occam | 

@koko256

🤔 "leurs ingénieurs sont moins bons que la communauté open source en OS"

Objectivement, sur quelles bases et selon quels critères ?

On peut être en désaccord avec la politique commerciale d’Apple. On peut critiquer ses objectifs et ses décisions sur fond de marketing.
Mais pour mettre en cause ainsi, de façon péremptoire, la compétence et la qualité professionnelle des ingénieurs, il faudrait des arguments étayés et détaillés.
Vous trouveriez en moi un lecteur attentif si vous étiez en mesure de les fournir. Je suis certain de ne pas être le seul.

avatar MacPlusEtc | 

@occam

"Vous trouveriez en moi un lecteur attentif si vous étiez en mesure de les fournir. Je suis certain de ne pas être le seul."

😏

avatar koko256 | 

@occam

Ce n'est pas la peine de mettre péremptoire dès que quelqu'un n'est pas d'accord avec vous. C'est mon avis d'expert en systèmes d'exploitation quand je compare Linux, BSD, Darwin et Windows et que je regarde les évolutions depuis les années 90. Les améliorations en système viennent très souvent du libre (beaucoup de BSD, un peu d'indépendants, mais quelques éléments de R&D privés tout de même). Faire des OS est très difficile et peu en sont capables. C'était le cas d'Apple du temps de Jobs et ses acolytes mais je n'ai pas trop vu d'exemples d'innovations au niveau de l'OS par Apple depuis un moment mais au contraire des erreurs inquiétantes (comme l'appli Raccourcis qui a accès au fichiers systèmes alors que les applications de scripts sont les premières à sandboxer).
Et cela n'a rien à voir avec la politique d'Apple (dont je me fiche, la preuve j'ai un iPad 10).

avatar koko256 | 

@occam

Et quant à "Mais pour mettre en cause ainsi, de façon péremptoire, la compétence et la qualité professionnelle des ingénieurs"
Je ne remets pas en cause leur qualité. Je dis que ce ne sont pas les meilleurs. Vous connaissez la différence entre "le meilleur" et "bon" ?
La logique et la France... Bourbaki doit se retourner dans sa tombe virtuelle...

avatar Captain Bumper | 

@Scooby-Doo : parce que contrairement à ce que bcp pensent, ce genre de fonctions, aux implications multiples et profondes ne se développent pas en un claquement de doigts, que leur développement peuvent avoir des conséquences néfastes et non prévues sur d'autres briques logicielles importantes (failles...) de l'OS, qu'il faut tester, qu'il faut synchroniser les calendriers de développement matériel/OS (c'est quand même bien expliqué dans l'article) : l'équipe OS peut avoir besoin de modifications matérielles pour gérer un truc quelconque mais indispensable, mais au même moment l'équipe matériel a peut-être mieux à faire, plus urgent à faire, etc. etc. Et l'équipe OS n'a pas non plus que ça à faire, elle a sûrement des développements bien plus urgents à réaliser, de fonctions plus importantes pour les objectifs principaux poursuivies par Apple pour son OS. Enfin il faut aussi que le temps et l'argent dépensés à développer ces fonctions aient un intérêt économique pour Apple dans les mois et années à venir... Et ce n'est peut-être pas des fonctions indispensables pour les cibles qu'Apple vise... Bref, la vie d'entreprise/d'entrepreuneur...

avatar demolay | 

Cela laisse la porte ouverte à des serveurs équipés de puces M1-2 afin de virtualiser plusieurs machines dessus, le tout équipé d’un hyperviseur type 1 sous Linux (proxmox par exemple)

avatar Crash System | 

@demolay

C’est un rêve ça !! Un MM M1 16gb avec proxmox pour gérer tout les projets qui requiert la virtualisation !

avatar fabian | 

Et de faire tourner WSL2 dans Windows 11 ARM pour les M2

avatar Scooby-Doo | 

Et depuis WSL2 lancer Fedora Asahi !!!

👍😁

avatar fredsoo | 

Ces mecs font un travail énorme et d’une qualité remarquable 👍🏻😎

CONNEXION UTILISATEUR