Le HOWTO _P_l_u_g_-_a_n_d_-_P_l_a_y pour Linux
 David S.Lawyer    [email protected]
 v0.08, 28 Novembre 1999

 Aide � l'utilisation et � la compr�hension des p�riph�riques Plug-and-
 Play.  Comment rendre votre syst�me Linux apte � g�rer le Plug-and-
 Play.
 ______________________________________________________________________

 Table des mati�res
























































 1. Introduction

    1.1 Copyright, Marques d�pos�es, Limitation de garantie & Cr�dits
       1.1.1 Copyright
       1.1.2 Marques d�pos�es
       1.1.3 Limitation de garantie
    1.2 Pour le futur : Vous pouvez contribuer
    1.3 Nouvelles versions de cet HOWTO

 2. Que devrait faire le PnP : Allouer les "Ressources du bus"

    2.1 En quoi consiste le
    2.2 Comment un ordinateur trouve-t-il les p�riph�riques (et inversement)
    2.3 Adresses d'E/S etc.
    2.4 Les IRQ, vue d'ensemble
    2.5 Les canaux DMA
    2.6 Espace m�moire
    2.7 Les "ressources" pour le p�riph�rique et son pilote
    2.8 Le  probl�me
    2.9 Le

 3. La solution

    3.1 Introduction au
    3.2 Comment cela fonctionne-t-il ? (explication simplifi�e)
    3.3 D�marrage du PC
    3.4 Les bus
    3.5 Linux doit mieux prendre en compte le

 4. Configuration d'un BIOS PnP

    4.1 Avez-vous un syst�me d'exploitation PnP ?
       4.1.1 Cohabitation avec Windows9x
    4.2 Comment doivent �tre contr�l�es les ressources du bus ?
    4.3 R�initialiser la configuration ?

 5. Comment agir avec les cartes PnP

    5.1 Introduction
    5.2 D�sactiver le
    5.3 Le BIOS configure le PnP
       5.3.1 Introduction � l'utilisation du BIOS pour configurer le
       5.3.2 La base de donn�es ESCD du BIOS
       5.3.3 Utilisation de Windows pour param�trer l'ESCD
       5.3.4 Ajout d'un nouveau p�riph�rique (sous Linux ou sous Windows)
    5.4 Isapnp
    5.5 Utilitaires PCI
    5.6 Corriger le noyau pour rendre Linux compatible PnP
    5.7 Configuration par Windows
    5.8 Configuration par les pilotes de p�riph�riques
    5.9 Logiciels et documents

 6. Communication de la configuration au pilote

    6.1 Introduction
    6.2 Pilote du port s�rie : setserial
    6.3 Pilotes de cartes son
       6.3.1 OSS-Lite
       6.3.2 OSS (Open Sound System) et ALSA

 7. Quelle est ma configuration actuelle?

    7.1 Comment mes pilotes de p�riph�riques sont-ils configur�s ?
    7.2 Comment mes p�riph�riques sont-ils configur�s ?

 8. Appendice
    8.1 Adresses
       8.1.1 Adresses de configuration sur le bus ISA (Port de lecture etc.)
       8.1.2 Champs d'adresses
       8.1.3 Espace d'adresses
       8.1.4 V�rification des champs d'adresses (Test des conflits d'adresses E/S ISA)
       8.1.5 Communication directe via la m�moire.
    8.2 Les interruptions - Description d�taill�e.
    8.3 Interruptions PCI
    8.4 Isolation


 ______________________________________________________________________

 Adaptation fran�aise : Albert-Paul Bouillot [email protected]

 DD��ffiinniittiioonn :: _P_l_u_g_-_a_n_d_-_P_l_a_y (Installez-et-Utilisez),PPnnPP.  C'est du
 jargon. C'est un mat�riel ou un logiciel, qui, apr�s avoir �t�
 install� ("plugged in"), peut �tre utilis� imm�diatement ("played
 with"), par opposition au mat�riel ou au logiciel qui n�cessite d'�tre
 configur�.


 11..  IInnttrroodduuccttiioonn

 11..11..  CCooppyyrriigghhtt,, MMaarrqquueess dd��ppooss��eess,, LLiimmiittaattiioonn ddee ggaarraannttiiee && CCrr��ddiittss

 11..11..11..  CCooppyyrriigghhtt

 Copyright (c) 1998, 1999 de David S. Lawyer.

 Vous pouvez librement copier ou distribuer (vendre ou donner) ce
 document, dans n'importe quel format.  Pour les corrections et les
 modifications mineures, prenez contact avec le gestionnaire. Vous
 pouvez en r�aliser des travaux d�riv�s et les distribuer � condition
 de :


 1. Envoyer le travail d�riv� (dans le format le plus appropri�, par
    exemple sgml) au LDP (Projet de Documentation Linux) ou �quivalent
    pour en assurer la diffusion sur Internet. Si ce n'est pas le LDP,
    indiquez-lui l'endroit o� il est disponible. Sauf pour les
    traductions, envoyez une copie de ce travail � la derni�re url
    indiqu�e du gestionnaire ;

 2. �tablir une licence dans l'esprit de celle-ci ou utiliser la
    licence GPL. Inclure une notice de copyright et au moins un
    pointeur sur la licence retenue ;

 3. Reconna�tre les m�rites des auteurs et contributeurs importants.

 Si vous envisagez de faire un travail, autre qu'une traduction, �
 partir de ce document, discutez de votre projet avec le gestionnaire
 actuel.


 11..11..22..  MMaarrqquueess dd��ppooss��eess

 Si certains mots sont des marques d�pos�es, le contexte doit en mettre
 l'appartenance en �vidence.  Par exemple "MS Windows" (ou simplement
 "Windows") implique que "Windows" appartient � Microsoft.


 11..11..33..  LLiimmiittaattiioonn ddee ggaarraannttiiee

 Une grande partie des informations contenues dans cet HOWTO ont �t�
 obtenues d'Internet, de livres qui peuvent �tre erron�s ou obsol�tes
 etc.  Bien que je n'aie pas essay� de vous induire en erreur
 sciemment, il peut y avoir un certain nombre d'inexactitudes dans ce
 document. Ayez l'obligeance de me le faire savoir.  Dans la mesure o�
 cette documentation est gratuite, il est bien �vident que ni moi, ni
 les auteurs pr�c�dents (ni le traducteur ;-) ) ne pourront �tre tenus
 pour l�galement responsables des erreurs �ventuelles.


 11..22..  PPoouurr llee ffuuttuurr :: VVoouuss ppoouuvveezz ccoonnttrriibbuueerr

 Merci de me faire part de toutes erreurs dans les faits, les opinions,
 la logique, l'orthographe et la grammaire, la clart�, les liens etc.
 que vous pourrez rencontrer. Mais d'abord, v�rifiez que le document ne
 soit pas trop ancien et que vous poss�dez la derni�re version.  Merci
 de m'envoyer toutes les infos que vous pensez devoir concerner ce
 document.

 Je n'ai pas �tudi� en d�tail ni les outils "isapnptools" ni les
 correctifs du noyau de David Howells (mais j'envisage de le faire). De
 m�me, je ne comprends pas totalement comment le BIOS configure le PnP
 (cela d�pend de la version du BIOS) ni comment Windows9x met � jour
 l'ESCD.  Donc, cet HOWTO est encore incomplet et peut se r�v�ler
 inexact (faites-moi savoir o� sont les erreurs). Dans cet HOWTO j'ai
 parfois utilis�;nbsp;?? pour indiquer que je ne connais pas vraiment
 la r�ponse.


 11..33..  NNoouuvveelllleess vveerrssiioonnss ddee cceett HHOOWWTTOO

 Les nouvelles versions du Plug-and-Play-HOWTO devraient �tre
 disponibles � peu pr�s tous les mois pour consultation et/ou
 t�l�-chargement sur les sites miroirs du LDP.  Pour obtenir une liste
 de ces sites, consultez : <http://metalab.unc.edu/LDP/mirrors.html>.
 Diff�rents formats sont disponibles. Si vous voulez rapidement
 v�rifier la date de la derni�re version, regardez � :
 <http://metalab.unc.edu/LDP/HOWTO/Plug-and-Play-HOWTO.html>.


 22..  QQuuee ddeevvrraaiitt ffaaiirree llee PPnnPP :: AAlllloouueerr lleess ""RReessssoouurrcceess dduu bbuuss""

 22..11..  EEnn qquuooii ccoonnssiissttee llee PPlluugg--aanndd--PPllaayy  ((PPnnPP)) ??

 En simplifiant beaucoup, le _P_l_u_g_-_a_n_d_-_P_l_a_y est une m�thode pour
 indiquer automatiquement au logiciel (pilotes de p�riph�riques) o�
 trouver diff�rents �l�ments mat�riels (p�riph�riques) tels que modems,
 cartes r�seau, cartes son etc. La t�che du _P_l_u_g_-_a_n_d_-_P_l_a_y consiste �
 mettre en correspondance les p�riph�riques physiques et les logiciels
 (pilotes de p�riph�riques) qui les font fonctionner et � �tablir un
 canal de communication entre chaque p�riph�rique et son pilote. Pour
 ce faire, le PnP alloue les "ressources bus" suivantes � la fois aux
 pilotes et au mat�riel : adresses d'E/S, IRQ, canaux DMA (uniquement
 pour le bus ISA), r�gions m�moire. Si vous ne comprenez pas ce que
 signifient ces quatre notions, lisez les paragraphes suivants.  Apr�s
 que ces ressources du bus ont �t� assign�es (et si les pilotes
 ad�quats sont install�s), les noms des unit�s p�riph�riques dans le
 r�pertoire /dev sont pr�ts � �tre utilis�s.

 Cette m�thode d'affectation de certaines ressources du bus est
 quelquefois d�sign�e par le terme "configuration", mais c'est
 uniquement d'une configuration de bas niveau qu'il s'agit. M�me
 lorsque le _P_n_P est utilis� au maximum, une bonne partie de la
 configuration des p�riph�riques est r�alis�e par autre chose que le
 _P_n_P. Par exemple, pour la configuration du modem, une "cha�ne de
 caract�res d'initialisation" est envoy�e au modem � travers le "canal"
 adresse d'E/S. Cette "cha�ne de caract�res d'initialisation" n'a rien
 � voir avec le PnP bien que le "canal" utilis� pour l'envoyer ait �t�
 allou� par le PnP. Le r�glage de la vitesse (et de beaucoup d'autres
 param�tres) d'un port s�rie est r�alis� en envoyant, de programmes
 ex�cut�s par l'utilisateur (souvent automatiquement, au d�marrage),
 des messages au pilote de p�riph�rique. Et cette configuration n'a
 rien � voir avec le _P_n_P. Donc, quand on parle de la configuration
 effectu�e par le_P_n_P, cela ne concerne qu'un certain type de
 configuration.  Alors que d'autres documentations (telle celle de MS
 Windows) parlent simplement de "ressources" quand il s'agit des
 ressources du bus, j'ai volontairement utilis� le terme "ressources du
 bus" pour les distinguer de la multitude d'autres ressources
 disponibles.


 22..22..  CCoommmmeenntt uunn oorrddiinnaatteeuurr ttrroouuvvee--tt--iill lleess pp��rriipphh��rriiqquueess ((eett iinnvveerrssee��
 mmeenntt))

 Un ordinateur est constitu� d'un CPU/processeur qui effectue les
 traitements, et de m�moire pour stocker les programmes et les donn�es.
 De plus, il y a un certain nombre de p�riph�riques tels que diff�rents
 types d'unit� de disques, une carte vid�o, un clavier, des cartes
 r�seau, des cartes modem, des cartes son, des ports s�rie et parall�le
 etc.  Il y a �galement une alimentation pour fournir l'�nergie
 n�cessaire, diff�rents bus sur une carte m�re pour connecter les
 p�riph�riques au CPU, ainsi qu'un bo�tier pour contenir le tout.

 Dans les temps anciens, la plupart des p�riph�riques avaient leur
 propre carte d'interface (circuits imprim�s). Aujourd'hui, en plus des
 cartes d'interface, beaucoup de "p�riph�riques" sont de petits
 circuits mont�s de fa�on permanente sur une carte unique appel�e
 "carte m�re". Les cartes qui se connectent sur la carte m�re peuvent
 contenir plus d'un p�riph�rique.  Les circuits m�moire sont
 quelquefois �galement consid�r�s comme des p�riph�riques mais ne sont
 pas _p_l_u_g_-_a_n_d_-_p_l_a_y au sens de cet HOWTO.

 Pour qu'un syst�me informatique fonctionne correctement, chaque unit�
 p�riph�rique doit �tre sous le contr�le de son "pilote de
 p�riph�rique" Ce logiciel fait partie du syst�me d'exploitation (ou
 d'un module) et tourne sur le CPU. Les pilotes de p�riph�riques sont
 associ�s � des "fichiers sp�ciaux" dans le r�pertoire /dev, bien que
 ce ne soient pas vraiment des fichiers. Ils ont des noms tels que hda1
 (premi�re partition sur le disque dur a), ttyS0 (premier port s�rie),
 eth1 (deuxi�me carte Ethernet) etc. Pour rendre les choses plus
 compliqu�es, le pilote de p�riph�rique s�lectionn�, disons pour eth1,
 d�pendra du type de carte Ethernet que vous aurez. Donc, eth1 ne peut
 pas �tre affect� � n'importe quel pilote Ethernet, mais � un certain
 pilote qui fonctionnera avec le type de carte que vous avez install�.
 Pour g�rer un p�riph�rique, le CPU (sous le contr�le du pilote de
 p�riph�rique), envoie des commandes (et des donn�es) vers les
 diff�rents p�riph�riques et en lit les infos. Pour cela, chaque pilote
 de p�riph�rique doit conna�tre l'adresse utilis�e pour le p�riph�rique
 qu'il g�re.  Conna�tre une telle adresse correspond � mettre en oeuvre
 un canal de communication, m�me si le "canal" physique est en r�alit�
 un bus de donn�es dans le PC qui est partag� avec pratiquement tout le
 reste.

 Le canal de communication est en r�alit� un peu plus compliqu� que la
 description qui en est faite ci-dessus. Une "adresse" est en r�alit�
 un ensemble d'adresses et il y a un canal inverse (les interruptions)
 qui permet aux p�riph�riques d'envoyer, en urgence, une requ�te de
 "demande d'aide" au pilote de p�riph�rique.


 22..33..  AAddrreesssseess dd''EE//SS eettcc..

 Les PC utilisent trois espaces d'adresses : m�moire principale, E/S,
 et configuration (uniquement dans le cas du bus PCI). Les trois types
 d'adresses partagent le m�me bus � l'int�rieur du PC. Mais la tension
 sur certains fils sp�cialis�s indique � tous les p�riph�riques � quel
 "espace" une adresse appartient : E/S, m�moire centrale, ou
 configuration.  Consultez ``Adresses'' pour plus de d�tails. Les
 p�riph�riques sont normalement situ�s dans l'espace d'adressage E/S
 bien que, maintenant ils utilisent l'espace d'adressage m�moire
 centrale. Une adresse E/S (Entr�e/Sortie) (ou I/0, pour Input/Output)
 est quelquefois appel�e simplement "I/O", "IO", "i/o" ou "io". Le
 terme "port d'E/S" (ou "I/O port") est �galement utilis�.  Il y a deux
 �tapes principales pour allouer les adresses d'E/S (ou d'autres
 ressources telles que les interruptions) :


 1. Affecter l'adresse d'E/S etc. sur la carte (dans l'un de ses
    registres)

 2. Communiquer cette adresse d'E/S etc. au pilote.


 Le processus en deux �tapes ci-dessus ressemble un peu au probl�me de
 la recherche du num�ro de la maison de quelqu'un dans une rue. Vous
 devez obtenir (et noter) le num�ro de la maison et quelqu'un doit
 avoir appos� le num�ro sur la maison afin qu'on puisse le trouver.
 Dans les ordinateurs, le pilote de p�riph�rique doit obtenir
 l'adresse, et le mat�riel du p�riph�rique doit installer la m�me
 adresse dans l'un de ses registres. Ces deux op�rations doivent �tre
 r�alis�es, mais certains font l'erreur de ne r�aliser que l'une de ces
 deux �tapes et se demandent ensuite pourquoi l'ordinateur ne peut pas
 trouver le p�riph�rique. Par exemple, ils utiliseront "setserial" pour
 attribuer une adresse � un port s�rie, sans penser que cela indique
 seulement au pilote quelle est cette adresse. Cela ne s�lectionne pas
 l'adresse physique du port s�rie lui-m�me. Si le port s�rie a, en
 r�alit�, une adresse diff�rente (ou pas d'adresse du tout)et que vous
 indiquiez une adresse erron�e a setserial, vous avez des probl�mes.

 Une autre obligation, �vidente, consiste a avoir param�tr� l'adresse
 d'E/S sur la carte avant que le pilote de p�riph�rique n'essaie
 d'utiliser cette adresse. Comme les pilotes de p�riph�riques d�marrent
 souvent d�s la mise en route de l'ordinateur, ils essaient quelquefois
 d'acc�der � une carte (pour tester sa pr�sence etc. ) avant que
 l'adresse ait �t� param�tr�e dans la carte par le programme de
 configuration _P_n_P. Ainsi, vous voyez des messages d'erreur indiquant
 qu'une carte est introuvable bien qu'elle soit pr�sente (mais son
 adresse n'a pas encore �t� attribu�e).

 Ce qui vient d'�tre dit dans les deux derniers paragraphes concernant
 les adresses d'E/S s'applique avec la m�me force aux autres
 ressources : ``Les IRQ --Vue d'ensemble'', ``Canaux DMA'',et ``Espace
 m�moire''.  C'est ce que nous allons expliquer dans les trois
 paragraphes suivants.


 22..44..  LLeess IIRRQQ,, vvuuee dd''eennsseemmbbllee

 Apr�s avoir lu ce paragraphe, il faut lire ``Interruptions --D�tails''
 pour avoir quelques d�tails compl�mentaires.  Ce qui suit est
 volontairement tr�s simplifi� : en plus de l'adresse, il faut
 �galement prendre en compte un num�ro d'interruption (tel que IRQ5),
 que l'on appelle �galement num�ro d'IRQ (IRQ = Interrupt ReQuest,
 demande d'interruption). Nous avons d�j� mentionn� plus haut que le
 pilote de p�riph�rique doit conna�tre l'adresse de la carte de fa�on �
 pouvoir communiquer avec elle. Mais comment se fait la communication
 dans l'autre sens ? Supposons que le p�riph�rique ait besoin de dire
 quelque chose � son pilote imm�diatement.  Par exemple, le
 p�riph�rique peut venir de recevoir une rafale d'octets destin�s �
 aller en m�moire centrale et que le p�riph�rique ait besoin de
 demander � son pilote de venir les r�cup�rer imm�diatement de sa
 m�moire tampon pratiquement pleine pour les transf�rer en m�moire
 centrale.

 Comment le p�riph�rique peut-il appeler son pilote � l'aide ? Il ne
 peut pas utiliser le bus de donn�es principal puisque celui-ci est
 d�j� en cours d'utilisation. Au lieu de cela, il lance un appel en
 mettant une certaine tension sur une ligne d'interruption (qui fait
 partie du bus). Il y a l'�quivalent de 16 lignes, et chacune d'elle
 correspond (indirectement) � un certain pilote de p�riph�rique.
 Chaque ligne poss�de un num�ro d'interruption (IRQ) unique (IRQ =
 Interrupt ReQuest). Le p�riph�rique doit envoyer son interruption sur
 la bonne ligne et le pilote de p�riph�rique doit attendre
 l'interruption sur cette ligne. Le num�ro d'IRQ stock� dans le
 p�riph�rique d�termine quelle est la ligne concern�e. Ce m�me num�ro
 d'IRQ doit �tre connu du pilote de p�riph�rique de mani�re que celui-
 ci sache quelle ligne d'IRQ le concerne.

 Lorsqu'un pilote de p�riph�rique re�oit une interruption (un appel �
 l'aide) il doit se renseigner sur la cause de l'�mission de cette
 interruption et effectuer les actions appropri�es pour y r�pondre. Sur
 un bus ISA chaque p�riph�rique a besoin d'un num�ro d'interruption
 unique (sauf que deux ports s�rie ou plus peuvent partager la m�me
 interruption depuis le noyau 2.2). Sur un bus PCI, le partage des
 interruptions est permis.


 22..55..  LLeess ccaannaauuxx DDMMAA

 Les canaux DMA ne concernent que le bus ISA.  DMA signifie "Acc�s
 Direct M�moire" (Direct Memory Access). Dans ce cas, le p�riph�rique
 est autoris� � prendre le pas sur le CPU pour le contr�le du bus et �
 transf�rer les octets directement en m�moire centrale. Normalement le
 CPU effectuerait un tel transfert en deux �tapes :

 1. Lecture de l'espace m�moire E/S du p�riph�rique et stockage de ces
    octets dans le CPU lui-m�me

 2. �criture de ces octets du CPU dans la m�moire centrale.

    Avec le DMA le processus de transfert des octets du p�riph�rique
    vers la m�moire centrale se d�roule normalement en une seule �tape.
    Les p�riph�riques doivent avoir cette capacit� int�gr�e dans le
    mat�riel, et donc tous les p�riph�riques ne fonctionnent pas en
    DMA. Pendant que le transfert DMA est en cours d'ex�cution, le CPU
    ne peut pas faire grand-chose puisque le bus principal est utilis�
    par ce transfert DMA.

 Le bus PCI n'a pas vraiment de DMA, mais plut�t quelque chose de
 mieux : le "contr�le du bus" (bus mastering). Cela fonctionne un peu
 comme le DMA et on l'appelle quelquefois DMA (par exemple, les unit�s
 de disques durs se nomment "UltraDMA"). Cette technique permet aux
 p�riph�riques de prendre temporairement le contr�le du bus et de
 transf�rer des octets exactement comme le fait le CPU lorsqu'il a le
 contr�le du bus. On n'utilise pas de num�ros de canaux car le bus PCI
 est constitu� de telle mani�re que le mat�riel sait quel est le
 contr�leur du bus actuel et quel est le p�riph�rique qui demande � le
 devenir. Il n'y a donc pas d'allocation de canaux DMA dans le cas d'un
 bus PCI.

 Quand un p�riph�rique, sur un bus ISA, d�sire effectuer un transfert
 DMA, il g�n�re une requ�te de DMA en utilisant une ligne sp�cialis�e
 comme pour une demande d'interruption. Le DMA aurait pu �tre r�alis�
 en utilisant les interruptions mais cela aurait introduit des retards,
 donc il est plus rapide d'utiliser un type d'interruption sp�cial
 connu sous le nom de requ�te DMA. Comme les interruptions, les
 requ�tes DMA sont num�rot�es de fa�on � identifier le p�riph�rique qui
 a envoy� cette requ�te. Ce num�ro est appel� canal DMA.  Puisque tous
 les transferts DMA utilisent le bus principal (et qu'un seul
 utilisateur ne peut utiliser ce bus � un instant donn�) ils utilisent
 tous le m�me canal, mais le num�ro de "canal DMA" sert � identifier
 qui est en train d'utiliser le "canal". Des registres existent sur la
 carte m�re pour stocker l'�tat courant de chaque "canal". Donc, pour
 �mettre une requ�te DMA, le p�riph�rique doit conna�tre son num�ro de
 canal DMA qui doit �tre stock� dans un registre sur le p�riph�rique
 physique.


 22..66..  EEssppaaccee mm��mmooiirree

 Certains p�riph�riques se voient assigner des adresses dans l'espace
 de la m�moire principale. On parle souvent de "m�moire partag�e" ou
 "d'E/S en zone m�moire". Quelquefois, il s'agit de m�moire morte (ROM)
 sur le p�riph�rique. A propos de ressources _P_n_P, on parle simplement
 de "m�moire". Un tel p�riph�rique peut �galement utiliser l'espace
 d'adressage E/S.

 Lorsque vous branchez une telle carte, en r�alit� vous connectez un
 module m�moire pour la m�moire principale. Cette m�moire peut �tre
 soit de la m�moire morte (ROM = Read Only Memory) soit de la m�moire
 partag�e. La m�moire partag�e est partag�e entre le p�riph�rique et
 l'Unit� Centrale (CPU qui ex�cute le pilote de p�riph�rique). Cette
 m�moire peut servir de moyen de "transfert" direct des donn�es entre
 le p�riph�rique et la m�moire principale. En r�alit�, ce n'est pas un
 transfert � proprement parler puisque le p�riph�rique met ses donn�es
 dans sa propre m�moire qui se trouve �tre �galement la m�moire
 centrale. � la fois la carte et le pilote de p�riph�rique doivent
 savoir o� cela se passe.  Il faut utiliser des adresses m�moires
 hautes de fa�on � �viter tout conflit avec les circuits m�moires des
 adresses basses (de la m�moire centrale) de votre ordinateur.

 Pour la ROM, c'est diff�rent. C'est comme un programme (peut-�tre le
 pilote de p�riph�rique) qui serait utilis� avec le p�riph�rique.
 Heureusement, il peut tourner avec Linux et pas seulement avec Windows
 ?? Il peut �tre n�cessaire de le dupliquer en m�moire centrale pour le
 faire tourner plus vite. Une fois dupliqu�, il n'est plus "en lecture
 seule".


 22..77..  LLeess ""rreessssoouurrcceess"" ppoouurr llee pp��rriipphh��rriiqquuee eett ssoonn ppiilloottee

 Donc, les pilotes de p�riph�riques doivent �tre "attach�s" d'une fa�on
 quelconque au mat�riel qu'ils contr�lent. Cela est r�alis� en
 fournissant des "ressources" (E/S, M�moire, IRQ, DMA) � la fois au
 p�riph�rique physique et au logiciel de pilotage. Par exemple, un port
 s�rie n'utilise seulement que 2 ressources (parmi les 4 possibles) :
 une IRQ et une adresse d'E/S. Ces deux valeurs doivent �tre fournies
 au pilote de p�riph�rique et au p�riph�rique physique. On donne alors
 un nom (tel que ttyS1) au pilote (et � l'unit� p�riph�rique
 correspondante) dans le r�pertoire /dev.  L'adresse et le num�ro d'IRQ
 sont stock�s dans un registre sur la carte du p�riph�rique physique
 (ou dans un circuit sur la carte m�re). Si l'on utilise de cavaliers,
 cette information est toujours stock�e dans la partie "mat�riel" du
 p�riph�rique (sur la carte etc.). Mais dans le cas du _P_n_P, la donn�e
 enregistr�e est g�n�ralement perdue lors de l'arr�t du PC (mise hors
 tension) de sorte que cette donn�e doit �tre fournie � chaque fois que
 le PC est remis en fonction.





 22..88..  LLee  pprroobbll��mmee

 L'architecture du PC fournit seulement un nombre limit� d'IRQ, de
 canaux DMA, d'adresses d'E/S et de r�gions m�moire.  S'il n'y avait
 que quelques p�riph�riques et qu'ils aient des ressources
 standardis�es (comme des adresses d'E/S et des num�ros d'IRQ uniques)
 il n'y aurait aucun probl�me pour attacher des pilotes de
 p�riph�riques aux unit�s p�riph�riques. Chaque unit� aurait des
 ressources fixes qui n'entreraient en conflit avec aucune autre unit�
 p�riph�rique de l'ordinateur. Deux p�riph�riques n'auraient pas la
 m�me adresse d'E/S, la m�me IRQ etc. Chaque pilote pourrait �tre
 programm� avec l'adresse d'E/S, l'IRQ etc. cod�es en dur dans le
 programme. La vie serait simple.

 Mais ce n'est pas le cas. Non seulement il existe tellement de
 p�riph�riques diff�rents aujourd'hui que les conflits sont fr�quents,
 mais, de plus, on a souvent besoin d'avoir plus d'un p�riph�rique d'un
 type donn�. Par exemple, on peut vouloir disposer de plusieurs unit�s
 de disques diff�rentes, de plusieurs ports s�rie etc. Pour ces
 raisons, les p�riph�riques doivent �tre param�trables afin que l'on
 puisse leur attribuer les adresses, IRQ etc.  que l'on d�sire pour
 �viter les conflits. Mais quelques IRQ et adresses sont tout � fait
 standard comme celles de l'horloge et du clavier. Elles ne n�cessitent
 pas une telle adaptabilit�.

 En dehors du probl�me de conflit d'allocation des ressources, il y a
 le probl�me de l'erreur en communiquant la nature des ressources au
 pilote de p�riph�rique. Par exemple, supposons que vous ayez entr� IRQ
 4 dans un fichier de configuration alors que le p�riph�rique utilise,
 en r�alit�, l'IRQ 5.  C'est un autre type d'erreur dans l'allocation
 des ressources du bus.

 L'allocation des ressources du bus, si elle est correctement r�alis�e,
 �tablit des canaux de communication entre les p�riph�riques physiques
 et leurs pilotes. Par exemple, si une certaine gamme d'adresses d'E/S
 (ressource) est allou�e � la fois � un pilote de p�riph�rique et � un
 mat�riel, alors on a �tabli un canal de communication � sens unique
 entre eux. Le pilote peut envoyer des commandes et des informations au
 p�riph�rique. C'est, en r�alit�, un peu plus qu'un canal � sens unique
 puisque le pilote peut obtenir des informations du p�riph�rique en
 consultant ses registres. Mais le p�riph�rique ne peut pas prendre
 l'initiative d'une communication de cette fa�on. L'allocation d'une
 IRQ est n�cessaire pour cr�er un canal de communication bi-
 directionnel, o� � la fois le pilote et le p�riph�rique peuvent
 prendre l'initiative d'une communication.


 22..99..  LLee PPnnPP  dd��tteeccttee lleess pp��rriipphh��rriiqquueess ccoonnnneecctt��ss aauuxx ppoorrttss ss��rriiee

 Les p�riph�riques externes qui se connectent au port s�rie par un
 c�ble (comme les modems externes) peuvent �galement �tre appel�s _P_l_u_g_-
 _a_n_d_-_P_l_a_y Puisque seul le port s�rie lui-m�me n�cessite des ressources
 (une IRQ et une adresse d'E/S), il n'y a pas de ressources � allouer �
 un p�riph�rique qui se connecte � un tel port. Donc, le _P_n_P n'a pas
 vraiment de raison d'�tre pour ces p�riph�riques. Cela, m�me s'il y a
 des sp�cifications _P_n_P pour de tels p�riph�riques s�rie.

 Un syst�me d'exploitation _P_n_P les d�tectera et saura lire leur num�ro
 de mod�le etc. Il sera donc alors capable de trouver un pilote de
 p�riph�rique adapt� et vous n'aurez pas � dire � un programme
 d'application que vous utilisez disons, /dev/ttyS1. Mais puisque vous
 devriez �tre capable d'indiquer manuellement � votre ordinateur (par
 l'interm�diaire d'un fichier de configuration etc.) sur quel port
 s�rie votre p�riph�rique est connect� (et �ventuellement le mod�le
 dont il s'agit) vous n'avez pas r�ellement besoin de cette
 fonctionnalit� "port s�rie" du _P_n_P.
 33..  LLaa ssoolluuttiioonn PPlluugg--aanndd--PPllaayy  ((PPnnPP))

 33..11..  IInnttrroodduuccttiioonn aauu PPnnPP

 Le terme _P_l_u_g_-_a_n_d_-_P_l_a_y (PnP) (Installez et Utilisez) a plusieurs sens.
 Au sens large c'est uniquement une auto-configuration o� l'on installe
 simplement un p�riph�rique et que celui-ci se configure par lui-m�me.
 Au sens o� je l'entends dans cet HOWTO, la configuration ne concerne
 que la configuration de la ressource PnP et la communication de
 l'information au pilote de p�riph�rique. Dans un sens plus �troit
 c'est simplement le param�trage des ressources des p�riph�riques.
 Cela peut aussi concerner les sp�cifications qui, (entre autres
 choses) indiquent comment les donn�es PnP de la ressource doivent �tre
 lues ou �crites dans les p�riph�riques (souvent des cartes) sur le bus
 ISA. Les sp�cifications du standard PCI (et non PnP) sont de m�me
 nature pour le bus PCI.

 Le _P_l_u_g_-_a_n_d___P_l_a_y _(_P_n_P_) met en relation les p�riph�riques et leurs
 pilotes et sp�cifie leurs "canaux" de communication. Sur le bus ISA,
 avant le _P_l_u_g_-_a_n_d_-_P_l_a_y, les ressources �taient configur�es sur le
 mat�riel par des cavaliers et les pilotes de p�riph�riques �taient
 assign�s aux ressources par des fichiers de configuration (ou quelque
 chose du m�me style) ou par des tests des p�riph�riques � des adresses
 o� ils �taient suppos�s se trouver.  Le bus PCI a �t� compatible PnP
 d�s le d�but et il a �t� trivial d'impl�menter le PnP pour ce bus.
 Mais comme les sp�cifications du bus PCI n'utilisent pas le terme PnP
 on ne sait pas si l'on doit dire que le bus PCI est PnP (mais il
 supporte le mat�riel que l'on appelle aujourd'hui PnP).


 33..22..  CCoommmmeenntt cceellaa ffoonnccttiioonnnnee--tt--iill ?? ((eexxpplliiccaattiioonn ssiimmpplliiffii��ee))

 Voici une explication tr�s simple de la fa�on dont fonctionne le _P_n_P.
 Le programme de configuration _P_n_P (�ventuellement un programme du
 BIOS) recherche tous les p�riph�riques _P_n_P et demande � chacun les
 ressources du bus dont il a besoin. Ensuite, il regarde les ressources
 du bus (IRQs, etc.) qu'il doit attribuer. Bien s�r, s'il y a des
 ressources du bus r�serv�es par des p�riph�riques (anciens) non _P_n_P
 (dont il a connaissance), il ne les attribue pas. Puis il utilise un
 certain crit�re (non pr�cis� dans les sp�cifications _P_n_P) pour
 attribuer les ressources de fa�on � ce qu'elles n'entrent pas en
 conflit et que tous les p�riph�riques obtiennent ce dont ils ont
 besoin.  Il indique alors � chaque p�riph�rique physique quelles
 ressources du bus lui ont �t� affect�es et chacun se configure alors
 pour n'utiliser que les seules ressources du bus qui lui ont �t�
 affect�es.

 Par exemple, supposons qu'une carte carte ait besoin d'une
 interruption (d'un num�ro d'interruption) et de 1 MB de m�moire
 partag�e. Le programme _P_n_P lit cette requ�te dans la carte. Il
 attribue alors le num�ro d'interruption 5 (IRQ 5) et un m�ga-octet
 d'espace m�moire � partir de l'adresse 0xe9000000. Ce n'est pas
 toujours aussi simple car la carte peut utiliser uniquement certains
 num�ros d'interruption (seulement pour ISA) ou n'accepter qu'un
 certain domaine d'adressage. Les d�tails sont diff�rents pour les bus
 ISA et PCI, les choses �tant plus complexes pour le bus ISA

 Le logiciels _P_n_P peut utiliser quelques raccourcis. L'un d'entre eux
 consiste � garder une trace de la mani�re dont il a assign� les
 ressources du bus lors de la derni�re configuration (lors de la
 derni�re utilisation de l'ordinateur) et la r�utiliser. Windows9x et
 les BIOS PNP le font mais ce n'est pas le cas du Linux standard.
 Windows9x enregistre ces informations dans ses "Registres" sur le
 disque dur et un BIOS PnP le fait dans la m�moire non volatile de
 votre PC (connu sou le nom d' ESCD; voir ``La Base de donn�es ESCD du
 BIOS'').
 Sous Linux, c'est le r�gne du "chaque p�riph�rique pour lui-m�me" et
 il n'existe aucun registre centralis� des affectations de ressources.
 Certains pilotes de p�riph�riques enregistrent la derni�re
 configuration qu'ils ont utilis� et la r�utilisent � la prochaine
 remise en route de l'ordinateur. Implicitement, ils consid�rent que le
 reste du mat�riel n'aura pas besoin d'utiliser ses ressources du bus.

 Si les p�riph�riques se souvenaient de leur configuration pr�c�dente,
 il n'y aurait aucun mat�riel pour les reconfigurer au prochain
 d�marrage, mais ils semblent oublier leur configuration lorsque l'on
 stoppe l'alimentation. Certains p�riph�riques ont une configuration
 par d�faut (mais pas n�cessairement la derni�re utilis�e). Le
 programme de configuration _P_n_P doit �tre ex�cut� � chaque mise sous
 tension du PC. De m�me, si l'on ajoute un nouveau p�riph�rique, celui-
 ci a besoin d'�tre configur�.  L'allocation de ressources du bus � ce
 nouveau p�riph�rique peut n�cessiter d'en enlever � un p�riph�rique
 existant et de donner � celui-ci des ressources du bus diff�rentes
 qu'il pourra utiliser � la place.


 33..33..  DD��mmaarrrraaggee dduu PPCC

 Lors de la mise sous tension initiale du PC le circuit BIOS ex�cute
 son programme pour d�marrer l'ordinateur (la premi�re �tape consistant
 � tester le mat�riel). Si le syst�me d'exploitation est stock� sur le
 disque dur (ce qui constitue le cas normal), le BIOS doit trouver le
 disque dur. Si le disque dur est _P_n_P, alors le BIOS doit utiliser une
 m�thode PnP pour le trouver. Donc, pour permettre � l'utilisateur de
 configurer manuellement la m�moire CMOS du BIOS et de r�agir aux
 messages d'erreur apparaissant au d�marrage de l'ordinateur, un �cran
 (une carte vid�o) et un clavier sont �galement n�cessaires.  Donc, le
 BIOS doit configurer, selon la proc�dure PnP, ces p�riph�riques lui-
 m�me.

 Une fois que le BIOS a identifi� le disque dur, la carte vid�o et le
 clavier il est pr�t � entamer le processus de d�marrage (chargement du
 syst�me d'exploitation du disque dur vers la m�moire centrale). Si
 vous avez indiqu� � votre BIOS que vous aviez un syst�me
 d'exploitation _P_n_P (SE PnP ou PnP OS), il devrait commencer � d�marrer
 le PC de la mani�re indiqu�e ci-dessus et laisser le soin de terminer
 la configuration _P_n_P au syst�me d'exploitation. Autrement, un BIOS-PnP
 essaiera de r�aliser le reste de la configuration _P_n_P des
 p�riph�riques avant le chargement du syst�me d'exploitation (mais ne
 chargera pas leurs pilotes).


 33..44..  LLeess bbuuss

 Le bus ISA est le vieux bus du vieil IBM PC alors que le bus PCI est
 un bus plus r�cent et plus rapide de Intel. Le bus PCI a �t� con�u
 pour ce que l'on appelle aujourd'hui le _P_n_P. Il est facile (si l'on
 compare au bus ISA) de voir comment les ressources du bus ont �t�
 assign�es aux p�riph�riques.  Pour voir comment cela s'est pass�
 consulter le "fichier" /proc/pci (/proc/bus/pnp/devices pour les
 noyaux 2.2+), les messages de d�marrage sur votre �cran (utilisez
 shift-PageUp pour revenir en arri�re), ou utilisez les utilitaires PCI
 (pour les noyaux 2.2+).

 Pour ce qui concerne le bus ISA, il y a un vrai probl�me pour
 impl�menter le _P_n_P car personne n'y pensait lors de la conception de
 ce bus et il n'y a pratiquement pas d'adresse d'E/S disponible pour
 communiquer les informations de configuration aux p�riph�riques
 physiques. Il en r�sulte que la mani�re dont le _P_n_P a �t� implant� sur
 le bus ISA est tr�s compliqu�e. Un livre entier a �t� r�dig� � ce
 sujet. Voir ``Le livre du PnP''. Entre autres choses, le programme _P_n_P
 doit attribuer � chaque p�riph�rique _P_n_P un "identificateur"
 provisoire de fa�on � pouvoir l'adresser pour la configuration _P_n_P.
 L'assignation de ces "identificateurs" provisoires est appel�e
 "isolation". Voir ``Isolation'' pour de plus amples d�tails.

 Finalement, le bus ISA finira par dispara�tre. Ce jour l�, le _P_n_P
 deviendra plus simple puisqu'il sera facile de voir comment le BIOS a
 configur� le mat�riel. Il restera cependant n�cessaire de mettre en
 correspondance les p�riph�riques et leurs pilotes ainsi que de
 configurer les p�riph�riques ajout�s alors que le PC est en
 fonctionnement. Ces besoins seraient satisfaits si Linux �tait un
 syst�me d'exploitation _P_n_P.


 33..55..  LLiinnuuxx ddooiitt mmiieeuuxx pprreennddrree eenn ccoommppttee llee PPnnPP

 Le _P_n_P (pour le bus ISA) a �t� invent� par Compaq, Intel et Phoenix.
 Microsoft a �t� un des leaders de sa promotion. Linux aurait �t�
 meilleur si le _P_n_P n'avait jamais �t� "invent�". Finalement, le bus
 ISA aura disparu et le bus PCI � la mode _P_n_P pr�vaudra de sorte que
 nous aurons alors un _P_n_P facile � implanter. Mais, que l'on veuille ou
 pas, la plupart des nouveaux mat�riels ISA aujourd'hui sont _P_n_P et
 Linux ne peut pas faire autrement que de g�rer efficacement le _P_n_P.
 Cependant le Linux standard (celui du d�but 1999) rend la gestion du
 _P_n_P compliqu�e (sp�cialement pour le bus ISA) alors que le but du _P_n_P
 �tait de rendre les choses faciles.

 D'une certaine fa�on, Linux est un peu _P_n_P pour le bus PCI.  Quand le
 PC d�marre vous pouvez noter, en lisant les messages sur la console,
 que certains pilotes de p�riph�riques Linux trouvent leurs
 p�riph�riques (et les ressources du bus que le BIOS leur a attribu�).
 Mais il y a des situations o� un syst�me d'exploitation _P_n_P pourrait
 prendre les choses en compte de mani�re plus satisfaisante :

 1. En cas de p�nurie de ressources du bus;

 2. S'il y a plus d'un pilote pour un p�riph�rique physique;

 3. Si un pilote de p�riph�rique activ� ne peut pas trouver le
    p�riph�rique physique;

 4. Installation � chaud d'un p�riph�rique.

    Les utilisateurs de Linux ne devraient pas avoir � plonger dans les
    d�tails du _P_n_P pour configurer leurs p�riph�riques _P_n_P ISA comme
    ils doivent le faire. Une solution pourrait consister � avoir une
    version standardis�e du noyau qui supporterait le _P_l_u_g_-_a_n_d_-_P_l_a_y sur
    les bus ISA, PCI et autres. Un correctif pour le noyau a �t� �crit,
    bien que la plupart des pilotes ne le g�rent pas. Il ne fait pas
    partie du Linux standard.  Voir ``Correctif noyau''.


 44..  CCoonnffiigguurraattiioonn dd''uunn BBIIOOSS PPnnPP

 � la mise sous tension de l'ordinateur, le BIOS s'ex�cute avant que le
 syst�me d'exploitation ne soit charg�. Les nouveaux BIOS sont PnP et
 configurent quelques-uns ou la totalit� des p�riph�riques PnP. Il
 n'est pas possible de d�sactiver la plupart des BIOS PnP, donc il faut
 faire avec. Voici quelques-uns des choix possibles dans le menu BIOS
 (quelquefois appel� CMOS) :

 �  ``Avez-vous un syst�me d'exploitation PnP ?''

 �  ``Comment doivent �tre contr�l�es les ressources du bus ?''

 �  ``R�initialiser la configuration ?''

 44..11..  AAvveezz--vvoouuss uunn ssyysstt��mmee dd''eexxppllooiittaattiioonn PPnnPP ??

 Si vous r�pondez oui, alors le BIOS PnP commencera � configurer le
 disque dur, la carte vid�o et le clavier pour permettre le d�marrage
 du syst�me.  Mais il laissera le soin de terminer la configuration au
 syst�me d'exploitation. Il peut faire une ``isolation'' sur le bus ISA
 en laissant les p�riph�riques d�sactiv�s, mais pr�ts � �tre configur�s
 par le syst�me d'exploitation. Pour Linux, vous devrez probablement
 indiquer que votre syst�me d'exploitation n'est pas _P_n_P. Si vous ne le
 faites pas, le BIOS risque de laisser vos p�riph�riques ISA, qu'il n'a
 pas configur�s,en �tat d�sactiv� ?? Et les p�riph�riques PCI peuvent
 �galement ne pas �tre configur�s ?

 Si vous r�pondez non, alors le BIOS fera la configuration lui-m�me. Il
 utilisera la configuration pr�c�dente, sauvegard�e dans la m�moire non
 volatile (ESCD), � moins que vous n'ayez ajout� de nouveaux
 p�riph�riques PnP.  Voir ``La base de donn�es ESCD du BIOS'' Si votre
 derni�re session d'utilisation de l'ordinateur a �t� faite sous Linux,
 il n'y aura pas de modification de configuration.  Voir ``Le BIOS
 configure le PnP''.  Mais si cette derni�re session a �t� faite sous
 Windows 9x (qui est PnP), alors Windows peut avoir modifi� l'ESCD.
 Normalement, il ne le fera que si vous "forcez" une configuration ou
 si vous installez un p�riph�rique ancien.  Voir ``Utilisation de
 Windows pour param�trer l'ESCD''.  Si vous utilisez le(s) programme(s)
 utilitaire(s) isapnp ou PCI pour r�aliser la configuration, ils
 s'ex�cuteront apr�s le BIOS et modifieront les choses de la fa�on que
 vous leur aurez indiqu�.


 44..11..11..  CCoohhaabbiittaattiioonn aavveecc WWiinnddoowwss99xx

 Si vous faites tourner Windows sur le m�me PC, comment r�pondre � la
 question du BIOS : Avez-vous un Syst�me d'Exploitation (SE) _P_n_P ?
 Normalement (et avec confiance) vous devriez dire non pour Linux
 standard et oui pour Windows9x. Mais il est particuli�rement p�nible
 d'avoir � param�trer le menu CMOS manuellement � chaque fois que vous
 changez de SE.  Une solution consiste � param�trer la CMOS pour un SE
 non _P_n_P, m�me si vous d�marrez sous Windows. On peut esp�rer que
 Windows sera capable de prendre en compte cette situation o� tout le
 mat�riel a �t� enti�rement configur� par le BIOS. De plus, on peut
 penser que m�me si Windows ne s'aper�oit pas que le mat�riel a d�j�
 �t� configur�, il fera la configuration lui-m�me et que tout ira bien.
 Mais il semble que cela ne se passe pas ainsi. Windows ne semble
 seulement capable d'indiquer aux pilotes de p�riph�riques que ce qui
 est enregistr� dans les registres Windows.  Mais, la configuration
 mat�rielle r�elle (effectu�e par le BIOS) est celle qui est
 enregistr�e dans l'ESCD et elle peut �tre diff�rente de celle des
 registres => donc ennuis.

 Une solution pour essayer d'avoir les m�mes infos dans les registres
 et dans l'ESCD consiste � installer (ou r�installer) Windows apr�s que
 le BIOS ait �t� configur� pour un "SE non _P_n_P".  Cela devrait
 permettre de pr�senter � Windows un syst�me configur� par le BIOS. Si
 cette configuration se fait sans conflits, avec un peu de chance,
 Windows s'en contentera et la sauvegardera dans ses registres. Si cela
 fonctionne pour vous (et c'est la derni�re version de cet HOWTO),
 faites-le moi savoir car je n'ai eu qu'une seule indication me disant
 que cela marchait.

 Une autre m�thode consiste � "enlever" les p�riph�riques qui causent
 des probl�mes � Windows en cliquant sur "enlever" dans le gestionnaire
 de p�riph�riques. Ensuite, red�marrez le PC avec "SE non _P_n_P"
 (param�tr� dans la CMOS au moment du red�marrage�. Windows
 r�installera alors les p�riph�riques, en utilisant, on l'esp�re, le
 param�trage des ressources du bus tel que configur� par le BIOS.
 Pensez que Windows peut vous demander d'ins�rer le CD d'installation
 de Windows dans le lecteur car, quelquefois, il ne trouve pas les
 fichiers de pilotes (et autres) m�me s'ils sont d�j� pr�sents. Pour le
 v�rifier, j'ai "enlev�" la carte NIC (carte interface r�seau) qui
 avait un pilote compatible Novell. Au red�marrage, Windows l'a
 r�install�e pour un r�seau Microsoft au lieu de Novell. Ce qui
 signifie que le client Novell a d� �tre r�install�. Indiquez moi vos
 probl�mes lors de l'utilisation de cette m�thode (uniquement pour la
 derni�re version de cet HOWTO).


 44..22..  CCoommmmeenntt ddooiivveenntt ��ttrree ccoonnttrr��ll��eess lleess rreessssoouurrcceess dduu bbuuss ??

 cela peut simplement signifier de d�cider comment allouer les
 ressources du bus pour les IRQ et le DMA.  Sur "auto", le bios se
 chargera de l'allocation. Sur manuel, vous r�serverez manuellement
 certaines IRQ � utiliser pour des cartes anciennes (cartes non-pnp).
 Maintenant le BIOS peut, ou non, reconna�tre vos vieilles cartes. Le
 BIOS ne reconna�tra vos cartes anciennes que si vous faites tourner
 ICU (ou quelque chose comme cela) sous Windows pour les faire
 reconna�tre par le BIOS. S'il les reconna�t, alors essayez l'option
 "auto". S'il ne les reconna�t pas, alors r�servez manuellement les IRQ
 n�cessaires pour les cartes ISA anciennes et laissez BIOS PnP allouer
 le reste.


 44..33..  RR��iinniittiiaalliisseerr llaa ccoonnffiigguurraattiioonn ??

 Cette op�ration effacera de la base de donn�es ESCD du BIOS la mani�re
 dont les p�riph�riques PnP doivent �tre configur�s ainsi que la liste
 de configuration des p�riph�riques anciens (non-PnP). Ne jamais faire
 cela � moins d'�tre convaincu que cette base de donn�es est erron�e et
 doit �tre refaite. Il a �t� dit quelque part que vous ne devriez faire
 cela que dans le cas o� votre ordinateur refuserait de d�marrer. Si le
 BIOS perd les donn�es sur les p�riph�riques anciens, alors vous devrez
 faire tourner � nouveau ICA sous Windows pour retrouver ces donn�es.


 55..  CCoommmmeenntt aaggiirr aavveecc lleess ccaarrtteess PPnnPP

 55..11..  IInnttrroodduuccttiioonn

 Aujourd'hui, la plupart des nouvelles cartes internes sont _P_l_u_g_-_a_n_d_-
 _P_l_a_y _(_P_n_P_). Bien qu'il existe quelques logiciels sous Linux pour g�rer
 le _P_n_P ils ne sont pas toujours d'utilisation facile.  Il y a 6
 m�thodes diff�rentes, dont la liste suit, pour s'occuper du _P_n_P (mais
 certaines peuvent ne pas �tre utilisables dans notre situation).
 Celle(s) � utiliser d�pend(ent) de nos objectifs. Ce qui semble �tre
 le plus efficace dans l'imm�diat peut se r�v�ler ne pas �tre le plus
 facile et le meilleur dans le long terme. Une m�thode qui para�t
 simple consiste � ne rien faire et � laisser le BIOS-PnP effectuer la
 configuration, mais vous devrez faire quelques investigations pour
 d�couvrir ce qu'a fait le BIOS. Il faudrait que quelqu'un qui a tester
 toutes les m�thodes en fasse une comparaison et l'�crive. Vous pouvez
 avoir � utiliser plus d'une m�thode pour arriver � vos fins.


 �  ``D�sactiver le PnP''  par cavaliers (mais ce n'est pas possible
    pour de nombreuses cartes) ou par un logiciel sp�cial

 �  ``Le BIOS configure le PnP'' (Pour le bus PCI, vous avez seulement
    besoin d'un BIOS PCI, autrement, il vous faut BIOS PnP)

 �  ``Isapnp'' c'est un programme que vous pouvez toujours utiliser
    pour configurer les p�riph�riques PnP sur le bus ISA uniquement


 �  ``Utilitaires PCI'' pour effectuer la configuration du bus PCI

 �  ``Configuration par Windows'' puis vous lancez Linux � partir de
    Windows/DOS. � utiliser en dernier recours

 �  ``Patch Kernel'' pour transformer Linux en un syst�me
    d'exploitation PnP.

 �  ``Configuration par le pilote de  p�riph�rique'', mais peu le font.

 Chacune des solutions ci-dessus configurera les ressources du bus dans
 le mat�riel. Seule les deux derni�res solutions devraient informer le
 pilote du p�riph�rique de ce qui a �t� fait. Mais seule la derni�re le
 fait s�rement (puisque c'est le pilote lui-m�me qui le fait). La fa�on
 dont le pilote se trouve inform� d�pend de lui et vous pouvez avoir �
 faire quelque chose pour le renseigner. Voir  ``Indiquer la
 configuration au pilote''


 55..22..  DD��ssaaccttiivveerr llee PPnnPP  ??

 De nombreux p�riph�riques sont uniquement PnP, sans option pour le
 d�sactiver. Mais, pour certains, vous pouvez d�sactiver le _P_n_P avec
 des cavaliers ou en utilisant un programme sous Windows qui est fourni
 avec le p�riph�rique (configuration sans cavaliers). Cela �vite la
 t�che souvent compliqu�e de configuration _P_n_P. N'oubliez d'indiquer au
 BIOS que ces ressources du bus sont r�serv�es. Il y a aussi plusieurs
 raisons pour lesquelles vous pouvez ne pas vouloir d�sactiver le _P_n_P :


 1. Si vous avez MS Windows sur la m�me machine, vous voulez permettre
    au PnP sous MS Windows de configurer les p�riph�riques de fa�on
    diff�rente que sous Linux.

 2. Le champ des possibilit�s de choix des num�ros d'IRQ (ou des
    adresses de ports) etc. peut �tre particuli�rement restreint si
    l'on n'utilise pas le PnP.

 3. Vous avez un pilote de p�riph�rique sous Linux qui utilise les
    m�thodes _P_n_P pour chercher le p�riph�rique qu'il contr�le.

 4. Si vous avez � changer la configuration dans le futur, cela peut
    �tre plus facile en utilisant le _P_n_P (pas de cavaliers � d�placer
    ou de programme Dos/Windows � faire tourner).

 5. Vous pouvez avoir (ou aurez) d'autres p�riph�riques _P_n_P qui auront
    besoin d'�tre configur�s et vous voulez donc le pr�voir (ou
    l'�tudier) de toute fa�on.

    Une fois qu'ils sont configur�s comme des p�riph�riques non-PnP,
    ils ne peuvent plus �tre configur�s par un logiciel PnP ou par le
    BIOS (� moins que vous ne d�placiez les cavaliers et/ou n'utilisiez
    � nouveau le logiciel de configuration Dos/Windows).


 55..33..  LLee BBIIOOSS ccoonnffiigguurree llee PPnnPP

 55..33..11..  IInnttrroodduuccttiioonn �� ll''uuttiilliissaattiioonn dduu BBIIOOSS ppoouurr ccoonnffiigguurreerr llee PPnnPP

 Si vous avez un BIOS PnP, il peut configurer le mat�riel. Cela
 signifie que votre BIOS lit les besoins en ressources de tous les
 p�riph�riques et les configure (leur alloue les ressources du bus).
 C'est un substitut de SE _P_n_P � l'exception pr�s que le BIOS ne fait
 pas le lien entre les p�riph�riques et leurs pilotes et qu'il
 n'indique pas aux pilotes comment il a fait la configuration. Il
 devrait normalement utiliser la configuration qu'il a stock� en
 m�moire non volatile (ESCD). S'il trouve un nouveau p�riph�rique ou en
 pr�sence d'un conflit, le BIOS devrait effectuer les modifications
 n�cessaires dans la configuration et ne pas utiliser exactement ce
 qu'il y avait dans l'ESCD.

 Votre BIOS doit supporter une telle configuration mais il y a eu des
 cas o� il ne l'a pas fait correctement ou l'a fait de mani�re
 incompl�te.  Un avantage de l'utilisation du BIOS r�side dans sa
 simplicit� puisque, dans la plupart des cas, il n'y a rien �
 param�trer (sauf � indiquer dans le menu CMOS du BIOS que le SE n'est
 pas PnP). Alors que quelques pilotes de p�riph�riques peuvent �tre
 capables de d�tecter automatiquement ce que le BIOS a fait, dans
 certains cas, vous devrez le faire (ce qui n'est pas toujours facile).
 Voir  ``Quelle est ma configuration actuelle ?'' Un autre avantage
 possible vient de ce que le BIOS fait son boulot avant que Linux ne
 d�marre et donc que toutes les ressources du bus sont pr�tes � �tre
 utilis�es (et trouv�es) par les pilotes de p�riph�riques qui d�marrent
 plus tard.

 Selon MS le fait qu'un BIOS PNP soit capable de configurer au sens PnP
 les p�riph�riques (sans l'aide de MS Windows) est optionnel (pas
 obligatoire).  Mais il semble que la plupart de ceux cr��s apr�s 1996
 ?? ou aux environs en sont capables. Nous devrions leur envoyer des
 lettres de remerciements s'ils le font correctement. Ils configurent �
 la fois les bus ISA et PCI, mais on a dit que quelques vieux BIOS ne
 le faisaient que pour le PCI. Pour essayer d'avoir plus d'informations
 concernant votre BIOS, regardez sur le Web. Merci de ne pas me poser
 de questions sur ce sujet car je n'ai aucunes donn�es.  Les d�tails
 que vous aimeriez conna�tre concernant votre BIOS peuvent �tre
 difficiles � trouver (ou pas disponibles). Quelques BIOS ont des
 fonctionnalit�s _P_n_P minimales et essaient de se d�charger de la partie
 difficile de la t�che de configuration sur des utilitaires Windows. Si
 cela arrive, soit vous devrez trouver une autre m�thode (comme les
 outils isapnp) soit vous devrez essayer de param�trer la base de
 donn�es ESCD si le BIOS en poss�de une. Consulter le paragraphe
 suivant.


 55..33..22..  LLaa bbaassee ddee ddoonnnn��eess EESSCCDD dduu BBIIOOSS

 Le BIOS entretient une base de donn�es non volatile contenant la
 configuration _P_n_P qu'il essaiera d'utiliser. On l'appelle ESCD
 (Extended System Configuration Data). Encore une fois, l'existence de
 l'ESCD est optionnelle mais la plupart des BIOS-PnP la poss�de. L'ESCD
 non seulement stocke la configuration des ressources des p�riph�riques
 _P_n_P mais aussi stocke les informations de configuration des
 p�riph�riques non-PnP (et les rep�re comme �tant non-PnP) pour �viter
 les conflits. Les donn�es ESCD sont habituellement sauvegard�es dans
 un circuit qui conserve ces donn�es quand on arr�te l'alimentation,
 mais quelquefois elles sont stock�es sur un disque dur ??

 L'objectif de l'ESCD est de garder la derni�re configuration utilis�e,
 mais si vous utilisez un programme tel que isapnp sous Linux ou des
 utilitaires PCI (qui ne mettent pas � jour l'ESCD) alors, l'ESCD n'en
 n'aura aucune connaissance et ne sauvegardera pas cette configuration
 dans l'ESCD. Un bon SE _P_n_P doit mettre � jour l'ESCD de fa�on � ce que
 vous puissiez l'utiliser plus tard avec un SE non-PnP (comme Linux
 standard).  Windows peut le faire dans certaines circonstances.  Voir
 ``Utilisation des Windows pour param�trer l'ESCD''.

 Pour utiliser ce qui a �t� param�tr� dans l'ESCD assurez-vous de
 choisir "SE non-PnP" �quivalent dans la CMOS du BIOS. Ensuite, chaque
 fois que le BIOS d�marre (avant le chargement du SE Linux) il doit
 configurer les choses de cette fa�on. Si le BIOS d�tecte une nouvelle
 carte _P_n_P qui n'est pas dans l'ESCD, il doit alors allouer des
 ressources du bus � cette carte et mettre l'ESCD � jour. Il peut m�me
 avoir � modifier les ressources du bus d�j� assign�es � des cartes _P_n_P
 existantes et modifier l'ESCD en cons�quence.

 Si chaque p�riph�rique a enregistr� sa derni�re configuration, il ne
 devrait pas �tre n�cessaire de les reconfigurer � chaque red�marrage
 de votre PC. Mais cela ne fonctionne pas comme cela. Donc toutes les
 donn�es ESCD doivent �tre correctes si vous utilisez le BIOS pour le
 _P_n_P.  Il y a quelques BIOS qui n'ont pas d'ESCD mais poss�dent une
 sorte de m�moire non volatile pour stocker les informations concernant
 les ressources du bus qui ont �t� r�serv�es par les cartes non-PnP. De
 nombreux BIOS poss�dent les deux.


 55..33..33..  UUttiilliissaattiioonn ddee WWiinnddoowwss ppoouurr ppaarraamm��ttrreerr ll''EESSCCDD

 Si le BIOS ne param�tre pas l'ESCD de la fa�on que vous le voulez (ou
 de la fa�on dont il faudrait), il serait int�ressant d'avoir un
 utilitaire Linux qui le fasse. Au d�but 1999, il n'y en avait pas. Il
 faut donc essayer d'utiliser Windows pour le faire (si vous l'avez sur
 le m�me PC).

 Il y a trois mani�res d'utiliser Windows pour essayer de
 param�trer/modifier l'ESCD. L'une consiste � utiliser l'utilitaire ICU
 con�u pour DOS ou Windows 3.x. Cela devrait aussi fonctionner
 correctement pour Windows 9x/2k ??  Une autre m�thode consiste �
 initialiser les p�riph�riques manuellement ("forc�e") sous Windows
 9x/2k de sorte que Windows mette cette information dans l'ESCD
 lorsqu'on stoppe Windows normalement.  La troisi�me m�thode est
 destin�e aux p�riph�riques anciens qui ne sont pas _p_l_u_g_-_a_n_d_-_p_l_a_y.  Si
 Windows les reconna�t et sait quelles ressources du bus ils utilisent,
 alors Windows devrait mettre cette info dans l'ESCD.

 Si les p�riph�riques _P_n_P sont configur�s automatiquement par Windows
 sans que l'utilisateur ne le "force" � changer les param�tres, alors
 ceux-ci ne seront probablement inscrit dans l'ESCD. Naturellement
 Windows peut d�cider de lui-m�me de les configurer en utilisant des
 param�tres identiques � ceux qui sont dans l'ESCD mais ce n'est qu'une
 co�ncidence.

 Les syst�mes d'exploitation Windows 9x sont _P_n_P et configurent, au
 sens _P_n_P les p�riph�riques. Ils entretiennent leur propre base de
 donn�es _P_n_P au plus profond des Registres (stock�s dans des fichiers
 binaires Windows). Il y a �galement tout un tas de renseignements
 concernant la configuration dans les registres, en plus des ressources
 du bus pour le _P_n_P.  Il y a � la fois la configuration courante des
 ressources _P_n_P en m�moire et une autre (peut-�tre � peu pr�s la m�me)
 stock�e sur le disque dur. Pour la consulter (celle qui est en m�moire
  ?)indirectement dans Windows98 ou pour y forcer des modifications
 vous utilisez le gestionnaire de p�riph�riques.

 Dans Windows98, il y a 2 mani�res d'invoquer le gestionnaire de
 p�riph�riques :

 1. Poste de travail --> Panneau de configuration --> Syst�me -->
    Gestionnaire de p�riph�riques.

 2. (cliquer sur le bouton droit de la souris) Poste de travail -->
    Propri�t�s --> Gestionnaire de p�riph�riques.

    Puis dans le gestionnaire de p�riph�riques vous s�lectionnez un
    p�riph�rique (quelquefois en plusieurs �tapes s'il y plusieurs
    p�riph�riques de la m�me classe). Puis cliquez sur Propri�t�s puis
    sur Ressources. Pour essayer de modifier la configuration de la
    ressource manuellement, d�s�lectionnez "utiliser les param�tres
    automatiques" puis cliquez sur "Modification des param�tres".
    Maintenant essayer de modifier les param�tres, mais il se peut que
    cela ne soit pas possible. Si vous le pouvez, vous avez "forc�" une
    modification. Un message doit vous informer de ce qui a �t� forc�.
    Si vous voulez conserver le param�trage existant de Windows mais
    que vous vouliez le "forcer", alors, vous devrez forcer une
    modification quelconque puis forcer � nouveau les param�tres
    originaux.

 Pour voir ce qui a �t� "forc�" sous Windows98 regardez dans la liste
 du "mat�riel forc�" : D�marrer --> Programmes --> Accessoires -->
 Outils syst�me -- Information syst�me --> Ressources mat�rielles -->
 Mat�riel forc�.  Quand vous "forcez une modification des ressources du
 bus sous Windows, il doit mettre votre modification dans l'ESCD (�
 condition que vous quittiez Windows normalement).

 > De la fen�tre "Information syst�me" vous pouvez �galement contr�ler
 comment les IRQ et les ports d'E/S ont �t� allou�s sous Windows.

 M�me si Windows ne signale pas de conflit de ressources du bus, il
 peut en exister sous Linux. Cela vient du fait que Windows peut
 assigner les ressources du bus de mani�re diff�rente de l'ESCD. Dans
 les rares cas o� tous les p�riph�riques sous Windows sont soit des
 p�riph�riques anciens soit des p�riph�riques "forc�s", il faut que les
 configurations Windows et ESCD soient identiques.


 55..33..44..  AAjjoouutt dd''uunn nnoouuvveeaauu pp��rriipphh��rriiqquuee ((ssoouuss LLiinnuuxx oouu ssoouuss WWiinnddoowwss))

 Si vous ajoutez un nouveau p�riph�rique _P_n_P et que vous ayez param�tr�
 votre BIOS pour un "SE non PnP", alors le BIOS devrait le configurer
 automatiquement et en enregistrer la configuration dans l'ESCD. S'il
 s'agit d'un p�riph�rique _n_o_n _P_n_P ancien (ou d'un p�riph�rique
 configurable par cavaliers, etc...), vous n'avez alors que peu
 d'options pour le prendre en compte.

 Vous devez �tre capable d'indiquer directement au BIOS (par
 l'interm�diaire des menus de configuration de la CMOS) que certaines
 ressources du bus qu'il utilise sont r�serv�es et ne doivent pas �tre
 allou�es par le _P_n_P. Cette information n'est pas sauvegard�e dans
 l'ESCD.  Mais, en cas de conflit, il peut y avoir une option du menu
 BIOS permettant de rendre pr�pond�rant ou non, sur le contenu de
 l'ESCD, les choix faits au niveau de la CMOS. Une autre m�thode
 consiste � faire tourner ICU sous DOS/Windows. Encore une autre
 consiste � installer manuellement le p�riph�rique sous Windows 9x/2k
 et de s'assurer que cette configuration a �t� "forc�e" (voir le
 paragraphe pr�c�dent). Si elle a �t� "forc�e" Windows devrait avoir
 mis � jour l'ESCD lors de l'arr�t du PC.


 55..44..  IIssaappnnpp

 Une bonne partie de la documentation concernant isapnp est difficile �
 comprendre si l'on ne conna�t pas les bases du _P_n_P. Cet HOWTO devrait
 aider � la comprendre ainsi que les FAQ (Questions fr�quemment pos�es)
 qui l'accompagne.  isapnp ne concerne que les p�riph�riques PnP sur le
 bus ISA (non PCI).  En lan�ant le programme Linux "isapnp" au
 d�marrage, on configure ces p�riph�riques avec les valeurs indiqu�es
 dans /etc/isapnp.conf. Il est possible de cr�er ce fichier de
 configuration automatiquement mais vous devrez l'�diter manuellement
 pour faire des choix entre diff�rentes options.  Avec isapnp, un
 pilote de p�riph�rique, faisant partie du noyau, peut �tre lanc�
 pr�matur�ment, avant que isapnp ait param�tr� l'adresse, etc.  dans le
 mat�riel. Ce qui entra�ne que le pilote de p�riph�rique ne sera pas
 capable de trouver le p�riph�rique correspondant. Le pilote utilise la
 bonne adresse alors que celle-ci n'a pas encore �t� param�tr�e dans le
 mat�riel.

 Si votre distribution Linux installe automatiquement isapnptools,
 isapnp peut d�j� �tre lanc� au d�marrage. Dans ce cas, tout ce que
 vous avez besoin de faire est d'�diter /etc/isapnp.conf selon "man
 isapnp.conf".  Notez que cela revient � configurer manuellement PnP
 puisque vous avez � prendre les d�cisions sur la mani�re de configurer
 � mesure que vous �ditez le fichier de configuration.  Vous pouvez
 utiliser le programme  "pnpdump" pour vous aider � cr�er le fichier de
 configuration. Si vous utilisez "isapnp" tel quel et que vous ayez un
 BIOS _P_n_P, vous devrez probablement indiquer au BIOS (quand vous le
 param�trerez) que vous n'avez pas de SE _P_n_P puisque vous voudrez
 toujours que que le BIOS configure les p�riph�riques PCI. Alors que le
 BIOS peut �galement configurer les p�riph�riques ISA, isapnp le
 refera.


 55..55..  UUttiilliittaaiirreess PPCCII

 Le nouveau paquetage Utilitaires PCI (= pciutils, improprement appel�
 "pcitools"), devrait vous permettre de configurer manuellement, _� _l_a
 _P_n_P, le bus PCI.  "lspci" donne la liste des ressources bus, alors que
 "setpci" param�tre les allocations de ressources dans le mat�riel.


 55..66..  CCoorrrriiggeerr llee nnooyyaauu ppoouurr rreennddrree LLiinnuuxx ccoommppaattiibbllee PPnnPP

 David Howells a cr�� une telle mise � jour pour le faire. C'est le
 "Gestionnaire de configuration/ressource du noyau Linux" ("Linux
 Kernel Configuration/Resource Manager") quelquefois appel�
 "Gestionnaire de configuration mat�rielle". Cette adaptation peut ne
 pas correspondre au noyau le plus r�cent. Le noyau r�sultant est
 r�put� stable mais cependant des bogues ont �t� signal�s.  Une
 documentation est incluse comme serial.txt, pour montrer comment faire
 pour un port s�rie. Elle fournit des "fichiers" dans l'arborescence
 /proc pour que vous puissiez voir ce qui se passe et peut enregistrer
 des commandes dans l'un de ces fichiers pour une configuration
 personnalis�e.  Un probl�me vient de ce que de nombreux pilotes de
 p�riph�riques ne le prennent pas en compte et qu'il vous faut encore
 utiliser les fichiers de configuration traditionnels etc. pour
 effectuer la configuration.  Consultez  <http://www.astarte.free-
 online.co.uk>



 55..77..  CCoonnffiigguurraattiioonn ppaarr WWiinnddoowwss

 Si vous avez Windows9x (ou 2k) sur le m�me PC, d�marrer alors
 simplement Windows et laissez-le configurer le _P_n_P.  Puis lancez alors
 Linux � partir de Windows (ou du DOS). On a signal� que Windows
 effa�ait les IRQ des registres des p�riph�riques PCI. Dans ce cas,
 Linux signale qu'il a trouv� une IRQ � z�ro. Dans ce cas, vous ne
 pouvez pas utiliser cette m�thode.


 55..88..  CCoonnffiigguurraattiioonn ppaarr lleess ppiillootteess ddee pp��rriipphh��rriiqquueess

 Quelques pilotes de p�riph�riques utilisent les m�thodes _P_n_P pour
 param�trer les ressources du bus au point de vue mat�riel et seulement
 pour les p�riph�riques qu'ils contr�lent. Dans ce cas, puisque le
 pilote a effectu� la configuration, il conna�t �videmment la
 configuration et il n'y a aucun besoin de lui fournir ces
 informations.

 Le probl�me ici porte sur deux points. Il est difficile de mettre dans
 le pilote tout ce qui est n�cessaire et le pilote peut accaparer des
 ressources du bus qui seraient n�cessaires pour d'autres
 p�riph�riques. Cela serait plus facile pour l'utilisateur, mais un
 noyau Linux _P_n_P serait une meilleure solution.  Voir ``Linux doit
 mieux prendre en compte le <em>PnP</em>''



 55..99..  LLooggiicciieellss eett ddooccuummeennttss PPnnPP


 �  Page d'acceuil Isapnptools
    <http://www.roestock.demon.co.uk/isapnptools/>

 �  Mise � jour pour rendre le noyau Linux <em>PnP</em>
    <http://www.astarte.free-online.co.uk>

 �  Projet de pilote <em>PnP</em>
    <http://www.io.com/~cdb/mirrors/lpsg/pnp-linux.html>

 �  Sp�cifications <em>PnP</em> de Microsoft
    <http://www.microsoft.com/hwdev/respec/pnpspecs.htm>

 �  Le livre : PCI System Architecture, 3rd ed. by Tom Shanley +,
    MindShare 1995. Traite des fonctionnalit�s style PnP pour le bus
    PCI bus.

 �  Le livre : Architecture syst�me _P_l_u_g _a_n_d _P_l_a_y, de Tom Shanley, Mind
    Share 1995. D�taille le _P_n_P sur le bus ISA.  Uniquement un survol
    concis du _P_n_P sur le bus PCI.



 66..  CCoommmmuunniiccaattiioonn ddee llaa ccoonnffiigguurraattiioonn aauu ppiilloottee

 66..11..  IInnttrroodduuccttiioonn

 La mani�re exacte dont cela s'effectue d�pend du pilote. Certains
 pilotes disposent de plus d'une m�thode pour d�tecter la configuration
 du p�riph�rique physique. � l'extr�me, on trouve le cas o� il faut
 param�trer "en dur" les ressources du bus dans le noyau et recompiler
 celui-ci. � l'autre extr�me, le pilote fait tout automatiquement et
 vous n'avez rien � faire. Il peut m�me param�trer les ressources du
 bus dans le mat�riel en utilisant les m�thodes _P_n_P.

 Entre les deux, on trouve les cas o� il faut faire tourner un
 programme pour faire passer les infos au pilote ou mettre ces infos
 dans un fichier. Dans certains cas, le pilote peut tester le
 p�riph�riques � des adresses ou il pense trouver le p�riph�rique. Il
 peut alors essayer de tester diff�rentes IRQ pour voir laquelle
 fonctionne (IRQ = Interrupt ReQuest / ReQu�te d'Interruption). Ce
 qu'il peut faire automatiquement ou non. Dans d'autres cas, le pilote
 utilise des m�thodes _P_n_P pour trouver le p�riph�rique et la fa�on dont
 les ressources du bus ont �t� affect�es, mais ne pas les param�trer
 lui-m�me. Il peut aussi regarder certains fichiers du r�pertoire
 /proc.

 On peut avoir besoin d'indiquer les ressources du bus comme param�tre
 au noyau pour un module chargeable. Voir
 /usr/lib/modules_help/descr.gz pour avoir une liste des param�tres
 possibles. Le modules � charger est indiqu� dans /etc/modules avec ses
 param�tres. Dans certains autres cas les ressources du bus peuvent
 �tre indiqu�es au noyau par des param�tres.  Ceux-ci sont mis dans le
 fichier lilo.conf sous la forme append="...".  Dans ce cas le
 programme lilo doit �tre ex�cut� pour enregistrer ces donn�es dans le
 code de d�marrage du noyau.

 Alors qu'il y a une grande diversit� dans la mani�re dont les pilotes
 peuvent trouver les ressources du bus, le but final est le m�me. Il y
 a tellement de p�riph�riques diff�rents et de pilotes de p�riph�riques
 pour les g�rer que vous pouvez avoir besoin de consulter la
 documentation de votre pilote particulier pour trouver comment celui-
 ci g�re les ressources du bus et ce que vous avez besoin de faire pour
 vous assurer qu'il trouve les infos dont il a besoin. Quelques br�ves
 indications sur un petit nombre de pilotes de p�riph�riques sont
 donn�es dans les paragraphes suivants.


 66..22..  PPiilloottee dduu ppoorrtt ss��rriiee :: sseettsseerriiaall

 Pour le pilote de port s�rie standard (et non pas pour les cartes
 multi-ports) vous utilisez setserial pour en configurer le pilote. Ce
 programme est souvent lanc� � partir d'un fichier de d�marrage. Dans
 les versions les plus r�centes, on trouve un fichier  /etc/serial.conf
 que vous pouvez "�diter" en utilisant simplement la commande setserial
 de la mani�re habituelle et ce que vous param�trez en utilisant
 setserial est sauvegard� dans le fichier serial.conf. Le fichier
 serial.conf devrait �tre consult� lors de l'ex�cution de la commande
 setserial lanc�e par un fichier de d�marrage. Votre distribution peut
 le faire ou ne pas le faire pour vous.

 Il y a deux mani�res diff�rentes d'utiliser setserial selon les
 options que vous choisissez. Une m�thode consiste � indiquer la
 configuration manuellement au pilote. L'autre m�thode consiste �
 tester une adresse donn�e et � voir s'il y a un port s�rie � cette
 adresse. On peut aussi tester cette adresses et essayer de d�tecter si
 une interruption est utilis�e pour ce port. Le pilote ex�cute quelque
 chose comme setserial au d�marrage, mais ne teste pas les
 interruptions, il affecte simplement l'interruption "standard" ce qui
 peut ne pas correspondre � la r�alit�. Il teste uniquement l'existence
 d'un port. Consulter le Serial-HOWTO pour avoir des d�tails
 compl�mentaires.


 66..33..  PPiillootteess ddee ccaarrtteess ssoonn

 66..33..11..  OOSSSS--LLiittee

 Vous devez passer IO, IRQ, et DMA en tant que param�tres � un module
 ou les compiler dans le noyau. Mais quelques cartes PCI seront
 d�tect�es automatiquement (par exemple en prenant les infos dans
 /proc/pci ou quelque chose d'�quivalent).  RedHat fournit un programme
 "sndconfig" qui d�tecte les cartes ISA PnP et param�tre
 automatiquement les modules pour les charger avec les ressources de
 bus trouv�es.


 66..33..22..  OOSSSS ((OOppeenn SSoouunndd SSyysstteemm)) eett AALLSSAA

 Ils d�tecteront les cartes par les m�thodes _P_n_P puis choisiront le
 pilote appropri� et le chargeront. Ils param�treront �galement les
 ressources du bus sur une carte ISA-PnP. Vous pouvez avoir �
 intervenir manuellement pour r�soudre les probl�mes de conflits. Pour
 le pilote ALSA, la prise en charge de l'ISA-PnP est optionnelle et
 vous pouvez utiliser isapnp si vous le voulez.


 77..  QQuueellllee eesstt mmaa ccoonnffiigguurraattiioonn aaccttuueellllee??

 Ici "configuration" concerne l'attribution des ressources _P_n_P du bus
 (adresses, IRQ, et DMA). C'est une question � deux volets pour chaque
 p�riph�rique, et chacun d'eux doit avoir le m�me r�ponse.

 1. Quelle est la configuration du logiciel du pilote de p�riph�rique ?
    Autrement dit : comment le pilote pense-t-il que le mat�riel est
    configur� ?

 2. Quelle est la configuration (s'il y a lieu) du  mat�riel
    p�riph�rique ?

 Naturellement la configuration mat�rielle du p�riph�rique et celle de
 son pilote doivent �tre les m�mes (et normalement, c'est le cas).
 Mais, si les choses ne se passent pas bien, c'est qu'il y a peut-�tre
 une diff�rence. Cela signifie que le pilote a des donn�es incorrectes
 concernant la configuration r�elle du mat�riel, et dysfonctionnement.
 Si le logiciel que vous utilisez ne vous indique pas correctement ce
 qui ne va pas (ou n'effectue pas la configuration correcte
 automatiquement), il vous faudra chercher la configuration mat�rielle
 des p�riph�riques et celle des pilotes correspondants. Alors que les
 pilotes de p�riph�riques de Linux devraient "tout nous dire", il y a
 des cas o� il n'est pas facile de d�terminer comment le mat�riel a �t�
 configur�.

 Un autre probl�me vient de ce que les messages � l'�cran indiquant la
 configuration ne sont pas toujours clairs quant � la nature de la
 configuration qu'ils concernent : le pilote de p�riph�rique, le
 p�riph�rique lui-m�me ou les deux. Si le pilote de p�riph�rique s'est
 vu attribu� une configuration et qu'ils teste le mat�riel pour
 v�rifier qu'il est configur� de la m�me mani�re, alors la
 configuration indiqu�e par le pilote devrait �tre � la fois celle du
 pilote et du mat�riel.

 Mais certains pilotes ne se comportent pas comme cela et peuvent
 accepter une configuration qui ne puisse pas se v�rifier. Par exemple,
 "setserial" acceptera une configuration qui ne se v�rifie pas (m�me si
 vous demandez un test des ressources du bus). Dans ce cas "setserial"
 peut uniquement vous indiquer la configuration du pilote et pas celle
 du mat�riel.

 Quelques infos concernant la configuration peuvent �tre obtenues en
 lisant les messages du BIOS et de Linux qui apparaissent � l'�cran au
 d�marrage initial de l'ordinateur. Souvent, ces messages d�filent trop
 rapidement pour pouvoir �tre lus, mais lorsque leur d�filement
 s'arr�te, tapez plusieurs fois sur la touche "Majuscule + d�filement
 arri�re" (Shift-PageUp) pour les visualiser. Pour visualiser la suite,
 taper sur la touche "Majuscule + d�filement avant" (Shift-PageDow). La
 commande "dmesg" n'importe quand n'affichera que les messages du noyau
 Linux et les messages les plus importants peuvent manquer (y compris
 ceux du BIOS).  Les messages de Linux peuvent quelquefois n'indiquer
 que la vue de la configuration par les pilotes de p�riph�rique, et ces
 informations peuvent parfois provenir d'un fichier de configuration
 incorrect.

 Les messages du BIOS affichent la configuration r�elle du mat�riel �
 cet instant donn�, mais un SE _P_n_P, isapnp ou les utilitaires PCI
 peuvent la modifier ult�rieurement. Les messages du BIOS sont affich�s
 avant ceux de Linux. Comme alternative au rappel des messages par les
 touches "majuscule + d�filement arri�re", essayez de geler l'affichage
 en tapant sur la touche "Pause". Taper sur n'importe quelle touche
 pour continuer. Mais, une fois que les messages de Linux commencent �
 appara�tre, c'est trop tard pour utiliser la touche "Pause"
 puisqu'alors, les messages de Linux ne sont pas gel�s.


 77..11..  CCoommmmeenntt mmeess ppiillootteess ddee pp��rriipphh��rriiqquueess ssoonntt--iillss ccoonnffiigguurr��ss ??

 Il y a des programmes que l'on peut lancer de la ligne de commande
 (tel que "setserial" pour les ports s�rie) pour le d�terminer.
 L'arborescence du r�pertoire /proc est utile.  /proc/ioports indique
 les adresses d'E/S utilis�es par les pilotes (ou essaye si c'est
 faux). Ils peuvent ne pas �tre configur�s de cette fa�on dans le
 mat�riel.

 /proc/interrupts n'indique que les interruptions utilis�es
 actuellement et beaucoup de celles qui ont �t� allou�es aux pilotes ne
 sont pas affich�es car elles ne sont pas actuellement utilis�es. Par
 exemple, m�me s'il y a une disquette dans l'unit� et qu'elle est pr�te
 � �tre utilis�e, l'interruption la concernant ne sera pas affich�e, �
 moins qu'elle ne soit effectivement en cours d'utilisation. De plus,
 une interruption indiqu�e ici  ne signifie pas qu'elle existe dans le
 mat�riel. Un indice du fait qu'elle n'existe pas dans le mat�riel
 consiste � v�rifier que le nombre d'interruptions g�n�r�es est 0. Et
 encore, m�me si l'on voit que quelques interruptions ont �t� g�n�r�es,
 cela peut signifier que cette interruption n'existe pas pour ce
 p�riph�rique mais par un autre p�riph�rique qui n'est pas en cours
 d'utilisation mais qui a pu g�n�rer une interruption ou deux.  Dans le
 noyau 2.2 l'arborescence /proc a �t� modifi�e.


 77..22..  CCoommmmeenntt mmeess pp��rriipphh��rriiqquueess ssoonntt--iillss ccoonnffiigguurr��ss ??

 C'est facile de trouver quelles ressources du bus ont �t� attribu�es �
 des p�riph�riques sur un bus PCI : on utilise soit la commande "lspci"
 ou, pour les noyaux <: 2.2: voir /proc/pci; pour les noyaux 2.2+:
 /proc/bus/pci/devices. Pour le bus ISA, on peut essayer de faire
 tourner pnpdump --dumpregs, mais ce n'est pas une m�thode s�re. Les
 r�sultats peuvent �tre difficile � d�coder. Ne pas confondre les
 adresses de port de lecture que pnpdump "essaye" (et o� il trouve
 quelque chose) avec les adresses d'E/S du p�riph�rique trouv�. Ce ne
 sont pas les m�mes.

 Les messages en provenance du BIOS, lors du d�marrage, indique la
 configuration mat�rielle au moment du d�marrage. Si vous vous basez
 sur le BIOS pour faire votre configuration, ils faut qu'elle soit
 encore valable. Les messages de Linux peuvent provenir des pilotes qui
 ont fait des essais pour v�rifier la pr�sence du mat�riel (et
 �ventuellement des essais sur les IRQ et le DMA).  Naturellement, si
 le p�riph�rique fonctionne correctement, alors il doit �tre configur�
 comme son pilote.



 88..  AAppppeennddiiccee

 88..11..  AAddrreesssseess

 Il y a trois types d'adresses : les adresses m�moire centrale, les
 adresses d'E/S et les adresses de configuration. Pour le bus PCI, les
 adresses de configuration constituent un espace d'adressage s�par�,
 exactement comme le sont les adresses d'E/S. Sauf dans le cas des
 adresses de configuration ISA, qu'une adresse sur le bus d'adresses
 (ou sur le bus partag� adresses-donn�es dans le cas du PCI) soit ou
 non une adresse m�moire, une adresse d'E/S ou une adresse de
 configuration d�pend uniquement des tensions sur d'autres fils
 (pistes) du bus.


 88..11..11..  AAddrreesssseess ddee ccoonnffiigguurraattiioonn ssuurr llee bbuuss IISSAA ((PPoorrtt ddee lleeccttuurree
 eettcc..))

 En ce qui concerne le bus ISA, il n'y a pas, techniquement, d'espace
 d'adressage de configuration, mais il existe, pour le CPU, une m�thode
 sp�ciale d'acc�s aux registres de configuration sur les cartes PnP.
 Trois adresses d'E/S sont r�serv�es � cet usage. Ces 3 adresses ne
 sont pas diff�rentes pour chaque carte, mais sont partag�es par toutes
 les cartes.

 Les trois adresses sont appel�es port de lecture, port d'�criture et
 port d'adresse. Ces ports ont la taille d'un octet. Chaque carte PnP
 poss�de un certain nombre de registres car ces trois adresses seules
 ne sont pas suffisantes pour une simple carte. Pour communiquer avec
 une carte, le num�ro de la carte (handle) est envoy� � toutes les
 cartes sur le port d'�criture. Une seule carte reconna�t son num�ro et
 se met � l'�coute.  Alors l'adresse du registre concern� est envoy�e
 sur le port adresse (de toutes les cartes, mais une seule est �
 l'�coute). Ensuite, on fait une �criture sur le port d'�criture ou une
 lecture sur le port de lecture.

 Le port d'�criture est toujours � l'adresse A79 et le port d'adresse
 est toujours 279. Le port de lecture n'est pas d�termin� et est
 initialis� par le logiciel de configuration � une adresse qui est
 suppos�e ne pas �tre en conflit avec une autre carte ISA. S'il y a
 conflit, il modifiera l'adresse.  Pour toutes les cartes PnP, cette
 adresses est "programm�e". Donc, si vous utilisez disons, isapnp, pour
 initialiser ou tester des donn�es de configuration, vous aurez besoin
 de conna�tre l'adresse du port de lecture.


 88..11..22..  CChhaammppss dd''aaddrreesssseess

 Le terme "adresse" est quelquefois utilis� dans ce document pour
 parler d'une s�rie d'adresses contigu�s. Comme les adresses sont
 donn�es en octets, une simple adresses contient uniquement un octet
 mais les adresses E/S (et m�moire centrale) ont besoin de plus que
 cela. Donc un espace de, disons, 8 octets est souvent utilis� pour les
 adresses d'E/S alors que le nombre d'adresses en m�moire centrale
 allou�es � un p�riph�rique est beaucoup plus grand. Pour un port s�rie
 (p�riph�rique d'E/S), il suffit de donner l'adresse de d�part du
 p�riph�rique (par exemple 3F8) puisqu'il est bien connu que le champ
 d'adresses de ce type de p�riph�rique est seulement de 8 octets.
 Cette adresse de d�part est connue sous le nom "d'adresse de base".


 88..11..33..  EEssppaaccee dd''aaddrreesssseess

 En ce qui concerne l'ISA, pour acc�der � la fois aux "espaces"
 d'adresses E/S et m�moire (centrale) on utilise le m�me bus d'adresses
 (les fils utilis�s pour les adresses sont partag�s). Comment le
 p�riph�rique reconna�t-il si une adresse qui appara�t sur le bus
 d'adresses est une adresse m�moire ou une adresse E/S ?  Eh bien, il y
 a quatre lignes sp�cialis�es du bus qui v�hiculent cette information
 et un peu plus. Si l'un de ces quatre fils est aliment�, cela indique
 que le CPU veut lire une adresse E/S, et la m�moire centrale ne tient
 pas compte de l'adresse pr�sente sur les fils d'adresses du bus. Les
 trois autres fils sont utilis�s � des fins identiques. En r�sum� : il
 existe des lignes de lecture et d'�criture pour les adresses m�moire
 centrale et pour celles d'E/S (4 fils en tout).

 Pour le bus PCI, l'id�e de base est identique et on utilise �galement
 4 fils, mais c'est r�alis� de fa�on l�g�rement diff�rente. Au lieu
 d'avoir uniquement l'un des quatre fils aliment�, on code un nombre
 binaire sur ces fils (16 possibilit�s diff�rentes). On peut donc
 v�hiculer plus d'informations. Quatre de ces 16 valeurs sont utilis�es
 pour les espaces m�moire et E/S comme dans le paragraphe ci-dessus. En
 plus, on trouve l'espace des adresses de configuration qui utilise
 deux valeurs suppl�mentaires. Les dix possibilit�s restantes sont
 r�serv�es pour d'autres utilisations.






 88..11..44..  VV��rriiffiiccaattiioonn ddeess cchhaammppss dd''aaddrreesssseess ((TTeesstt ddeess ccoonnfflliittss
 dd''aaddrreesssseess EE//SS IISSAA))

 Pour le bus ISA, il existe un syst�me implant� sur chaque carte PnP
 pour v�rifier que d'autres cartes n'utilisent pas la m�me adresse.  Si
 deux cartes ou plus utilisent les m�mes adresses d'E/S, aucune des
 cartes ne fonctionnera correctement. Un bon logiciel _P_n_P devrait
 affecter les ressources du bus pour �viter de tels conflits, mais,
 m�me dans ce cas, une carte ancienne pourrait se cacher quelque part
 avec la m�me adresse.

 Le test consiste, pour la carte, � donner, sur le bus, comme num�ros
 de test ses propres registres d'E/S. Le logiciel _P_n_P les lit et
 v�rifie qu'il lit les m�mes num�ros. Si tel n'est pas le cas, quelque
 chose ne va pas (comme, par exemple, une autre carte � la m�me
 adresse). Il r�p�te alors le test avec un autre num�ro de test.
 Puisqu'en r�alit� il teste le champ des adresses d'E/S assign� � cette
 carte, on l'appelle " test des champs d'adresses". On devrait plut�t
 l'appeler "test des conflits d'adresses".  S'il y a un conflit
 d'adresses, on obtient un message d'erreur qu'il faut r�soudre par ses
 propres moyens.


 88..11..55..  CCoommmmuunniiccaattiioonn ddiirreeccttee vviiaa llaa mm��mmooiirree..

 Traditionnellement, la plupart des p�riph�riques d'E/S utilisaient les
 E/S m�moire pour communiquer avec le CPU. Par exemple, le port s�rie
 fonctionne de cette fa�on. Le pilote de p�riph�rique, qui tourne sur
 le CPU lit et �crit les donn�es de/vers l'espace des adresses d'E/S et
 la m�moire centrale.  Une m�thode plus rapide consisterait � faire
 mettre les donn�es directement en m�moire centrale par le
 p�riph�rique. Une mani�re de le r�aliser est d'utiliser l'acc�s direct
 m�moire (``Canaux DMA'').  Une autre m�thode consiste � affecter un
 espace de la m�moire centrale au p�riph�rique. Comme cela, le
 p�riph�rique lit et �crit directement en m�moire centrale sans avoir �
 se pr�occuper de l'acc�s direct m�moire (DMA).  De tels p�riph�riques
 poss�dent normalement des adresses d'E/S et des adresses m�moire.


 88..22..  LLeess iinntteerrrruuppttiioonnss -- DDeessccrriippttiioonn dd��ttaaiillll��ee..

 Le syst�me d'interruption v�hicule un paquet d'informations, mais
 seulement de fa�on indirecte. Le signal d'interruption (une tension
 sur un fil) indique simplement � un circuit appel� contr�leur
 d'interruptions qu'un certain p�riph�rique a besoin que l'on s'occupe
 de lui. Le contr�leur d'interruption le signale alors au CPU. Le CPU
 va chercher le pilote de ce p�riph�rique et en ex�cute une partie que
 l'on d�signe sous le nom de "routine de service de l'interruption" (ou
 "routine de gestion de l'interruption").  Cette "routine" essaie de
 voir ce qui s'est pass� et se charge de traiter la question comme, par
 exemple, de transf�rer des octets du (ou vers le) p�riph�rique. Ce
 programme (cette routine) peut facilement analyser ce qui s'est pass�
 puisqu'il conna�t les adresses des registres (� condition que les
 num�ros d'interruption (IRQ) et que les adresses d'E/S aient �t�
 correctement renseign�es). Ces registres contiennent les informations
 concernant l'�tat du p�riph�rique. Le logiciel lit le contenu de ces
 registres et, en examinant ce contenu, voit ce qui s'est pass� et
 entreprend l'action appropri�e.

 Donc, chaque pilote de p�riph�rique a besoin de savoir quel est le
 num�ro d'interruption (IRQ) qui le concerne. Sur le bus PCI (et pour
 les ports s�rie sur un bus ISA depuis la version du noyau 2.2) il est
 possible que deux p�riph�riques ou plus se partagent le m�me IRQ
 (num�ro d'interruption).  Cela est rendu possible en faisant ex�cuter
 par le CPU toutes les routines de service d'interruption de tous les
 p�riph�riques qui utilisent cette interruption. La premi�re chose que
 r�alise une telle routine de service consiste � tester si
 l'interruption concerne son p�riph�rique. Si tel n'est pas le cas
 (fausse alarme), elle se termine et le traitement continue avec la
 routine de service suivante etc.



 88..33..  IInntteerrrruuppttiioonnss PPCCII

 Les interruptions PCI sont diff�rentes, mais comme elles correspondent
 normalement aux IRQ, elles se comportent � peu pr�s de la m�me fa�on.
 Le fait que les interruptions PCI puissent �tre partag�es constitue
 une diff�rence majeure. Par exemple l'IRQ5 peut �tre partag�e entre
 deux p�riph�riques PCI. Cette possibilit� de partage est automatique :
 il n'est pas n�cessaire de disposer d'un mat�riel ou d'un logiciel
 sp�cial.  On a entendu parler de situations o� un tel partage ne
 fonctionne pas, mais la cause r�side certainement dans le logiciel du
 pilote de p�riph�rique.  Tous les pilotes de p�riph�rique PCI sont
 suppos�s fonctionner avec partage des interruptions. Il faut cependant
 noter que le partage d'une m�me interruption entre un bus ISA et PCI
 n'est pas possible. Mais un partage ill�gal d'interruption
 fonctionnera � condition que les p�riph�riques en conflit ne soient
 pas utilis�s en m�me temps. "En m�me temps" signifie ici qu'un
 programme en cours d'ex�cution "ouvre" le p�riph�rique dans le
 programme C.

 Vous pouvez avoir besoin de conna�tre quelques-uns des d�tails du
 syst�me d'interruption PCI de fa�on � pouvoir param�trer la m�moire
 CMOS du BIOS ou pour positionner les cavaliers sur de vieilles cartes
 PCI. Le bus PCI poss�de quatre lignes d'interruptions de INTA# � INTD#
 (A, B, C et D).  Pour un syst�me � 7 connecteurs, d'apr�s les
 sp�cifications, on aurait la possibilit� de disposer de 7 x 4 = 28
 lignes d'interruptions diff�rentes.  Mais ces sp�cifications ne
 permettent qu'un nombre inf�rieur de lignes d'interruption. Ce n'est
 pas trop contraignant puisque l'on peut partager les interruptions.
 Beaucoup de bus PCI ne paraissent disposer que de 4 lignes
 d'interruption. Appelons ces lignes (fils ou pistes) W, X, Y et Z.
 Supposons que l'on d�signe l'interruption B de l'emplacement num�ro 3
 comme �tant l'interruption 3B. Alors, on peut utiliser le fil W pour
 partager les interruptions 1A, 2B, 3C, 4D, 5A, 6B, 7C. On le r�alise
 physiquement en connectant le fil W aux fils 1A, 2B etc... De m�me, le
 fil X pourrait �tre connect� aux fils 1B, 2C, 3D, 4A, 5B, 6C, 7D. Au
 d�marrage, le BIOS fait correspondre X, W, Y, Z aux interruptions.
 Ensuite il �crit dans un registre physique de chaque p�riph�rique
 quelle interruption lui a �t� affect�e de sorte que le p�riph�rique
 (et tout ce qui interroge le p�riph�rique) sache quelle IRQ il
 utilise.

 Les fils X, W, Y et Z mentionn�s ci-dessus sont d�sign�s dans les
 sp�cifications PCI par les noms INTA#, INTB#, INTC# et INTD#. Cette
 d�nomination officielle PCI porte � confusion puisque, maintenant,
 INTA# a deux significations selon que l'on parle du connecteur ou du
 bus PCI.  Par exemple, si 3C correspond � X alors on dira que l'INTC#
 du connecteur 3 est reli�e � l'INTA# (X) du bus PCI. C'est une
 notation confuse.

 Il y a �galement une autre obligation. Un connecteur PCI doit utiliser
 les premi�res lettres d'interruption en premier. Donc, s'il n'y a
 qu'un connecteur � utiliser une interruption, ce doit �tre L'INTA#.
 S'il utilise 2 interruptions ce doivent �tre INTA# et INTB# etc.
 Jusqu'� 8 p�riph�riques peuvent �tre connect�s � une carte � un
 emplacement donn�, mais ils ne peuvent disposer que de 4 interruptions
 PCI. Cela ne pose pas de probl�me puisque les interruptions peuvent
 �tre partag�es et donc, chacun des 8 p�riph�riques (s'ils sont
 pr�sents) pourra disposer d'une interruption. La lettre d'interruption
 PCI d'un p�riph�rique est souvent fixe et c�bl�e dans le p�riph�rique.
 Le BIOS affecte les IRQ(demandes d'interruptions) de fa�on � �viter
 les conflits avec les IRQ qu'il conna�t sur le bus ISA. Quelquefois,
 dans le menu CMOS, on peut affecter des IRQ aux cartes PCI (mais ce
 n'est pas aussi facile � faire que ce qui a �t� expliqu� ci-dessus).
 Il existe une situation dans laquelle Windows met � z�ro tous les
 num�ros d'interruption dans les cartes PCI apr�s que l'affectation des
 num�ros d'interruption a �t� effectu�. Alors, quelqu'un qui utilise
 Windows et qui lance Linux � partir de Windows verra Linux ne trouver
 que des IRQ incorrectement param�tr�es � z�ro.

 Vous pourriez penser que l'utilisation par le PCI des IRQ (bus ISA)
 peut �tre lent etc. Pas vraiment. Le(s) circuit(s) contr�leur(s)
 d'interruptions ISA poss�de(nt) un fil d'interruption directement
 reli� au CPU afin que celui-ci puisse r�agir imm�diatement. Alors que
 les signaux sur les bus d'adresse et de donn�es ISA doivent cheminer �
 travers le bus PCI pour atteindre le CPU, les signaux d'interruption
 IRQ lui parviennent pratiquement directement.



 88..44..  IIssoollaattiioonn


 C'est uniquement valable pour le bus ISA. L'isolation est une m�thode
 complexe d'assignation d'un identificateur temporaire (id number =
 num�ro d'identification ou Card Select Number (CSN) = num�ro de
 s�lection de carte) � chaque p�riph�rique _P_n_P sur le bus. Puisqu'il
 existe des moyens plus efficaces (mais plus complexes) pour le faire,
 certains pourront affirmer que c'est une m�thode simpliste. On
 n'utilise qu'une seule adresse d'�criture pour toutes les �critures
 sur tous les p�riph�riques _P_n_P connect�s. Cette adresse est utilis�e
 pour envoyer (assigner) un identificateur unique � chaque p�riph�rique
 _P_n_P. L'attribution de cet identificateur impose qu'un seul
 p�riph�rique soit � l'�coute lorsque cet identificateur est envoy�
 (�crit) � cette adresse commune. Tous les p�riph�riques _P_n_P ont un
 num�ro de s�rie unique qu'ils utilisent dans le processus d'isolation.
 La r�alisation de l'isolation ressemble � un jeu. Elle est r�alis�e en
 utilisant l'�quivalent d'un bus � un seul fil reliant tous les
 p�riph�riques _P_n_P et du programme d'isolation.

 Lors de la premi�re manche de ce "jeu", tous les p�riph�riques _P_n_P
 sont � l'�coute sur ce fil et envoient simultan�ment une s�quence de
 bits sur le fil. Les valeurs permises sont soit des 1 (tension
 positive) soit des "0 ouverts" sans tension (circuit ouvert ou
 troisi�me �tat). Chaque p�riph�rique _P_n_P commence � envoyer
 s�quentiellement son num�ro de s�rie, bit par bit, en commen�ant par
 le bit de poids fort, sur le fil.  Si l'un des p�riph�riques envoie un
 1 sur le fil, un 1 sera re�u par tous les autres. Si tous les
 p�riph�riques envoient un "0 ouvert", on n'entendra rien sur le fil.
 L'objectif est d'�liminer (� la fin de cette premi�re manche) tout le
 monde sauf le p�riph�rique ayant le num�ro de s�rie le plus �lev�. Par
 "�liminer", on entend cesser d'�couter plus avant l'adresse d'�criture
 que tous les p�riph�riques encore dans la course continuent d'�couter.
 On appelle �galement cela "se retirer". (Il faut noter que tous les
 num�ros de s�rie sont de m�me longueur).

 En premier lieu, ne prenons en consid�ration que le bit de poids le
 plus �lev� du num�ro de s�rie mis sur le fil par tous les
 p�riph�riques n'ayant pas encore d'identificateur. Si l'un des
 p�riph�riques _P_n_P envoie un 0 (0 ouvert) mais re�oit un 1, cela
 signifie qu'un autre p�riph�rique _P_n_P poss�de un num�ro de s�rie
 sup�rieur au sien. Donc, il se retire provisoirement du jeu et
 n'�coute plus ce qui se passe sur la ligne jusqu'� la fin de cette
 manche (quand un identificateur est attribu� au gagnant : celui qui a
 le num�ro de s�rie le plus �lev�).  Alors, les p�riph�riques encore de
 la partie poss�dent tous le bit de poids fort (un 1), donc, nous
 pouvons supprimer ce bit et prendre en compte uniquement le "num�ro de
 s�rie tronqu�" r�sultant pour continuer � participer � cette manche.
 Retournez au d�but de ce paragraphe et r�p�tez le processus jusqu'� ce
 que le num�ro de s�rie complet ait �t� trait� pour chacun des
 p�riph�riques (voir ci-dessous comment est trait� le cas o� il n'y a
 que des 0).

 Il est donc clair que le num�ro de s�rie le plus �lev� ne sera pas
 �limin� de la partie. Mais qu'en est-il si les chiffres de t�te (du
 num�ro de s�rie �ventuellement tronqu�) sont tous des 0 ?. Dans ce cas
 un "0 ouvert" est envoy� sur la ligne et tous les participants restent
 en lice. S'ils ont tous des z�ros en t�te, alors les 0 sont �limin�s
 exactement comme les 1 au paragraphe ci-dessus. La partie continue et
 les chiffres suivants (du num�ro de s�rie) sont envoy�s.

 � la fin de la manche (lorsque le bit de poids faible du num�ro de
 s�rie du concurrent restant a �t� �mis), seul le p�riph�rique _P_n_P
 ayant le num�ro de s�rie le plus �lev� est pr�sent. On lui donne alors
 un identificateur et il quitte la partie d�finitivement. Ensuite, tous
 les �limin�s de la derni�re manche (ceux qui n'ont pas encore obtenu
 d'identificateur) reviennent dans le jeu et une nouvelle manche
 commence avec un concurrent de moins. Finalement, tous les
 p�riph�riques _P_n_P se verront attribuer un identificateur. Il est
 facile de prouver que cet algorithme fonctionne.

 Une fois que tous les identificateurs ont �t� attribu�s,ils sont
 utilis�s pour s'adresser � chacun des p�riph�riques _P_n_P pour les
 configurer et lire leur configuration. On notera que ces
 identificateurs ne sont utilis�s que pour la configuration _P_n_P et ne
 sont pas utilis�s pour les communications normales avec le
 p�riph�rique _P_n_P. Au d�marrage de l'ordinateur, tous les
 identificateurs sont perdus et, donc, un BIOS PnP refait normalement
 ce processus d'isolation � chaque fois que vous remettez votre PC en
 service.


 FIN DU Plug-and-Play-HOWTO