Outils développeurActualité

Intel Xe : arrondir la limite VRAM dans le bon sens

Sur cette page
  1. Suivre la frontière mémoire
  2. Un petit exemple rend l’erreur visible
  3. Tester la propriété, pas le nom de la fonction
  4. Garder l’anecdote IA à sa place

Un correctif intégré par Linus Torvalds le 21 août en UTC empêche le pilote Intel Xe de proposer une zone flat CCS réservée à l’allocateur VRAM. Sur la carte Battlemage G21 décrite, le chevauchement corrompait une table de pages et bloquait le bureau.

Carte mémoire fictive originale : une réserve débutant à 130 Kio impose d’exclure la page 128-132 Kio. Arrondir la fin utilisable vers le bas à 128 Kio la protège.
Carte mémoire fictive originale : une réserve débutant à 130 Kio impose d’exclure la page 128-132 Kio. Arrondir la fin utilisable vers le bas à 128 Kio la protège. Graphique : PeopleAreGeek. Source des données.
Agrandir l’image

Suivre la frontière mémoire

Le commit et son explication décrivent un chevauchement entre des métadonnées de compression et une mémoire proposée aux allocations ordinaires. Sur la G21 de 16 Gio de Torvalds, une table de pages Mesa était touchée ; GDM redémarrait après l’échec du compositeur.

Le diff réel remplace l’arrondi supérieur à 128 Kio par un arrondi inférieur à 4 Kio. Il remplace aussi une vérification d’égalité par un contrôle de non-chevauchement entre la zone CCS et GSM. Résumer tout le patch à deux noms de fonction masque ces changements.

Un petit exemple rend l’erreur visible

Imaginons une carte mémoire fictive où le stockage réservé commence à 130 Kio. Un allocateur utilisant des pages de 4 Kio peut employer les pages entières situées sous 128 Kio. La page allant de 128 à 132 Kio chevauche la frontière et doit être exclue.

Arrondir 130 Kio vers le haut sur un alignement de 128 Kio donne 256 Kio. Présenter cette valeur comme fin utilisable inclut à tort l’intervalle réservé de 130 à 256 Kio. L’arrondi inférieur sur 4 Kio donne 128 Kio : on sacrifie 2 Kio autrement libres pour conserver des pages entières sûres. Ces petites adresses illustrent la propriété recherchée ; ce ne sont pas celles de la G21.

La relation nécessaire est fin utilisable publiée ≤ début réel de la réserve. Ce n’est pas la même question que dimensionner un tampon assez grand pour une demande, où arrondir sa taille vers le haut est souvent approprié.

Tester la propriété, pas le nom de la fonction

Pour cet allocateur fictif, un jeu de tests utile place la réserve exactement à 128 Kio, un octet au-dessus et un octet au-dessous. Les dernières limites sûres de pages entières valent respectivement 128 Kio, 128 Kio et 124 Kio. Des adresses déjà alignées ne suffiraient pas à faire apparaître la différence.

La méthode de relecture consiste à préciser qui possède la frontière, si la borne est incluse ou exclue, et quel alignement exige le consommateur. Une adresse arrondie d’apparence plausible ne prouve pas l’absence de chevauchement.

Garder l’anecdote IA à sa place

Torvalds rapporte 24 patches d’instrumentation et 18 démarrages, reconnaît l’aide d’une IA et indique qu’elle a proposé plusieurs fois d’abandonner. C’est le récit d’un débogage assisté, pas un benchmark comparatif de modèles de programmation. Les éléments durables sont le mécanisme de panne reproduit et le correctif intégré. PeopleAreGeek n’a pas reproduit cette panne GPU.

Revue du 8 septembre : vérification des sources primaires, correction des affirmations et remplacement de l’illustration.