Florent Peterschmitt

Xen et le QuelquechoseBridge d'Intel

Pour le projet tuteuré de cette année de licence pro Administration de Systèmes, Réseaux et Applications à base de Logiciels Libres, nous sommes trois à travailler sur la virtualisation. J'ai une Gentoo comme machine personnelle et un SandyBridge en guise de processeur/carte graphique, ainsi qu'une nVidia collée aux fesses de la carte Intel embarquée dans le processeur.

Le sujet

La carte nVidia n'est pas une carte dédiée, pour l'utiliser il faut lui demander de calculer un rendu, qui sera donné à la carte Intel qui refilera ensuite l'image à l'écran (pour simplifier). Cette carte nVidia, quand bien même inactive, consomme masse d'énergie pour rien sous Linux. Il existe un module permettant de la désactiver, faisant partie du projet bumblebee. Ce module s'appelle bbswitch. Vous le chargez, un :

echo "OFF" > /proc/acpi/bbswitch

et voilà que la carte est désactivée, votre ordinateur retrouvant sa sérénité.

Le problème

Le dæmon xend ne semble pas aimer cette extinction forcée et voici ce qu'on peut trouver dans les logs :

PciDeviceParseError: Looped capability chain: 0000:01:00.0
[2013-03-22 22:54:17 8579] INFO (SrvDaemon:227) Xend stopped due to signal 15.

0000:01:00.0 correspond à l'adresse PCI de la carte nVidia. Visiblement, xend tente d'en tirer des informations et il semblerait que la désactivation de la carte soit à l'origine de ce problème.

Solution ou « workaround »

Fort simple, il ne faut pas désactiver la carte avant le démarrage de xend. Le chargement du module ne gêne aucunement. Il est possible de désactiver à nouveau la carte après le démarrage de xend, pour le plus grand bonheur de tous ceux ayant une carte aussi moisie que celle-ci.

Persistance

Dans /etc/modprobe.d/bbswitch.conf :

options bbswitch load_state=0 unload_state=1

Cela permet de charger de module en lui disant de désactiver la carte au chargement, et de la réactiver au déchargement. Il faut aussi mettre dans le fichiers /etc/modules-load.d/bbswitch.conf :

bbswitch

Bon et bien entendu, peu importe le nom du fichier, il faut juste qu'il porte l'extention .conf.