[pour les bcc: c'est pour info...]

Salut les Free Frenchs,

Dans la famille � je veux simplifier l'installation et assurer la d�tection
automatique du mat�riel �, j'ai la famille PCI.

Pour un noyau Linux, par exemple, et sur du mat�riel r�cent, que les pilotes
soient pr�sents (dans le noyau ou en modules) ou pas, la d�tection de tous
les p�riph�riques connect�s est possible, simplement parce que la proc�dure
est pr�vue par la norme.
Sur du mat�riel neuf, tant les contr�leurs IDE que l'AGP sont impl�ment�s
"sur" du PCI, ce qui signifie que d�s lors que l'on a les infos PCI, on est
pas loin d'avoir une image presque exhaustive du mat�riel (oui ! la carte son
est ISA etc... : je simplifie).

Les p�riph�riques sont identifiables par des en-t�tes de 256 octets, dont
l'emplacement en m�moire et le mode d'acc�s reposent sur des appels firmware
(bios32). En passant en revue les en-t�tes, on peut donc identifier le
mat�riel via des _nombres_. Chaque fabricant (vendeur) de mat�riel poss�de
un identifiant unique (exemple : Intel -> 0x8086 --- nombre bien �videmment
choisi au hasard par Intel :-^) [dans la suite toutes les
valeurs sont en hexa]. De m�me chaque p�riph�rique est identifi� par 2
octets, et appartient � une classe de mat�riel qui est d�termin�e par un
octet sur les 3 qui d�crivent les caract�ristiques li�es, etc...

Position du probl�me:

1) Les nombres ne sont pas sp�cialement � causants �; donc en r�gle
g�n�rale, on les transforme � destination de l'utilisateur en affichant des
cha�nes de caract�res. Mais on peut s'en passer.

        Note: vous avez une option de compilation du noyau qui permet de choisir
        de compiler la base de donn�es permettant cet affichage ou pas; cela
        n'influe strictement en rien sur le fonctionnement du noyau : c'est
        cosm�tique. En ne compilant pas la base (incompl�te d'ailleurs), on
        �conomise 80ko dans le noyau
        -> ne pas compiler, c'est l'option que j'ai choisie pour l'installation,
        �tant donn� de toute fa�on que je ne suis pas � user friendly � ;)
        
2) Toutes les informations sont disponibles d�s lors que l'on a compil� le
noyau avec le support du syst�me de fichiers virtuel `proc'. Mais les infos
sont affich�es plusieurs fois. Sous forme plus ou moins lisible (d�pend de
1), dans /proc/pci, sous une forme beaucoup plus concise sous
/proc/bus/pci/devices.

Question: a-t-on besoin des infos "humainement lisibles" ?
R�ponse : si on veut faire une d�tection automatique : non.

Question: les infos dans /proc/pci et dans /proc/bus/pci/devices sont-elles
les m�mes ?
R�ponse: ...non. Il y en a � la fois plus dans le dernier, mais il en manque
une : la classe de mat�riel.

Donc la question: quelqu'un sait-il si certains utilitaires "attaquent"
directement /proc/bus/pci/devices et si l'adjonction de l'info sur la classe
pourrait provoquer un probl�me ?

Pour rentrer un peu plus dans les d�tails (je sais, c'est passionnant, mais
c'est parce que je raconte bien :-^), la structure des en-t�tes vous pouvez
la trouver dans les sources du noyau l�:

include/linux/pci.h

La base de donn�es (incompl�te) l� :

include/linux/pci.ids

Le programme listant les infos dans proc, l�:

drivers/pci/proc.c

et nous d�couvrons alors, si je prends un extrait de /proc/bus/pci/devices
sur ma machine :


0050    10b79055        b       0000f401        fedffc00        00000000        
00000000        00000000        00000000        00000000

Qui signifie (car ils sont joueurs, ils ont concat�n� plusieurs infos):

[Rappel : toutes les valeurs sont en hexa !!!]

0050 bus/fonction
10b79055 vendeur/p�riph�rique
b irq

Les 7 valeurs suivantes correspondent aux ressources.

Comment utiliser ces valeurs ?

Dans l'exemple,le vendeur est (0x)10b7. Vous vous connectez � :
http://www.yourvote.com/pci/

vous rentrez l'identifiant et vous d�couvrez qu'il s'agit d'une 3Com.
Le p�riph�rique (0x)9055 correspond � une 3C905B-TX (� noter que chez 3Com
les 3 premiers chiffres vous donnent d�j� une bonne indication de la nature
du p�riph�rique).

R�sum�:
-------
1) Pour des raisons d'efficacit� (pouvoir extraire rapidement l'info sur une
certaine classe de p�riph�rique), je souhaite modifier l'affichage de
/proc/bus/pci/devices. C'est facile, mais quelqu'un saurait-il quels sont
les utilitaires qui se reposent sur ce pseudo fichier, histoire que je
n'aille pas tout casser;

2) Pourquoi ne pas compiler la base de donn�es avec Linux :
        - parce qu'elle est �norme (celle fournie avec Linux est incompl�te)
        - parce qu'elle �volue dans le temps, et vous n'allez pas recompiler un
          noyau juste pour le plaisir d'avoir une base plus � jour
        - parce que l'info est utile surtout � l'installation, et qu'il suffit
          de communiquer les identifiants (entiers) � un serveur
          disposant/pouvant attaquer (d')une base de donn�es pour trouver votre
          bonheur

Corollaire:
-----------

Debian n'avait pas d'outil de d�tection automatique du mat�riel. D�sormais
il l'a : vous. � Dites-moi ce dont vous avez besoin, et je vais vous expliquer
comment vous allez vous en passer...�

A+
-- 
Thierry LARONDE, Centre de Ressources Informatiques, Archamps - France
http://www.cri74.org/


Répondre à