Guide pratique du Plug-and-Play

  Adaptation franaise du Plug-and-Play HOWTO

  David S. Lawyer

   <dave
   CHEZ lafn POINT org>

  Guillaume Lelarge

   Traduction franaise <gleu CHEZ wanadoo POINT fr>

  Jean-Philippe Gurard

   Prparation de la publication de la v.f. <fevrier CHEZ tigreraye POINT
   org>

   Version : 1.15.fr.0.9

   Copyright  1998-2007 David S. Lawyer

   Copyright  2003-2007 Guillaume Lelarge, Jean-Philippe Gurard

   2006-09-04

   +------------------------------------------------------------------------+
   | Historique des versions                                                |
   |------------------------------------------------------------------------|
   | Version 1.15.fr.0.9           | 2007-09-04          | GL, JPG          |
   |------------------------------------------------------------------------|
   | Version franaise mise  jour mais non relue.                          |
   |------------------------------------------------------------------------|
   | Version 1.15                  | 2007-08-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.14.fr.0.9           | 2006-03-07          | GL, JPG          |
   |------------------------------------------------------------------------|
   | Version franaise mise  jour mais non relue. Prise en compte des      |
   | corrections suggres par Jean-Philippe Gurard et par Bernard Adrian. |
   |------------------------------------------------------------------------|
   | Version 1.14                  | 2006-02-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.13.fr.0.9           | 2005-08-22          | GL, JPG          |
   |------------------------------------------------------------------------|
   | Version franaise non relue. Prise en compte des corrections suggres |
   | par Black Myst.                                                        |
   |------------------------------------------------------------------------|
   | Version 1.13                  | 2005-08-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.12                  | 2005-03-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.11.fr.0.9           | 2004-11-20          | GL, JPG          |
   |-------------------------------+---------------------+------------------|
   | Version 1.11                  | 2004-11-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.10.fr.0.9           | 2004-09-11          | GL, JPG          |
   |-------------------------------+---------------------+------------------|
   | Version 1.10                  | 2004-08-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.09                  | 2004-08-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.08.fr.0.9           | 2004-07-22          | GL               |
   |-------------------------------+---------------------+------------------|
   | Version 1.08                  | 2004-06-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.07.fr.0.9           | 2003-09-27          | GL               |
   |-------------------------------+---------------------+------------------|
   | Version 1.07                  | 2002-08-??          | DSL              |
   |-------------------------------+---------------------+------------------|
   | Version 1.06.fr.0.9           | 2003-05-08          | GL               |
   |-------------------------------+---------------------+------------------|
   | Version 1.06                  | 2002-09-??          | DSL              |
   +------------------------------------------------------------------------+

   Rsum

   Le Plug-and-Play (ou PnP) est un systme de dtection et de configuration
   automatique du matriel PC. Ce guide pratique prsente en dtail les
   diffrentes ressources bas niveau gres par le Plug-and-Play, telles que
   les adresses, les interruptions, et ctera. Ce guide couvre le bus PCI
   (qui a t conu ds le dpart pour le Plug-and-Play) et l'utilisation du
   Plug-and-Play sur l'ancien bus ISA. Si le Plug-and-Play faisait son
   travail correctement, vous n'auriez pas besoin de ce guide pratique. Dans
   le cas contraire ou si vous disposez d'un vieux matriel qui n'utilise pas
   le Plug-and-Play pour toutes les cartes, ce guide pratique vous aidera. Il
   ne couvre pas le UPnP (Universal Plug and Play).

   --------------------------------------------------------------------------

   Table des matires

   1. Introduction

                1.1. Droits d'utilisation, avertissements et remerciements

                1.2. Plans futurs : vous pouvez aider

                1.3. Nouvelles versions de ce guide pratique

                1.4. Nouveauts des dernires versions

                1.5. Introduction gnrale. Avez-vous besoin de ce guide
                pratique ?

   2. Ce que PnP doit faire : allouer des  ressources bus 

                2.1. En quoi consiste le Plug-and-Play (PnP) ?

                2.2. Priphriques matriels et la communication avec ces
                derniers

                2.3. Adresses

                2.4. Adresses d'entres/sorties (principes relatifs 
                d'autres ressources)

                2.5. Plages mmoire

                2.6. IRQ - un aperu

                2.7. DMA (accs direct  la mmoire) ou matrise du bus

                2.8. Canaux DMA (non pas pour le bus PCI)

                2.9.  Ressources  du priphrique et du pilote

                2.10. Les ressources sont limites

   3. Deuxime introduction au Plug-and-Play (PnP)

                3.1. Introduction  PnP

                3.2. Comment fonctionne le PnP (explication simplifie)

                3.3. Dmarrer le PC

                3.4. Les bus

                3.5. Comment Linux gre-t-il le PnP

                3.6. Problmes avec Linux PnP

   4. Configurer un BIOS PnP

                4.1. Avez-vous un systme d'exploitation PnP ?

                4.2. Affecter les ressources par le BIOS ?

                4.3. Rinitialiser la configuration

   5. Grer les cartes PnP

                5.1. Introduction  la gestion des priphriques PnP

                5.2. Configuration du pilote de priphrique, rservation des
                ressources

                5.3. /sys : interface de configuration pour l'utilisateur

                5.4. Configuration du BIOS

                5.5. ISA seulement : Dsactiver PnP ?

                5.6. Bus ISA : Isapnp (outil faisant partie d'isapnptools)

                5.7. Les utilitaires PCI

                5.8. Configuration de Windows

                5.9. Documents/Logiciels PnP

   6. Indiquer au pilote la configuration ??

                6.1. Introduction

                6.2. Exemple de pilote de port srie

   7. Comment puis-je trouver les priphriques et comment sont-ils
   configurs ?

                7.1. La recherche des priphriques et la dcouverte de la
                configuration sont lis

                7.2. Les priphriques pourraient avoir deux
                 configurations 

                7.3. Trouver le matriel

                7.4. Messages de dmarrage

                7.5. Le rpertoire /proc

                7.6. Le rpertoire /sys

                7.7. Inspection du bus PCI

                7.8. Introduction au bus ISA

                7.9. Cartes ISA PnP

                7.10. Bus LPC

                7.11. X-bus

                7.12. Cartes non PnP

                7.13. Cartes non PnP avec cavaliers

                7.14. Cartes non PnP et sans cavaliers

                7.15. Outils pour dtecter ou configurer le matriel

                7.16. Outils pour dtecter et configurer un type de matriel

                7.17. Utilisez MS Windows

   8. Interruptions PCI

                8.1. Introduction

                8.2. Historique : des interruptions ISA aux PCI

                8.3. Contrleur avanc d'interruptions programmes (APIC,
                acronyme de Advanced Programmable Interrupt Controller)

                8.4. Interruptions signales par message (MSI)

                8.5. Partage des interruptions PCI

                8.6. Recherche dans les tables de routage

                8.7. Pour plus d'informations

   9. Lier les interruptions PCI

   10. PnP pour les priphriques externes et ajouts

                10.1. Bus USB

                10.2. Hot Plug

                10.3. Hot Swap

                10.4. PnP dtecte les priphriques connects aux ports
                sries

   11. Messages d'erreurs

                11.1. Unexpected Interrupt (Interruption inattendue)

                11.2. Erreur de configuration Plug and Play (BIOS Dell)

                11.3. isapnp: Write Data Register 0xa79 already used (
                partir des journaux)

                11.4. Impossible d'allouer la rgion (PCI)

   12. Partage et conflit d'interruption

                12.1. Introduction

                12.2. Vrai conflit d'interruption

                12.3. Aucune interruption disponible

   13. Annexe

                13.1. Universal Plug and Play (UPnP)

                13.2. Dtails des adresses

                13.3. Adresses de configuration du bus ISA (Port de lecture
                et ctera)

                13.4. Dtails sur les interruptions

                13.5. Comment le pilote de priphrique rcupre son
                interruption

                13.6. Isolation ISA

                13.7. Matrise du bus et ressources DMA

                13.8. Historique et obsolescence

   A. Adaptation franaise

                1. Traduction

                2. Prparation de la publication

1. Introduction

  1.1. Droits d'utilisation, avertissements et remerciements

    1.1.1. Copyright

   [1][Important] Important
                  Le texte ci-dessous est la licence de ce document. Ce texte
                  fait foi. Il est compos de la licence (en anglais) du
                  document original, suivi de la licence (en franais) de sa
                  traduction.

   Copyright  1998-2005 by David S. Lawyer <dave CHEZ lafn POINT org>.

   Please freely copy and distribute (sell or give away) this document in any
   format. Send any corrections and comments to the document maintainer. You
   may create a derivative work and distribute it provided that you:

     * If it's not a translation: Email a copy of your derivative work (in a
       format LDP accepts) to the author(s) and maintainer (could be the same
       person). If you don't get a response then email the LDP (Linux
       Documentation Project): <submit CHEZ en POINT tldp POINT org>.

     * License the derivative work in the spirit of this license or use GPL.
       Include a copyright notice and at least a pointer to the license used.

     * Give due credit to previous authors and major contributors.

   If you're considering making a derived work other than a translation, it's
   requested that you discuss your plans with the current maintainer.

    1.1.2. Droits d'utilisation

   Copyright  1998-2005 par David S. Lawyer <dave CHEZ lafn POINT org>.

   Copyright  2003-2005 par Guillaume Lelarge <gleu CHEZ wanadoo POINT fr> &
   ? <?>.

   Vous pouvez copier et distribuer librement (vendre ou donner) ce document
   quel que soit son format. Envoyez toute correction ou tout commentaire 
   l'auteur du document. Vous pouvez crer et distribuer une version drive
    condition que :

     * vous envoyez au gestionnaire et  l'auteur (s'il ne s'agit pas de la
       mme personne) une copie de votre travail par courrier lectronique
       (s'il ne s'agit pas d'une traduction) dans un format que le LDP
       accepte. Si vous n'obtenez pas de rponse, alors envoyez votre message
       au LDP (Linux Documentation Project) : <submit CHEZ en POINT tldp
       POINT org> ;

     * la licence utilise pour votre travail soit dans le mme esprit que
       cette licence ou utilise la licence GPL. Incluez les informations de
       droit d'utilisation ou au moins un pointeur vers la licence utilise ;

     * vous donnez crdit aux auteurs prcdents et aux contributeurs
       majeurs.

   Si vous pensez faire un travail driv autre qu'une traduction, vous devez
   en discuter avec le gestionnaire actuel.

    1.1.3. Avertissements

   Bien que je n'aie pas essay de vous tromper intentionnellement, il est
   probable que des erreurs restent dans ce document. Faites-le moi savoir si
   vous en trouvez. Comme il s'agit d'une documentation libre, il est vident
   que je ne peux pas tre tenu responsable des erreurs contenues dans ce
   texte.

    1.1.4. Marques dposes

   Tout nom de marque (avec une majuscule initiale tel que MS Windows) sera
   suppos tre une marque dpose. Elles appartiennent  leur propritaires
   respectifs.

    1.1.5. Remerciements

     * Daniel Scott a relu ce document en mars 2000 et y a trouv de
       nombreuses erreurs ;

     * Pete Barrett a donn une astuce pour empcher Windows de rinitialiser
       les IRQ PCI ;

     * Aot 2004 : Ross Boylan a trouv des erreurs et a indiqu un manque de
       clart dans la partie o on indique au BIOS qu'il s'agit d'un systme
       d'exploitation PnP.

  1.2. Plans futurs : vous pouvez aider

   Merci de m'indiquer toute erreur, que ce soit dans les faits, les
   opinions, la logique, l'orthographe, la grammaire, la clart, les liens,
   et ctera. Mais tout d'abord, si la date du document est vieille de plus
   de plusieurs mois, vrifiez que vous possdez bien la dernire version.
   Envoyez-moi toute information que vous trouvez intressante pour ce
   document.

   Je n'ai pas encore tudi le code utilis par les diffrents pilotes Linux
   et par le noyau pour implmenter le Plug-and-Play. Mais, j'ai commenc 
   jeter un il, notamment aux commentaires. Donc, ce guide pratique est
   encore incomplet. Il devrait expliquer plus en profondeur le  hot
   swapping , le  hot-plug  et le nouveau logiciel PnP du noyau 2.6. Et il
   ne couvre pas le firewire. Il comporte certainement quelques erreurs
   (faites-moi savoir o je me trompe). Dans ce guide pratique, j'ai utilis
   deux points d'interrogation (??) pour signaler que je n'ai pas vraiment la
   rponse.

  1.3. Nouvelles versions de ce guide pratique

   De nouvelles versions du guide pratique Plug-and-Play devraient apparatre
   tous les ans et seront disponibles  la navigation et en tlchargement
   sur les sites miroirs du LDP. Pour une liste des sites miroirs, voir
   http://www.tldp.org/mirrors.html [http://www.tldp.org/mirrors.html].
   Diffrents formats sont disponibles. Si vous voulez seulement vrifier
   rapidement la date de la dernire version, regardez sur
   http://www.traduc.org/docs/howto/lecture/Plug-and-Play-HOWTO.html
   [http://www.traduc.org/docs/howto/lecture/Plug-and-Play-HOWTO.html]. La
   version que vous lisez actuellement est la traduction franaise de la
   v1.15, d'aot 2007.

  1.4. Nouveauts des dernires versions

   Pour un historique complet des rvisions, voir le fichier source (dans son
   format DocBook SGML) sur
   http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Plug-and-Play-HOWTO.sgml.
   [http://cvsview.tldp.org/index.cgi/LDP/howto/linuxdoc/Plug-and-Play-HOWTO.sgml.].

     * v1.15, Aot 2007 : Rvision de la section sur les interruptions.
       Suppression de deux paragraphes redondants et confus portant sur une
       mystrieuse fonction  h() .

     * v1.14, Fvrier 2006 : Rvision de  Comment Linux gre-t'il le PnP  ;
       LPC devait tre configur par le BIOS. Balance des IRQ. Linux peut
       trouver des pilotes pour les priphriques dtects.

     * v1.13, Juillet 2005 : Conflit d'IRQ. Plus grande clart dans les
       descriptions des ressources. /proc/bus. Espace de configuration PCI
       accd via l'espace d'adressage des entres/sorties. Plus d'outils de
       dtection de matriel. Message d'erreur Can't allocate region.

     * v1.12, Mars 2005 : /dev/eth0 n'existe plus. Informations modifies
       dans /sys et /proc depuis le noyau 2.6. L'espace d'adressage de la
       configuration PCI est  gographique . scanpci pourrait trouver un
       priphrique que lspci ne voit pas. Le noyau peut affecter des
       adresses au dmarrage.

  1.5. Introduction gnrale. Avez-vous besoin de ce guide pratique ?

   Le Plug-and-Play (PnP) est un systme dtectant automatiquement les
   priphriques tels que les disques, les cartes son, les cartes rseau, les
   modems, et ctera. Il trouve tous les priphriques du bus PCI et tous les
   priphriques supportant PnP sur l'ancien bus ISA. Avant PnP, beaucoup de
   priphriques taient automatiquement recherchs en utilisant des mthodes
   non PnP mais n'taient pas trouvs quelque fois. PnP fournit un moyen de
   trouver tous les priphriques supportant PnP. Il ralise aussi une
   configuration de bas niveau de ces priphriques. Les priphriques non
   PnP (et les priphriques PnP ayant t correctement configurs avec PnP)
   peuvent souvent tre dtects par des mthodes n'utilisant pas PnP. Le bus
   PCI a t conu pour le PnP alors que le vieux bus ISA ne l'a pas t 
   ses origines mais son support lui a t ajout plus tard. Donc, souvent,
   PnP est utilis pour signifier uniquement PnP pour l'ancien bus ISA. Par
   exemple, lorsque vous apercevez au dmarrage des messages d'isapnp du
   style :  Plug & Play device , cela signifie seulement qu'il y a un
   priphrique ISA PnP. Dans ce guide pratique, nous traitons  la fois le
   PnP du bus ISA et du bus PCI.

   Avec le temps, le noyau Linux amliore son support de PnP.  la fin du 20
   sicle, on pouvait dire que Linux n'tait pas un systme d'exploitation
   PnP. Mais il est dit qu'avec la version 2.6 du noyau, Linux est maintenant
   totalement compatible avec PnP (en supposant que le noyau est construit
   avec le support de PnP). Bien que le systme PnP n'est pas centralis
   comme cela peut l'tre avec MS Windows (et son registre), le PnP Linux
   dcentralis semble fonctionner correctement.

   Linux conserve la trace des affectations de ressources demandes par les
   pilotes de priphriques et refuse toute requte s'il estime que cela
   causerait un conflit. Le noyau fournit aussi des programmes que les
   pilotes de priphriques peuvent appeler pour effectuer leurs oprations
   de plug-and-play. Le noyau lit aussi tous les registres de configuration
   de tous les priphriques PnP et maintient leur tables que les pilotes de
   priphriques peuvent consulter. Cette table aide les pilotes  trouver
   leur matriel. Le noyau 2.6 fournit aussi un meilleur support pour le
    hot-plug .

   Le BIOS de votre PC travaillera certainement un peu pour le plug-and-play.
   Donc, si tout fonctionne en harmonie avec PnP, vous pouvez utiliser votre
   ordinateur sans avoir besoin de tout connatre sur le plug-and-play. Mais,
   si certains priphriques supports par Linux ne fonctionnent pas (parce
   qu'ils n'ont pas t reprs par Linux ou parce qu'ils ont t mal
   configurs), vous aurez besoin de lire au moins une partie de ce guide
   pratique. Vous en apprendrez sur le PnP mais aussi sur la faon dont la
   communication prend place dans un ordinateur. Si vous avez un ordinateur
   moderne avec un bus PCI mais sans bus ISA, vous pouvez passer les parties
   sur le bus ISA.

   Si vous avez des problmes avec un priphrique, regardez les messages
   affichs lors du dmarrage (remontez la liste avec Shift+PageUp). Si cela
   n'affiche pas aussi les messages du lancement,  partir du BIOS, utilisez
   la touche Pause (voir Section 7.4,  Messages de dmarrage ).

   Vrifiez que vous utilisez le bon pilote pour un priphrique et que ce
   pilote est trouv et utilis. Si le pilote est un module, tapez insmod (en
   tant qu'utilisateur privilgi) pour voir s'il est charg (et utilis). Si
   ce n'est pas un module, alors il doit tre intgr au noyau.

   Ce guide pratique ne couvre pas le problme de la recherche et de
   l'installation de pilotes de priphriques. Peut-tre qu'il devrait. Un
   des problmes possibles est qu'une carte (ou un autre priphrique
   physique) peut ne pas dire le type de composants qu'elle utilise. Le nom
   du pilote correspond souvent au nom de la puce et non pas au nom de la
   marque. Une faon de commencer la vrification du pilote est de regarder
   s'il en est question dans la documentation du noyau, dans un autre guide
   pratique ou plus gnralement sur Internet. Attention : de telles
   documentations peuvent ne plus tre  jour.

   Les ordinateurs disposant de bus PCI (et sans bus ISA) ont
   significativement rduit le nombre de points posant problmes. Concernant
   le bus ISA et le manque de support au niveau noyau pour l'ISA PnP (avant
   le noyau 2.4), beaucoup de choses posaient problmes. Rappelez-vous que,
   parfois les problmes semblant tre relatifs  PnP sont ds en ralit 
   un matriel dfectueux ou  un matriel non conforme aux spcifications
   PnP.

2. Ce que PnP doit faire : allouer des  ressources bus 

  2.1. En quoi consiste le Plug-and-Play (PnP) ?

   Si vous ne comprenez pas cette section, lisez Priphriques matriels et
   la communication avec ces derniers.

   En simplifiant  l'extrme, Plug-and-Play indique aux pilotes de
   priphriques o trouver les diffrents matriels (priphriques) tels que
   modems, cartes rseau, cartes son, et ctera. La tche du Plug-and-Play
   est de faire correspondre les priphriques physiques avec les logiciels
   (pilotes de priphriques) qui les font fonctionner, et d'tablir des
   canaux de communication entre chaque priphrique physique et son pilote.
   Pour ce faire, PnP alloue les  ressources bus  suivantes aux matriels :
   adresses d'entre/sortie, plages mmoire, IRQ, canaux DMA (uniquement pour
   les bus LPC et ISA). Ces quatre dernires sont parfois appeles des
   ressources de premier ordre ou simplement des ressources. PnP maintient un
   enregistrement de ce qu'il fait et autorise l'accs  ces informations aux
   pilotes de priphriques. Si vous ne comprenez pas ce que sont ces quatre
   ressources bus, lisez les sous-sections suivantes de ce guide pratique :
   Adresses d'entre/sortie, IRQ, Canaux DMA, Rgions mmoire. Un article de
   la Linux Gazette parle de trois des ressources bus. Il est disponible sur
   Introduction aux IRQ, DMA et adresses de base
   [http://www.linuxgazette.com/issue38/blanchard.html] (NdT : une traduction
   franaise est disponible sur traduc.org
   [http://www.linuxgazette.com/issue38/blanchard.html]). Une fois que ces
   ressources bus ont t assignes (et si le bon pilote est install), le
   pilote actuel et ses  fichiers  du rpertoire /dev sont prt  tre
   utiliss.

   Cette mthode d'affectation PnP des ressources bus est parfois appele
    configuration  mais il s'agit seulement d'une configuration bas-niveau.
   Le rpertoire /etc comprend beaucoup de fichiers de configuration mais un
   grand nombre d'entre eux ne concernent pas la configuration de PnP. Donc,
   la grande majorit des configurations de priphriques physiques n'a rien
    voir avec PnP ou les ressources bus. Par exemple, l'initialisation d'un
   modem par une phrase d'initialisation ou la configuration de sa vitesse ne
   concerne pas PnP. Donc lorsque nous parlons de PnP, la configuration ne
   concerne qu'un seul type de configuration. Alors que d'autres
   documentations (telles que celles pour MS Windows) appellent les
   ressources bus  ressources , j'ai utilis le terme de ressources bus au
   lieu du simple  ressources  pour les distinguer des nombreux autres
   types de ressources.

   PnP est un long processus ralis par diffrents logiciels et matriels.
   Si seul un programme grait PnP sur Linux, cela serait simple. Mais, avec
   Linux, chaque pilote de priphrique fait son propre PnP en utilisant le
   logiciel fourni par le noyau. Le matriel du BIOS du PC utilise PnP au
   dmarrage du PC. Et il y a bien plus que cela.

  2.2. Priphriques matriels et la communication avec ces derniers

   Un ordinateur est compos d'un processeur (CPU) ralisant les oprations
   et de mmoire vive (RAM) pour stocker les programmes et les donnes (en
   accs rapide). De plus, il existe de nombreux priphriques tels que
   diffrents types de disques, une carte vido, un clavier, des
   priphriques rseaux, des cartes modem, des priphriques sons, le bus
   USB, les ports sries et parallles, et ctera. Dans les anciens temps, la
   plupart des priphriques taient des cartes insres dans des
   emplacements du PC. Aujourd'hui, beaucoup de priphriques, qui taient
   auparavant des cartes, sont maintenant compris dans les composants
   intgrs  la carte-mre. On trouve aussi une alimentation apportant
   l'lectricit, diffrents bus sur la carte mre pour connecter les
   priphriques au CPU et une bote pour contenir le tout.

   Les cartes se connectant sur la carte mre peuvent contenir plus d'un
   priphrique. Les cartes mmoires sont quelque fois considres comme des
   priphriques mais ils ne sont pas Plug-and-Play si on suit le sens
   utilis dans ce guide pratique.

   Pour que l'ordinateur fonctionne bien, chaque priphrique doit tre sous
   le contrle de son  pilote . Il s'agit d'un logiciel faisant partie du
   systme d'exploitation, pouvant tre charg en tant que module et excut
    partir du CPU. Les pilotes de priphriques sont associs  des
    fichiers spciaux  rangs dans le rpertoire /dev, bien qu'ils ne
   soient pas vraiment des fichiers. Ils ont des noms tels que hda3
   (troisime partition du disque a), ttyS1 (deuxime port srie), eth0
   (premire carte Ethernet), et ctera.

   Le priphrique eth0 est celui de la carte ethernet (carte rseau).
   Auparavant, il s'agissait de /dev/eth0 mais c'est maintenant un
   priphrique virtuel du noyau. Ce que eth0 rfrence dpend du type de
   carte ethernet que vous avez. Si le pilote est un module, cette
   affectation se trouve probablement dans une table interne du noyau mais
   pourrait aussi se trouver dans /etc/modules.conf (appel  alias ). Par
   exemple, si vous disposez d'une carte ethernet utilisant le composant
    tulip , vous devez placer la ligne  alias eth0 tulip  dans
   /etc/modules.conf pour que, lorsque votre PC cherche eth0, il trouve le
   pilote tulip. Nanmoins, les noyaux modernes peuvent gnralement trouver
   le bon module du priphrique. De cette faon, vous n'aurez pas  le
   spcifier vous-mme.

   Pour contrler un priphrique, le CPU (sous le contrle du pilote de
   priphrique) envoie des commandes et des donnes du priphrique. Il
   reoit aussi l'tat et des donnes des diffrents priphriques. Pour
   cela, chaque pilote doit connatre l'adresse du priphrique qu'il doit
   contrler. Connatre cette adresse revient  mettre en place un canal de
   communication, mme si le  canal  physique se trouve tre le bus de
   donnes interne au PC, bus partag avec beaucoup d'autres priphriques.

   Ce canal de communication est en fait un peu plus complexe que ce qui est
   dcrit ci-dessus. Une  adresse  est en fait une plage d'adresses, ce qui
   fait que, parfois, le mot  plage  est utilis  la place du mot
    adresse . Il peut exister plus d'une plage (sans recoupement) pour un
   seul priphrique. Il existe aussi un autre canal connu sous le nom
   d'interruptions permettant au priphrique d'envoyer une requte de
    demande d'aide  urgente  leur pilote.

  2.3. Adresses

   Le bus PCI a trois plages d'adressage : les entres/sorties, la mmoire
   principale (mmoire d'entres/sorties) et la configuration. L'ancien bus
   ISA ne dispose pas de cette dernire. Seules les entres/sorties et la
   mmoire principale sont utilises pour les entres/sorties du
   priphrique. Les adresses de configuration sont fixes et ne peuvent pas
   tre modifies donc elles n'ont pas besoin d'tre affectes. Pour plus
   d'informations, voir Espace d'adressage de la configuration PCI.

   Quand le CPU veut accder  un priphrique, il place l'adresse du
   priphrique sur un bus important de l'ordinateur (pour le PCI : le bus
   d'adresse/donnes). Tous les types d'adresses (tels que les
   entres/sorties et la mmoire principale) partagent le mme bus sur le PC.
   Mais la prsence ou l'absence de voltage sur certains fils ddis sur le
   bus du PC indique l'espace occupe par une adresse : entre/sortie,
   mmoire principale (voir Espaces d'adressage) ou la configuration
   (seulement PCI). Ceci est un peu trop simplifi car indiquer  un
   priphrique PCI qu'il s'agit d'une adresse de configuration est
   rellement plus complexe que la description ci-dessus. Voir Espace
   d'adressage pour la configuration PCI pour plus d'informations. Voir
   Dtails des adresses pour plus d'informations sur l'adressage en gnral.

   Les adresses d'un priphrique sont stockes dans les registres du
   matriel physique. Elles peuvent tre changes par logiciel et elles
   peuvent tre dsactives pour que le priphrique ne soit plus adressable,
   sauf en ce qui concerne les adresses de configuration du PCI qui ne
   peuvent tre ni modifies ni dsactives.

  2.4. Adresses d'entres/sorties (principes relatifs  d'autres ressources)

   Les priphriques taient originellement situs dans la plage d'adresses
   des entres/sorties mais, aujourd'hui, ils peuvent utiliser la plage en
   mmoire principale. Une adresse d'entre/sortie est quelque fois
   simplement appele  I/O ,  IO ,  i/o  ou  io . Les termes  port
   I/O  ou  plage d'entres/sorties  sont aussi utiliss. Ne confondez pas
   ces ports d'entres/sorties avec la mmoire d'entres/sorties situe en
   mmoire principale. Il existe deux tapes principales pour allouer des
   adresses I/O (ou d'autres ressources bus telles que les interruptions sur
   le bus ISA) :

     * Initialiser l'adresse I/O, et ctera. dans le matriel (dans un de ses
       registres),

     * Laisser son pilote de priphrique reconnatre l'adresse I/O, et
       ctera.

   Souvent, le pilote du priphrique fait les deux (en quelque sorte). Le
   pilote de priphrique n'a pas rellement besoin d'initialiser une adresse
   d'entre/sortie s'il dcouvre que l'adresse a dj t initialise
   (peut-tre par le BIOS) et qu'il souhaite accepter cette adresse. Une fois
   que le pilote a soit trouv une adresse prcdemment configure soit
   configur l'adresse lui-mme, alors il sait videmment de quelle adresse
   il s'agit, donc il n'est pas ncessaire de lui fournir cette information
   -- il la connat dj.

   Le processus en deux tapes ci-dessus (1. configurer l'adresse au niveau
   matriel. 2. mettre au courant le pilote.) ressemble aux deux parties d'un
   problme pour trouver le numro de la maison d'une personne dans la rue.
   Quelqu'un doit installer un numro sur l'entre de la maison pour qu'elle
   puisse tre trouve, puis les personnes qui souhaitent aller  cette
   adresse doivent obtenir (et conserver) ce numro pour qu'elles puissent
   trouver la maison. En informatique, le matriel du priphrique doit
   d'abord obtenir son adresse, qu'il placera dans un registre matriel
   spcial (ce qui revient  conserver le numro dans notre exemple), puis le
   pilote de priphrique doit obtenir cette adresse (crire ce numro dans
   son carnet d'adresses). Les deux doivent tre raliss, soit
   automatiquement par le logiciel soit en saisissant manuellement des
   donnes dans des fichiers de configuration. Des problmes pourraient
   survenir si seulement un des deux est fait correctement.

   Pour la configuration manuelle de PnP, des personnes font l'erreur de ne
   faire qu'une de ces deux tapes et se demandent ensuite pourquoi
   l'ordinateur ne peut pas trouver le priphrique. Par exemple, ils
   utilisent setserial pour associer une adresse au port srie sans raliser
   que ceci ne fait que donner une adresse au pilote. Cela n'enregistre pas
   cette adresse au niveau du port srie physique. Si vous avez dit une
   btise au port srie, alors vous avez un problme. Une autre faon de
   parler au pilote est de donner l'adresse comme option au module du noyau
   (pilote de priphrique). Si ce que vous dites est faux, il peut y avoir
   des problmes. Un pilote intelligent pourrait dtecter comment le matriel
   est rellement configur et rejeter les mauvaises informations fournies
   par l'option (ou au moins afficher un message d'erreur).

   Un pr-requis vident est que le priphrique physique (comme une carte)
   doit connatre son adresse avant le pilote du priphrique. Comme les
   pilotes de priphrique se lancent souvent tout de suite aprs le
   dmarrage de l'ordinateur, ils peuvent tenter d'accder  une carte (pour
   vrifier sa prsence, et ctera) avant que l'adresse ne soit enregistre
   au niveau de la carte par le programme de configuration PnP. Et vous
   verrez un message d'erreur indiquant l'absence de la carte mme si elle
   est bien dans le PC (mais n'a pas encore obtenue son adresse).

   Ce qui a t dit dans les derniers paragraphes concernant les adresses I/O
   s'applique de la mme manire  la majorit des autres ressources bus :
   Section 2.5,  Plages mmoire , Section 2.6,  IRQ - un aperu  et
   Section 2.7,  DMA (accs direct  la mmoire) ou matrise du bus . Les
   trois prochaines sections expliqueront ce qu'ils sont. La seule exception
   est que les interruptions du bus PCI ne sont pas donnes par les registres
   d'une carte mais elles sont plutt droutes vers les IRQ par un composant
   de la carte mre. Ensuite, l'IRQ utilise par cette carte PCI est inscrite
   dans un registre de la carte dans un but unique d'informer.

   Pour voir quelles adresses d'entres/sorties sont utilises sur votre PC,
   regardez dans le fichier /proc/ioports.

  2.5. Plages mmoire

   Beaucoup de priphriques disposent d'une plage mmoire en mmoire
   principale. C'est quelquefois appel  mmoire partage  ou  mmoire
   d'entres/sorties . Cette mmoire est situe physiquement dans le
   priphrique physique mais l'ordinateur y accde comme s'il accdait  des
   composants mmoire. En parlant de ressources bus, c'est souvent simplement
   appel  mmoire ,  mem , voire  iomem . En plus de l'utilisation de
   cette  mmoire , un tel priphrique peut aussi utiliser une plage
   mmoire conventionnelle d'entres/sorties. Pour connatre la mmoire
   utilise sur votre ordinateur, cherchez dans /proc/iomem. Ce  fichier 
   inclut la mmoire utilise par les composants mmoire habituels de la RAM,
   donc il affiche l'allocation mmoire en gnral et pas seulement
   l'allocation iomem. Si vous apercevez un numro trange au lieu d'un nom,
   c'est probablement le numro d'un priphrique PCI, ce que vous pouvez
   vrifier en excutant  lspci .

   Lorsque vous insrez une carte utilisant iomem, vous tes aussi en train
   d'insrer un module mmoire pour la mmoire principale. Une adresse haute
   est slectionne pour lui par PnP de faon  ce que cela ne rentre pas en
   conflit avec les modules de la mmoire principale (composants). Cette
   mmoire peut tre de la mmoire morte (ROM ou Read Only Memory) ou de la
   mmoire partage. Cette dernire est partage entre le priphrique et le
   CPU (ayant lanc le pilote du priphrique) de la mme faon que la plage
   d'adresses d'entres/sorties est partage entre le priphrique et le CPU.
   Cette mmoire partage sert en tant que moyen de  transfert  de donnes
   entre le priphrique et la mmoire principale. C'est de l'entre/sortie
   mais ce n'est pas fait dans la plage d'adresses des entres/sorties. La
   carte et le pilote doivent connatre la plage d'adresses.

   La ROM (Read-Only Memory, soit mmoire en lecture seule) est un genre
   diffrent d'iomem. C'est plutt un programme (parfois un pilote de
   priphrique), utilis avec ce priphrique. Cela peut aussi tre un code
   d'initialisation malgr que le pilote soit encore ncessaire. Avec un peu
   de chance, il fonctionnera aussi sous Linux, et pas seulement sous MS
   Windows. Elle peut tre copie en mmoire principale pour fonctionner plus
   rapidement. Mais dans ce cas, elle n'est plus  en lecture seule .

  2.6. IRQ - un aperu

   Aprs avoir lu ceci, vous pouvez lire Section 13.4,  Dtails sur les
   interruptions  pour bien plus de dtails. Ce qui suit est volontairement
   simplifi : en plus des adresses, il existe aussi un numro d'interruption
    grer (tel que l'IRQ 5). Cela s'appelle un numro d'IRQ (Interrupt
   ReQuest, ou demande d'interruption), ou plus simplement une  irq . Nous
   avons dj mentionn ci-dessus que le pilote de priphrique doit
   connatre l'adresse d'une carte pour tre capable de communiquer avec
   elle.

   Mais qu'en est-il de la communication en sens inverse ? Supposez que le
   priphrique ait besoin de dire quelque chose  son pilote immdiatement.
   Par exemple, le priphrique peut recevoir un grand nombre d'octets
   destins  la mmoire principale et le tampon utilis pour stocker ces
   octets est pratiquement plein. Du coup, le priphrique a besoin de
   demander  son pilote de rcuprer ces octets avant que le tampon ne se
   voit dpass par le flot continu d'octets. Un autre exemple serait de
   signaler au pilote que le priphrique a termin d'envoyer un ensemble
   d'octets et qu'il attend maintenant de nouveaux octets  envoyer.

   Comment le priphrique peut-il envoyer rapidement un signal  son
   pilote ? Il peut ne pas tre capable d'utiliser le bus de donnes
   principal car il y a des chances qu'il soit dj utilis. Au lieu de cela,
   il place un voltage sur un fil d'interruption ddi (aussi appel ligne ou
   trace) qui est souvent rserv pour ce seul priphrique. Ce signal est
   appel une demande d'interruption (IRQ) ou plus simplement une
    interruption . Il existe l'quivalent de 16 (ou 24, et ctera.) fils de
   ce type dans un PC et chaque fil amne (indirectement)  un certain pilote
   de priphrique. Chaque fil a un numro d'IRQ unique. Le priphrique doit
   placer son interruption sur le bon fil. Le fil sur lequel le priphrique
   envoie ces demandes d'aide est dtermin par le numro d'IRQ enregistr
   dans le priphrique. Ce mme numro d'IRQ doit tre connu par le pilote
   du priphrique pour que celui-ci sache quelle interruption couter.

   Une fois que le pilote reoit l'interruption du priphrique, il doit
   trouver pourquoi cette interruption a t gnre et agir de manire
   approprie pour rgler le problme. Sur le bus ISA, chaque priphrique a
   habituellement besoin de son propre numro unique d'IRQ. Pour le bus PCI
   et dans d'autres cas spciaux, le partage d'IRQ est autoris (deux
   priphriques PCI, ou plus, pourraient avoir le mme numro d'IRQ). De
   mme, pour le PCI, chaque priphrique PCI a un fil fixe PCI Interrupt.
   Mais un composant de routage programmable fait correspondre les fils PCI
   aux interruptions de type ISA. Voir Section 13.4,  Dtails sur les
   interruptions  pour savoir comment cela fonctionne.

  2.7. DMA (accs direct  la mmoire) ou matrise du bus

   Pour le bus PCI, DMA et matrise de bus signifient la mme chose. Avant
   l'arrive du bus PCI, la matrise du bus tait rare et le DMA fonctionnait
   diffremment et tait lent. L'accs direct  la mmoire (DMA, acronyme de
   Direct Memory Access) est ce qui permet  un priphrique de prendre la
   main sur le bus principal de l'ordinateur et de transfrer directement des
   octets vers la mmoire principale ou vers d'autres priphriques.
   Normalement, le processeur s'occupe des transferts d'un priphrique vers
   la mmoire principale par un processus en deux tapes :

     * lire un ensemble d'octets  partir de la page mmoire
       d'entres/sorties et les stocker dans le CPU lui-mme ;

     * crire ces octets dans la mmoire principale.

   Avec le DMA, il s'agit d'un processus en une seule tape consistant en
   l'envoi des octets directement du priphrique  la mmoire. Les
   priphriques doivent disposer de capacits DMA intgres et, du coup,
   tous les priphriques ne peuvent pas faire de DMA. Alors que le DMA est
   en cours, le processeur ne peut pas faire grand chose car le bus principal
   est en cours d'utilisation par le transfert DMA.

   L'ancien bus ISA peut faire du DMA lentement alors que le bus PCI peut
   faire du DMA par matrise du bus. Le bus LPC a  la fois l'ancien et le
   nouveau DMA (matrise du bus). Sur le bus PCI, ce qui devrait tre appel
   plus prcisment  matrise du bus  est souvent appel  Ultra DMA , 
   BM-DNA ,  udma  ou tout simplement  DMA . Sur le bus PCI, la matrise
   du bus est souvent appel DMA. La matrise du bus permet aux priphriques
   de devenir temporairement les matres du bus et de transfrer des octets
   un peu comme lorsque le matre du bus tait le processeur. Il n'utilise
   aucun numro de canal car l'organisation du bus PCI est telle que le
   matriel PCI sait quel priphrique est actuellement le matre du bus et
   quel priphrique rclame  devenir le matre du bus. Du coup, il n'y a
   pas d'allocation de ressources pour les canaux DMA pour le bus PCI et
   aucune ressource de canaux DMA n'existe pour ce bus. Le bus LPC est
   suppos tre configur par le BIOS pour que les utilisateurs n'aient pas 
   se soucier des canaux DMA.

  2.8. Canaux DMA (non pas pour le bus PCI)

   C'est seulement pour l'ancien bus ISA et le bus LPC. Quand un priphrique
   veut faire du DMA, il lance une requte de DMA en utilisant les fils
   ddis  cela, un peu comme une requte d'interruption. En fait, le DMA
   aurait p tre gr en utilisant des interruptions mais cela aurait
   introduit des dlais, donc il est plus rapide de faire cela en ayant un
   type spcial d'interruption connu en tant que requte DMA. Comme les
   interruptions, les demandes DMA sont numrotes pour identifier le
   priphrique lanant la requte. Ce nombre est appel un canal DMA. Comme
   les transferts DMA utilisant tous le bus principal (et qu'un seul peut
   tre lanc  la fois), ils utilisent tous les mme canal pour le flot de
   donnes mais le numro de  canal DMA  sert  identifier qui utilise le
   canal. Les registres matriels existent sur la carte mre, qui enregistre
   l'tat actuel de chaque canal. Du coup, pour lancer une requte DMA, le
   priphrique doit connatre son numro de canal DMA stock dans un
   registre spcial du priphrique physique.

  2.9.  Ressources  du priphrique et du pilote

   Donc, les pilotes de priphriques doivent tre  attachs  d'une faon
   quelconque au matriel qu'ils contrlent. Ceci se fait en allouant des
   ressources bus (I/O, mmoire, IRQ, DMA) au priphrique physique et en
   laissant le pilote le dcouvrir. Par exemple, un port srie utilise
   seulement deux ressources : une IRQ et une adresse d'entres/sorties. Ces
   deux valeurs doivent tre fournies au pilote et au priphrique physique.
   Le pilote (et son priphrique) dispose d'un nom dans le rpertoire /dev
   (tel que ttyS1). L'adresse et le numro IRQ sont stocks par le
   priphrique physique dans ses registres de configuration sur sa carte (ou
   dans un composant de la carte mre). Les vieux matriels (dans les annes
   1990) utilisaient des interrupteurs (ou des cavaliers) pour configurer
   physiquement l'IRQ et l'adresse au niveau du matriel. Ce paramtrage
   restera fixe tant qu'une personne n'enlevera pas le botier pour dplacer
   les cavaliers.

   Mais, dans le cas de PnP (pas de cavaliers), les donnes du registre de
   configuration sont habituellement perdues lorsque le PC est teint, donc
   les donnes des ressources bus doivent tre fournies  chaque priphrique
    chaque allumage du PC.

  2.10. Les ressources sont limites

    2.10.1. L'ordinateur idal

   L'architecture du PC n'apporte qu'un nombre limit de ressources : IRQ,
   canaux DMA, adresses d'entres/sorties et de plages mmoires. S'il
   n'existait qu'un nombre limit de priphriques et qu'ils aient tous des
   ressources bus standardises (telles que des adresses d'entres/sorties et
   des numros d'IRQ uniques), il n'y aurait aucun souci pour attacher un
   pilote  son priphrique. Chaque priphrique devrait avoir un nombre
   fixe de ressources qui n'entreraient pas en conflit avec tout autre
   priphrique sur votre ordinateur. Deux priphriques ne devraient pas
   avoir les mmes adresses, il n'y aurait pas de conflit d'IRQ sur le bus
   ISA, et ctera. Chaque pilote devrait tre dvelopp avec des adresses,
   des IRQ, et ctera, uniques codes en dur dans le programme. La vie serait
   simple.

   Une autre faon d'empcher les conflits d'adresses serait d'avoir un
   numro d'emplacement, inclus dans l'adresse, pour chaque carte. Du coup,
   il n'y aurait plus de conflits d'adresses entre deux cartes diffrentes
   (car elles sont dans des emplacements diffrents). La conception des
   cartes ne permettrait pas les conflits d'adresses entre les diffrentes
   fonctions de la carte. Il en ressort que l'espace d'adressage (utilis
   pour la demande et l'affectation de ressources) le fait rellement. Mais
   cela n'est pas pris en compte pour les adresses d'entres/sorties et pour
   les rgions mmoire. Partager des IRQ comme sur le bus PCI vite aussi des
   conflits mais peut poser d'autres problmes.

    2.10.2. L'ordinateur rel

   Mais l'architecture du PC a des problmes de conflit. L'augmentation du
   nombre de priphriques (incluant les multiples priphriques de mme
   type) a tendance  augmenter les conflits potentiels. En mme temps,
   l'introduction du bus PCI, o deux priphriques ou plus peuvent partager
   la mme interruption et l'introduction d'interruptions supplmentaires, a
   tendance  rduire les conflits. Le rsultat global, d au passage au PCI,
   a t une rduction des conflits car les ressources les plus faibles sont
   les IRQ. Nanmoins, mme sur le bus PCI, c'est un peu plus efficace pour
   viter le partage des IRQ. Dans certains cas o les interruptions arrivent
   en une succession rapide et doivent tre traites rapidement (comme en
   audio), le partage peut causer des dgradations dans les performances.
   Donc, il n'est pas bon d'affecter tous les priphriques PCI au mme IRQ,
   l'affectation doit tre partage. Nanmoins, certaines personnes trouvent
   que tous les priphriques PCI sont sur la mme IRQ.

   Donc, les priphriques ont besoin d'avoir de la flexibilit de faon  ce
   qu'ils puissent tre initialiss avec n'importe quelle adresse, IRQ, et
   ctera. C'est ncessaire pour viter tout conflit et arriver  un point
   d'quilibre. Mais quelques IRQ et adresses sont pratiquement des
   standards, comme ceux de l'horloge et du clavier. Ils n'ont pas besoin
   d'une telle flexibilit.

   En plus du problme de conflit lors de l'allocation des ressources bus,
   une indication errone en indiquant au pilote de priphrique quelles sont
   les ressources bus peut causer un autre problme. Cela a plus de chances
   d'arriver dans le cas de la configuration manuelle o l'utilisateur saisit
   les ressources utilises dans un fichier de configuration sur le disque
   dur. Ceci fonctionne gnralement bien quand les ressources sont
   initialises avec des cavaliers sur les cartes (en supposant que
   l'utilisateur sache comment elles taient initialises et n'a fait aucune
   faute en saisissant ces donnes dans les fichiers de configuration). Mais,
   avec des ressources configures par un logiciel PnP, elles ne seront pas
   toujours identiques et cela pourrait poser problme pour toute
   configuration manuelle o l'utilisateur saisit les valeurs des ressources
   bus configures par PnP.

   L'allocation de ressources bus, lorsqu'elle est faite correctement,
   tablit des canaux de communications sans conflit entre le matriel
   physique et le pilote associ. Par exemple, si une certaine plage mmoire
   d'entres/sorties (ressource) est alloue  la fois au pilote de
   priphrique et au matriel, alors cela a tabli une communication sur une
   voie  sens unique entre eux. Le pilote peut envoyer des commandes et des
   informations au priphrique. C'est donc un peu plus qu'une voie  sens
   unique car le pilote peut obtenir des informations du priphrique en
   lisant ces registres. Mais le priphrique ne peut pas initier une
   communication de cette faon. Pour initier une communication, le
   priphrique a besoin d'une IRQ pour qu'il puisse envoyer une interruption
    son pilote. Ceci cre un canal de communication  double-sens o le
   priphrique physique et son pilote peuvent initier une communication.

3. Deuxime introduction au Plug-and-Play (PnP)

  3.1. Introduction  PnP

   Le terme Plug-and-Play (PnP) a diffrentes significations. Au sens
   gnral, il s'agit de la configuration automatique lorsqu'une personne
   connecte un priphrique et que celui-ci se configure lui-mme. Le sens
   utilis dans ce livre est tout autre : PnP signifie la configuration des
   ressources bus pour PnP (les configurer au niveau des priphriques
   physiques) et la communication de cette information aux pilotes de
   priphriques. Dans le cas de Linux, il s'agit souvent d'un pilote
   dterminant la faon dont le bus a initialis les ressources bus et, si
   ncessaire, le pilote donnant une commande pour changer (rinitialiser)
   les ressources bus. Souvent,  PnP  ne signifie que PnP sur le bus ISA
   donc le message d'isapnp,  No Plug and Play device found , signifie
   simplement qu'aucun priphrique ISA PnP n'a t trouv. Les
   spcifications du PCI standard (invent avant l'utilisation du terme
    PnP ) apportent l'quivalent de PnP au bus PCI.

   PnP fait correspondre les priphriques avec leur pilote et spcifie leurs
   canaux de communication (en allouant des ressources bus). Il communique
   lectroniquement avec les registres de configuration situs  l'intrieur
   des priphriques physiques en utilisant un protocole standardis. Sur le
   bus ISA et avant le Plug-and-Play, les ressources bus taient simplement
   initialises au niveau matriel avec des interrupteurs de diffrentes
   sortes. Quelquefois, les ressources bus pouvaient tre configures sur le
   matriel par un pilote (gnralement crit seulement pour un systme MS
   mais dans de rares cas support aussi par un pilote Linux). Cela
   ressemblait  du PnP mais aucun protocole standardis n'tait utilis donc
   il ne s'agissait pas vraiment de PnP. Certaines cartes contiennent un
   paramtrage par cavaliers qui peut tre surcharg par un tel pilote. Pour
   Linux avant le PnP, les ressources bus taient affectes aux pilotes
   logiciels par des fichiers de configuration (ou autre chose de ce genre)
   ou en parcourant le bus aux adresses o il s'attendait  trouver le
   priphrique. Mais ces mthodes sont toujours utilises de nos jours pour
   permettre  Linux d'utiliser du matriel non PnP. Et, quelque fois, ces
   vieilles mthodes sont toujours utilises de nos jours sur du matriel PnP
   (aprs que le BIOS ait affect des ressources aux matriels par les
   mthodes PnP).

   Le bus PCI ressemblait au PnP ds le dbut mais il n'a pas t appel PnP
   ou  plug and play , ce qui a eu comme rsultat que PnP signifie souvent
   PnP sur le bus ISA. Dans la documentation, PnP signifie habituellement PnP
   sur le bus ISA comme sur le bus PCI.

  3.2. Comment fonctionne le PnP (explication simplifie)

   Voici comment PnP devrait fonctionner. L'hypothtique programme de
   configuration PnP trouve tous les priphriques PnP et demande  chacun
   les ressources bus dont il a besoin. Ensuite, il vrifie quelles sont les
   ressources bus qu'il peut affecter (IRQ, et ctera). Bien sr, s'il a
   rserv des ressources bus utilises pour des priphriques non PnP (s'il
   les connat), il ne les donne pas. Il utilise certains critres (ne
   faisant pas partie des spcifications PnP) pour donner les ressources bus
   de faon  ce qu'il n'y ait pas de conflit et de faon  ce que tous les
   priphriques disposent de ce qu'ils ont demand (si possible). Il indique
   ensuite indirectement  chaque priphrique physique les ressources bus
   qui lui ont t assignes et les priphriques se configurent eux-mmes
   pour n'utiliser que ces ressources-l. Enfin, les pilotes de priphriques
   trouvent d'une manire ou d'une autre quelles ressources sont utilises
   par leur priphrique et sont donc capables de communiquer avec les
   priphriques qu'ils contrlent.

   Par exemple, prenons une carte ayant besoin d'une IRQ (d'un numro d'IRQ)
   et de 1 Mo de mmoire partage. Le programme PnP lit cette requte des
   registres de configuration de la carte. Il lui affecte l'IRQ 5 et 1 Mo
   d'espace mmoire, commenant  partir de l'adresse 0xe9000000. Le
   programme PnP lit aussi les informations d'identification de la carte,
   indiquant ainsi le type de priphrique, son numro d'identifiant, et
   ctera. Ensuite, il informe, directement ou indirectement, le pilote de
   priphrique convenable pour ce matriel, de ce qu'il a fait. Si le pilote
   lui-mme gre le PnP, alors il n'est pas ncessaire de trouver un pilote
   pour le priphrique (car le pilote est dj en cours d'excution). Sinon,
   le bon pilote de priphrique doit tre trouv et la configuration du
   priphrique doit lui tre communique.

   Ce n'est pas toujours aussi simple car la carte (ou la table de routage
   pour le PCI) pourrait indiquer qu'elle ne peut utiliser que certains
   numros d'IRQ ou que les 1 Mo de mmoire doivent rsider dans un certain
   espace d'adresses. Les dtails sont diffrents pour les bus PCI et ISA,
   cette dernire tant la plus complexe.

   Une faon habituellement utilise pour allouer des ressources est de
   commencer avec un priphrique et de lui allouer des ressources bus. Puis
   de faire la mme chose avec le priphrique suivant, et ctera. Ensuite,
   si finalement tous les priphriques obtiennent les ressources alloues
   sans conflit, alors tout va bien. Mais si allouer une ressource requise
   crait un conflit, alors il serait ncessaire de revenir en arrire et
   d'essayer de faire quelques changements dans les allocations prcdentes
   de faon  conserver la ressource bus ncessaire. Ceci s'appelle le
   balancement. Linux ne le fait pas mais MS Windows en est capable dans
   certains cas. Pour Linux, tout ceci est fait par le BIOS, le noyau ou les
   pilotes de priphriques. Avec Linux, le pilote du priphrique n'obtient
   pas son allocation finale de ressources tant que le pilote n'est pas
   lanc, donc une faon d'viter les conflits est de ne pas lancer un
   priphrique qui pourrait causer un conflit. Nanmoins, le BIOS alloue
   frquemment des ressources au priphrique physique avant que Linux ne
   soit compltement dmarr et le noyau vrifie les priphriques PCI pour
   les conflits d'adresse au dmarrage.

   Des raccourcis existent et le logiciel PnP peut les utiliser. Un d'eux est
   de garder la trace de la faon dont sont assignes les ressources bus lors
   de la dernire configuration (lorsque l'ordinateur a t utilis pour la
   dernire fois) et de rutiliser cette information. Les BIOS le font ainsi
   que MS Windows mais le Linux standard ne le fait pas. Mais, d'une certaine
   faon, il le fait car il utilise souvent ce que le BIOS a fait. Windows
   stocke cette information dans sa base de registres sur le disque dur et un
   BIOS PnP/PCI le stocke dans une mmoire non volatile de votre PC (mmoire
   appele ESCD ; voir Section 5.4.2,  La base de donnes ESCD du BIOS ).
   Certains disent que ne pas avoir de registres (ce qui est le cas de Linux)
   est mieux car, avec Windows, la base de registres peut tre corrompue et
   elle est de toute faon difficile  diter. Mais PnP sur Linux a aussi des
   problmes.

   Alors que MS Windows (sauf en ce qui concerne Windows 3.x et NT4) est un
   systme d'exploitation PnP, Linux n'tait pas originellement un systme
   d'exploitation PnP mais l'est devenu graduellement. Au dbut, PnP a
   fonctionn avec Linux parce qu'un BIOS PnP configurait les ressources bus
   et que les pilotes de priphriques rcupraient cette information en
   utilisant des programmes apports par le noyau Linux. Aujourd'hui, la
   plupart des pilotes peuvent envoyer des commandes pour raliser leur
   propre configuration et n'ont pas besoin de se reposer toujours sur le
   BIOS. Malheureusement, un pilote pourrait utiliser une ressource bus dont
   un autre priphrique aurait besoin plus tard. D'autres pilotes de
   priphriques enregistrent la dernire configuration dans un fichier de
   configuration et l'utilisent la prochaine fois que l'ordinateur est
   allum.

   Si le priphrique physique se rappelle de son ancienne configuration,
   alors il n'y aura pas de matriel  configurer au prochain dmarrage, mais
   il semble oublier sa configuration lors de l'arrt. Certains priphriques
   disposent d'une configuration par dfaut (mais pas ncessairement la
   dernire utilise). Donc, un priphrique PnP a besoin d'tre reconfigur
    chaque fois que le PC est allum. De la mme manire, si un nouveau
   priphrique est ajout, alors il a besoin d'tre configur. Allouer des
   ressources bus pour ce nouveau priphrique peut ncessiter de rcuprer
   des ressources donnes auparavant  un autre et d'affecter  ce dernier de
   nouvelles ressources. Actuellement, Linux ne peut pas grer ce niveau de
   sophistication (et MS Windows XP pourrait aussi ne pas en tre capable).

  3.3. Dmarrer le PC

   Quand le PC est lanc la premire fois, le BIOS lance son programme pour
   dmarrer le PC (la premire tape tant de vrifier le matriel de la
   carte mre). Si le systme d'exploitation est stock sur disque dur (ce
   qui est habituellement le cas), alors le BIOS doit disposer de certaines
   informations sur le disque dur. Si ce disque est PnP, le BIOS peut
   utiliser des mthodes PnP pour le trouver. De mme, pour permettre 
   l'utilisateur de configurer manuellement le CMOS du BIOS et de rpondre
   aux messages d'erreur lors du dmarrage, un cran (et donc une carte
   vido) et un clavier sont aussi requis. Donc, le BIOS doit toujours
   configurer via PnP les priphriques ncessaires au chargement du systme
   d'exploitation  partir du disque dur.

   Une fois que le BIOS a identifi le disque dur, la carte vido et le
   clavier, il est prt  commencer le dmarrage (charger le systme
   d'exploitation en mmoire). Si vous avez indiqu au BIOS que vous disposez
   d'un systme d'exploitation PnP, il devrait commencer le chargement comme
   indiqu ci-dessus et laisser le systme d'exploitation finir la
   configuration PnP. Autrement, un BIOS-PnP essaiera de configurer le reste
   des priphriques (mais sans en informer leur pilote). peuvent toujours
   trouver les informations ncessaires en utilisant les fonctions
   disponibles dans le noyau Linux.

  3.4. Les bus

   Pour voir ce qui se trouve sur le bus PCI, excutez lspci ou lspci -vv. Ou
   vous pouvez aussi saisir scanpci -v pour la mme information dans le
   format de code numrique o le priphrique est indiqu par numro (par
   exemple :  device 0x122d ) au lieu du nom, et ctera. Dans de rares cas,
   scanpci trouvera un priphrique que lspci n'arrive pas  trouver.

   Les messages au dmarrage sur votre cran affichent les priphriques qui
   ont t trouvs sur les diffrents bus (utilisez shift-PageUp pour les
   voir). Voir Messages au dmarrage.

   ISA est l'ancien bus des PC compatibles IBM alors que PCI est le nouveau
   bus, plus rapide, d'Intel. Le bus PCI a t conu pour ce qui est appel
   de nos jours PnP. Ceci rend facile (compar  ce qu'il faut faire pour le
   bus ISA) la dcouverte de l'affectation des ressources bus PnP aux
   priphriques matriels.

   Pour le bus ISA, il existait un problme rel avec l'implmentation de PnP
   car personne n'avait en tte PnP lorsque ce bus a t conu et il existe
   encore moins d'adresses d'entres/sorties disponibles pour PnP pour
   envoyer des informations de configuration  un priphrique physique. Du
   coup, la faon dont PnP a t ralis pour le bus ISA est trs complexe.
   Des livres entiers ont t crits  ce sujet. Voir notamment ce livre.
   Entre autres choses, il requiert que soit assign par le programme PnP 
   chaque priphrique PnP un point d'ancrage temporaire pour que tout le
   monde puisse faire la configuration PnP. Assigner ces  points d'ancrage 
   est appel  isolation . Voir Section 13.6,  Isolation ISA  pour des
   dtails complexes.

   Au fur et  mesure de la disparition du bus ISA, PnP sera un peu plus
   facile. Il ne sera pas seulement plus simple de savoir comment le BIOS a
   configur le matriel mais il y aura aussi moins de conflits, le PCI
   pouvant partager des interruptions. Il y aura toujours besoin de faire
   correspondre un pilote de priphrique  un matriel et il y aura toujours
   besoin de configurer les priphriques ajouts lors du lancement du PC. Le
   srieux problme des quelques priphriques non supports par Linux
   restera prsent.

  3.5. Comment Linux gre-t-il le PnP

   Linux a eu de srieux problmes dans le pass pour la gestion de PnP mais
   la plupart de ces problmes sont maintenant rsolus (vers mi-2004). Linux
   est parvenu d'un systme non PnP  un systme qui peut tre PnP si le
   noyau est compil avec certaines options. Le BIOS peut affecter des IRQ
   mais Linux peut aussi affecter certains d'entre eux ou mme les refaire ce
   que le BIOS a dj fait. La partie de configuration de ACPI (Advance
   Configuration and Power Interface) est conu pour faciliter la propre
   configuration des systmes d'exploitation. Linux peut utiliser l'ACPI si
   le noyau a t compil avec son support.

   Dans Linux, il est traditionnel qu'un pilote de priphrique fasse sa
   propre configuration de bas niveau. C'tait difficile jusqu'au moment o
   le noyau Linux a fourni le logiciel que les pilotes peuvent utiliser pour
   se faciliter le travail. Aujourd'hui (2005), c'est arriv  un point o le
   pilote peut simplement appel la fonction pci_enable_device() du noyau et
   o le priphrique se voit configur en tant activ et en rcuprant une
   IRQ (si ncessaire) et les adresses affectes au priphrique. Cette
   affectation pourrait tre ce qui avait t affect auparavant par le BIOS
   ou ce que le noyau avait rserv quand le priphrique PCI ou ISAPNP a t
   dtect par le noyau. Il existe mme une option ACPI pour que le noyau
   affecte toutes les IRQ des priphriques lors du dmarrage.

   Donc aujourd'hui, d'une certaine faon, les pilotes font toujours la
   configuration mais ils peuvent la faire en demandant simplement au noyau
   de s'en charger (et Linux pourrait ne pas avoir besoin de faire grand
   chose car il est quelque fois capable d'utiliser ce qui a dj t
   configur par le BIOS ou par lui-mme). Donc, c'est vraiment la partie du
   noyau, hors du pilote, qui fait la grande partie de configuration. Du
   coup, il pourrait tre correct d'appeler Linux un systme d'exploitation
   PnP, au moins pour les architectures communes.

   Ensuite, lorsqu'un pilote dcouvre son priphrique, il demande 
   connatre les adresses et IRQ affects (par le BIOS ou par Linux) et,
   habituellement, les accepte simplement. Mais, si le pilote le souhaite, il
   peut essayer de modifier les adresses en utilisant les fonctions fournies
   par le noyau. Cependant, le noyau n'acceptera pas d'adresses entrant en
   conflit avec d'autres priphriques ou des adresses que le matriel ne
   peut pas supporter. Quand le PC dmarre, vous pouvez noter les messages 
   l'cran montrant que certains pilotes de priphriques Linux ont trouv
   leurs priphriques matriels et quels sont leurs IRQ et adresses.

   Donc, le noyau fournit des fonctions (programmes) que les pilotes peuvent
   utiliser pour trouver si leur priphrique est prsent, la faon dont il
   est configur et les fonctions qui permettent de modifier la configuration
   si ncessaire. Le noyau 2.2 pouvait faire ceci pour le bus PCI seulement
   mais le noyau 2.4 contient cette fonctionnalit pour les bus ISA et PCI (
   condition que les options PnP et PCI appropris ont t slectionnes
   avant la compilation du noyau). Le noyau 2.6 est arriv avec une meilleure
   utilisation de l'ACPI. Ceci ne garantie en rien que tous les pilotes
   utilisent compltement et correctement ces fonctionnalits. Les
   priphriques propritaires que le BIOS ne connait pas pourraient ne pas
   tre configurs tant qu'une configuration manuelle ne soit effectue.

   De plus, le noyau tente d'viter les conflits d'adresses en ne permettant
   pas  deux priphriques d'utiliser les mme ressources bus en mme temps.
   Au dbut, ce n'tait valable que pour les IRQ et les DMA mais, maintenant,
   cela s'adresse aussi aux adresses.

   Si vous avez un ancien bus ISA, le programme isapnp doit tre excut au
   dmarrage pour trouver et configurer les priphriques PnP sur le bus ISA.
   Regardez les messages avec  dmesg .

   Pour voir quelle aide le noyau peut apporter aux pilotes de priphriques,
   consultez le rpertoire /usr/.../.../Documentation o un des  ... 
   contient le mot  kernel-doc  ou quelque chose d'approchant. Attention :
   cette documentation a tendance  ne plus tre  jour pour avoir les
   dernires informations donc vous aurez besoin de lire les messages des
   listes de diffusion des dveloppeurs du noyau et peut-tre aussi de lire
   le code source et les commentaires qu'ils ont crits. Dans le rpertoire
   de la documentation du noyau, voir pci.txt ( How to Write Linux PCI
   Drivers , c'est--dire  Comment crire des pilotes PCI pour Linux )
   ainsi que le fichier /usr/include/linux/pci.h. Si vous tes un gourou des
   pilotes et si vous connaissez la programmation en C, ces fichiers sont
   crits d'une telle faon qu'il ne vont pas vous permettre d'crire un
   pilote. Mais cela vous donnera une ide des fonctions type PnP disponibles
   pour les pilotes.

   Pour le noyau 2.4, voir isapnp.txt. Pour le noyau 2.6, isapnp.txt est
   remplac par pnp.txt qui est totalement diffrent et gre en plus le bus
   PCI. Voir aussi le livre d'O'Reilly : Linux Device Drivers, 3 dition,
   2005. Le texte complet est disponible sur Internet.

  3.6. Problmes avec Linux PnP

   Il existe un certain nombre d'autres points qu'un systme d'exploitation
   PnP devrait mieux grer :

     * Allouer des ressources bus quand il en existe peu par une rallocation
       des ressources si ncessaire ;

     * Grer le choix d'un pilote lorsqu'il en existe plus d'un par
       priphrique ;

   Comme chaque pilote s'occupe de lui mais pas des autres, un pilote
   pourrait rcuprer les ressources bus ncessaires  d'autres priphriques
   (et non encore allous  ceux-ci par le noyau). Donc un noyau Linux PnP
   plus perfectionn serait bien mieux, un noyau qui pourrait s'occuper de
   l'allocation une fois toutes les requtes envoyes. Une alternative serait
   d'essayer de rallouer les ressources dj affectes quand un pilote
   n'obtient pas toutes les ressources qu'il a demandes.

   Le problme de la  raret des ressources bus  devient de moins en moins
   rel pour deux raisons : la premire est que le bus PCI est en train de
   remplacer le bus ISA. Le bus PCI n'a pas ce type de problme pour les IRQ
   car celles-ci peuvent tre partages (bien que ce partage rende le systme
   un peu moins efficace). De plus, le PCI n'utilise pas les ressources DMA
   (bien qu'il dispose d'un quivalent sans avoir besoin des ressources).

   La deuxime raison est que plus d'espace d'adresses est disponible pour
   les entres/sorties des priphriques. Alors que l'espace d'adresses
   conventionnel du bus ISA tait limit  64 Ko, le bus PCI dispose de 4 Go.
   Comme plus de priphriques physiques utilisent les adresses en mmoire
   principale au lieu de l'espace d'adresses des entres/sorties, il existe
   toujours un peu de place disponible, y compris sur le bus ISA. Sur les PC
   32 bits, il y a un espace d'adressage de 4 Go en mmoire principale et la
   plupart de ces ressources bus est disponible pour les entres/sorties des
   priphriques ( moins que vous ayez 4 Go de mmoire principale
   installe).

   Il y a eu au moins une tentative pour faire de Linux un vrai systme
   d'exploitation PnP. Voir http://www.astarte.free-online.co.uk
   [http://www.astarte.free-online.co.uk]. Bien que dvelopp ds 1998, elle
   n'a jamais t intgre au noyau (mais aurait certainement de l'tre).

4. Configurer un BIOS PnP

   Lorsque l'ordinateur est dmarr, le BIOS est lanc avant que le systme
   d'exploitation ne soit charg. Les BIOS modernes sont PnP et peuvent
   configurer la plupart des priphriques PnP. Quelques anciens BIOS PCI
   vont seulement configurer le bus PCI. Voici quelques choix qui pourraient
   exister dans le menu CMOS de votre BIOS :

     * Section 4.1,  Avez-vous un systme d'exploitation PnP ?  ;

     * Section 4.2,  Affecter les ressources par le BIOS ?  ;

     * Section 4.3,  Rinitialiser la configuration .

  4.1. Avez-vous un systme d'exploitation PnP ?

   Quelle que soit votre rponse au BIOS, le BIOS PnP utilisera PnP pour
   paramtrer le disque dur, le lecteur de disquette, la carte vido et le
   clavier, afin de permettre au systme de dmarrer. Si vous dites avoir un
   systme d'exploitation PnP, il laissera la fin de la configuration au
   systme d'exploitation (ou aux pilotes de priphriques). Si vous dites ne
   pas avoir de systme d'exploitation PnP, alors le BIOS devra tout
   configurer.

   Comment rpondre  cette question de votre BIOS ? Si vous avez au moins un
   noyau 2.4, vous pourriez rpondre ce que vous voulez et Linux fonctionnera
   habituellement correctement. Mme si vous avez Windows 2000 ou XP sur le
   mme PC, cela devrait fonctionner de toute faon tout simplement parce que
   Windows et Linux sont tous les deux  priori des systmes d'exploitation
   PnP et que si le systme d'exploitation est PnP, il devrait tre capable
   de grer le cas o le BIOS a tout configur lui-mme (si vous avez rpondu
   que le systme d'exploitation n'est pas PnP). Mais, je continue  suggrer
   de rpondre qu'il n'est pas PnP sauf si une raison valable vous oblige 
   faire autrement.

    4.1.1. Linux avant le noyau 2.4

   La rponse n'est pas souvent claire dans ce cas. Si isapnp tait utilis
   par Linux, alors Linux fera la configuration et il tait indiqu qu'il est
   mieux de dire qu'il s'agit d'un systme d'exploitation PnP. La raison pour
   laquelle isapnp aurait des problmes en prsence de priphriques dj
   configurs par le BIOS n'est pas claire mais de tels problmes arrivent
   quelquefois et sont corrigs en stoppant la configuration du BIOS (en
   rpondant oui, c'est un systme d'exploitation PnP). Il existe quelques
   cas o dire non rsolvait un problme. Donc, si isapnp n'est pas utilis,
   non est gnralement mieux. Les pilotes Linux de priphriques PCI
   devraient configurer correctement ces priphriques. Mais pour le cas o
   les priphriques PCI pilots par des pilotes non PCI, alors vous pourriez
   dire que le systme d'exploitation n'est pas PnP pour obtenir du BIOS
   qu'il les configure directement.

    4.1.2. Windows 2000 et XP

   Si vous utilisez aussi des systmes d'exploitation Windows sur le mme PC,
   vous pourriez dire que vous n'avez pas un systme d'exploitation PnP.
   C'est ce que MS vous suggre de faire. Peut-tre que MS souhaite que le
   BIOS fasse un meilleur travail pour la configuration que Windows ne le
   fera. Ceci est sens parce que le BIOS devrait tre conu pour les
   particularits spcifiques de la carte mre, et tout spcialement de nos
   jours o beaucoup de priphriques sont intgrs  celle-ci. Dire non
   devrait aussi tre bon pour les noyaux Linux 2.4 et ultrieurs. Mais pour
   les noyaux prcdents, ce n'est pas si clair (voir la section ci-dessous).
   Donc, si vous avez des problmes avec Linux, vous pourriez essayer de dire
   que vous avez un systme d'exploitation Linux mais ceci va contre ce que
   raconte MS (mais fonctionnera probablement bien de toute faon).

   Lorsque le BIOS configure un priphrique diffremment de ce qui est
   stock dans la base de registres de Windows, celui-ci vous dira qu'il a
   dcouvert un nouveau matriel. Ce qu'il est rellement en train de faire
   est de trouver l'ancien matriel qui a t configur diffremment. De
   toute faon, il enregistre la configuration que le BIOS a utilise dans
   ses registres et le priphrique devrait bien fonctionner  partir de ce
   moment.

    4.1.3. MS Windows 95, 98 (et Me ?)

   Pour Windows9x, MS suggre de dire au BIOS que vous avez un systme
   d'exploitation PnP (l'oppos complet du cas pour Windows 2000 et XP). Ceci
   devrait tre bon pour Linux si vous disposez d'un noyau 2.4 ou ultrieur.
   Mais si vous avez un noyau Linux prcdent le 2.4, alors il est mieux pour
   Linux de dire qu'il ne s'agit pas d'un systme d'exploitation PnP. Une
   faon de rsoudre ce dilemme est de le configurer pour le systme
   d'exploitation que vous utilisez le plus frquemment. Ensuite, au
   dmarrage de l'autre systme d'exploitation, modifiez manuellement la
   configuration du BIOS. C'est trs ennuyant mais c'est faisable si vous
   n'utilisez pratiquement jamais l'autre systme d'exploitation. Sinon, il
   existe de meilleurs faons de rsoudre ce dilemme.

   La deuxime faon de rsoudre ce dilemme est de faire en sorte que Linux
   configure toutes les ressources. Voir Section 4.1.1,  Linux avant le
   noyau 2.4 . Ensuite, vous dites au BIOS qu'il s'agit d'un systme
   d'exploitation PnP.

   La troisime faon de rsoudre ce dilemme est de dire au BIOS qu'il ne
   s'agit pas d'un systme d'exploitation PnP. Ceci va  l'encontre de ce que
   dit MS mais il est possible d'obtenir un bon fonctionnement de MS
   Windows9x si vous comprenez ce que vous faites (et pourquoi). Si vous
   dites au BIOS qu'il ne s'agit pas d'un systme d'exploitation PnP, MS
   Windows ne devrait-il pas dtecter la faon dont le BIOS a configur les
   priphriques et modifier cela s'il n'aime pas ce que le BIOS a fait ?
   Cela devrait, mais malheureusement, cela ne semble pas fonctionner de
   cette faon.

   Ce que Windows 9x semble faire lorsqu'il trouve un matriel dj configur
   par le BIOS est de le laisser seul et de ne pas le reconfigurer.
   Maintenant, Windows 9x garde une trace de la configuration des ressources
   bus dans sa base de registres. Si la configuration du BIOS est diffrent,
   il devrait soit corriger ce qui se trouve dans sa base de registres soit
   tout reconfigurer suivant les indications de cette mme base. Mauvaise
   nouvelle : il semble ne rien faire et pense que la configuration actuelle
   est la mme que celle de la base de registres alors qu'en fait elles sont
   diffrentes.

   Mais si la base de registre contient une configuration des ressources bus
   identique  celle du BIOS, alors tout fonctionnera bien. Un priphrique
   fonctionnera bien si le BIOS l'a configur de la mme faon que ce qui est
   enregistr dans la base de registres. Donc, le moyen de faire fonctionner
   correctement MS Windows est d'obtenir que la base de registres soit
   synchronise avec la configuration du BIOS. Comme mentionn prcdemment,
   le BIOS configure les lments suivant son ESCD (qui est quelque chose
   comme la base de registres mais pour le BIOS). Voir Section 5.4.2,  La
   base de donnes ESCD du BIOS . Donc, nous avons besoin d'obtenir la
   synchronisation des registres avec l'ESCD du BIOS pour que la base de
   registres et ESCD contiennent la mme configuration. Dans certains cas,
   ces deux arrivent  tre synchrones et vous n'avez pas besoin de faire
   quoi que ce soit.

   Une question  laquelle vous pourriez penser est : comment l'ESCD du BIOS
   et la base de registres Windows peuvent-ils se dsynchroniser ? Voici un
   scnario. Vous installez Windows avec le BIOS configur pour un systme
   d'exploitation PnP. Alors, Windows configure la plupart des lments et
   sauvegarde sa configuration dans sa base de registres. Puis, plus tard,
   vous changez la configuration du BIOS en prcisant qu'il ne s'agit pas
   d'un systme d'exploitation PnP. Ensuite, aprs un redmarrage, le BIOS
   configure tout et il ne fait pas exactement ce que Windows a fait. Donc,
   la configuration actuelle du matriel et ce que Windows dispose dans sa
   base de registres sont maintenant diffrents.

   Une faon d'essayer d'obtenir que la base de registres et l'ESCD disposent
   des mmes informations est d'installer (ou de rinstaller) Windows lorsque
   le BIOS est configur pour un systme d'exploitation non PnP. De cette
   faon, Windows disposera du matriel configur par le BIOS. Si cette
   configuration est faite sans conflit, Windows n'en changera pas et la
   sauvegardera dans sa base de registres. Et dans ce cas, l'ESCD et la base
   de registres seront synchroniss.

   Une autre mthode est de supprimer les priphriques causant problmes 
   Windows en cliquant  Supprimer  dans le gestionnaire des priphriques.
   Puis redmarrez avec  OS non PnP  (enregistr dans la mmoire CMOS du
   BIOS lorsque vous redmarrez). Windows va alors rinstaller les
   priphriques, en utilisant, on l'espre, les ressources bus configures
   par le BIOS. Faites attention que Windows vous demandera d'insrer le CD
   d'installation de Windows car il peut ne pas trouver les fichiers du
   pilote de priphriques, mme s'il sont bien l. Un contournement est de
   slectionner  skip file  ce qui vitera l'installation du fichier 
   partir du CD. Si le fichier est toujours sur le disque dur, avec un peu de
   chance, le pilote et tout ira bien, mme si le programme d'installation de
   Windows vous a demand de l'installer  partir du CD (ce que vous avez
   pass).

   Comme test, j'ai  supprim  une carte rseau qui utilisait un pilote
   compatible Novell. Au redmarrage, Windows l'a rinstall avec le Rseaux
   Microsoft plutt qu'avec Novell. Ceci signifie que le client Novell a d
   tre rinstall, un gros travail inutile. Donc, il serait mieux de ne pas
   continuer avec Windows 95/98 mais laisser Linux configurer les ressources
   bus.

   Lors de l'utilisation d'un PC Window-Linux (dual boot), vous pouvez noter
   un changement dans la faon dont le BIOS configure  cause de Windows9x
   (et des autres versions de Windows ??) en modifiant l'ESCD. Il fait cela
   seulement si vous  forcez  une configuration ou une installation d'un
   priphrique propritaire. Voir Section 5.4.3,  Utiliser Windows pour
   configurer l'ESCD . Les pilotes de priphriques ralisant la
   configuration pourraient modifier ce que le BIOS a fait comme le font les
   outils PCI et isapnp.

  4.2. Affecter les ressources par le BIOS ?

   Les BIOS modernes vous permettent d'allouer manuellement des ressources,
   principalement des IRQ. Il existe normalement une option pour configurer
   l'allocation   auto  de faon  ce que le BIOS dcide de l'allocation
   des ressources.  Auto  est souvent un bon choix sauf si vous avez
   d'anciennes cartes ISA propritaires non PnP.

   Si vous avez de telles cartes non PnP, alors il peut tre important de
   rserver les ressources (telles que les IRQ) pour celles-ci dans le BIOS.
   Sinon, le BIOS pourrait utiliser ces ressources pour d'autres
   priphriques et crer ainsi des conflits. Une exception concerne quelques
   priphriques propritaires communs, comme les ports parallle et sries,
   les disques durs. Le BIOS pourrait les trouver (jetez un il  l'cran au
   dmarrage) pour que vous n'ayez pas besoin de rserver les ressources pour
   eux. Si vous avez utilis Windows sur votre PC, Windows pourrait dj
   avoir renseign le BIOS en utilisant l'outil ICU (ou un outil identique)
   sous Windows.

   Pour le PCI, le BIOS devrait aussi vous permettre d'affecter les IRQ aux
   emplacements de cartes 1, 2, 3, 4, et ctera. Si vous le faites, vous
   devez connatre les emplacements o se trouvent les cartes. En fait,
   chaque emplacement dispose de quatre IRQ PCI : A, B, C et D. Si le menu du
   BIOS ne vous dit pas laquelle (A, B, C, D) est affecte  un numro d'IRQ,
   il est probable qu'il affecte seulement le numro d'IRQ  l'IRQ PCI A.
   Mais, beaucoup de cartes utilisent seulement l'IRQ A donc il s'agit
   surtout d'affecter une IRQ  un emplacement. Voir les interruptions PCI.

  4.3. Rinitialiser la configuration

   C'est aussi un peu risqu. Ceci va craser les donnes du BIOS contenues
   dans l'ESCD indiquant la faon dont vos priphriques PnP ont t
   configurs et comment les priphriques non PnP ont t configurs
   manuellement. Ne faites jamais ceci  moins que vous ne soyez convaincu
   que la base de donnes est mauvaise et a besoin d'tre reconstruite. Il
   tait indiqu quelque part que vous deviez faire ceci seulement lorsque
   vous n'arrivez plus  dmarrer. Si le BIOS perd les donnes sur les
   priphriques ISA non PnP, alors vous devrez relancer ICA une nouvelle
   fois sous DOS/Windows pour r-enregistrer les donnes.

5. Grer les cartes PnP

  5.1. Introduction  la gestion des priphriques PnP

   De nos jours, pratiquement toutes les nouvelles cartes internes sont
   Plug-and-Play. Du coup, la configuration des ressources bus devraient tre
   dans la plupart des cas entirement automatique. Si un priphrique ne
   fonctionne pas, vrifiez s'il a t dtect, par exemple en redmarrant.
   Si le pilote de priphrique ne peut pas configurer les ressources, alors
   probablement une ou plus des mthodes du 2.6 le feront :

     * Section 5.2,  Configuration du pilote de priphrique, rservation
       des ressources  ;

     * Section 5.3,  /sys : interface de configuration pour l'utilisateur 
       le noyau 2.6+ (pas encore pour le PCI et quelques autres svres
       limitations) ;

     * Section 5.4,  Configuration du BIOS  (pour le bus PCI, vous avez
       seulement besoin d'un BIOS PCI, sinon vous avez besoin d'un BIOS
       PnP) ;

     * Section 5.5,  ISA seulement : Dsactiver PnP ?  par des cavaliers ou
       avec un logiciel DOS/Windows (mais la plupart des cartes ne le font
       pas) ;

     * Section 5.6,  Bus ISA : Isapnp (outil faisant partie d'isapnptools) 
       est un programme que vous pouvez toujours utiliser pour configurer les
       priphriques PnP du bus ISA (seulement),

     * Section 5.7,  Les utilitaires PCI  permet de configurer le bus PCI
       mais le pilote de priphrique devrait le grer ;

     * Section 5.8,  Configuration de Windows  et alors vous dmarrez Linux
        partir de Windows/DOS. A utiliser en dernier recours.

   N'importe lequel configurera les ressources bus au niveau matriel mais
   seul le premier (voire le second) indiquera au pilote ce qui a t fait.
   La faon dont le pilote est inform dpend du pilote. Vous pouvez avoir
   besoin de faire quelque chose pour l'informer. Voir Section 6,  Indiquer
   au pilote la configuration ?? .

  5.2. Configuration du pilote de priphrique, rservation des ressources

   Les pilotes de priphriques (avec l'aide de fonctions du noyau) peuvent
   tre crits pour utiliser des mthodes PnP pour configurer les ressources
   bus du matriel mais seulement pour le priphrique qu'ils contrlent.
   Mais beaucoup de pilotes de priphriques acceptent directement ce que le
   BIOS ou Linux a configur et utilise le code fourni par le noyau pour
   dcouvrir comme ce priphrique a t configur. Comme le pilote a vrifi
   la configuration et la certainement reconfigur, il connat de faon
   vidente la configuration et il n'y a aucun besoin de lui donner cette
   information. C'est dont la faon la plus simple de le faire car vous
   n'avez rien  faire si le pilote fait tout.

   Si vous avez un matriel datant d'avant l'ISA PnP, le logiciel PnP Linux
   pourrait ne pas le savoir et pourrait ne pas connatre les ressources bus
   qu'il rclame. Donc, il pourrait allouer de faon errone des ressources
   dont cet ancien matriel a besoin  un autre priphrique. Le rsultat est
   un conflit de ressources mais il existe un moyen de l'viter. Vous pouvez
   rserver les ressources dont cette ancienne carte ISA a besoin en
   configurant le BIOS au dmarrage (habituellement), au module isa-pnp ou au
   noyau (si le support de PnP est intgr dans le noyau). Par exemple, pour
   rserver l'IRQ 5, donnez cet argument au module isa-pnp (ou au noyau) :
   isapnp_reserve_irq=5. Voir le Guide pratique sur l'invite de dmarrage
   (BootPrompt-HOWTO)
   [http://www.traduc.org/docs/howto/lecture/BootPrompt-HOWTO.html]. Au lieu
   de ..._irq, il existe aussi _io, _dma et _mem.

   Pour les priphriques PCI, la plupart des pilotes configureront PnP.
   Malheureusement, un pilote peut rcuprer des ressources bus ncessaires 
   d'autres priphriques (mais non allous  eux par le noyau). Donc, un
   noyau Linux PnP plus perfectionn serait meilleur l o le noyau fait
   l'allocation pour toutes les demandes envoyes. Voir Section 3.5,
    Comment Linux gre-t-il le PnP .

  5.3. /sys : interface de configuration pour l'utilisateur

   Depuis le noyau 2.6, il existe une nouvelle faon pour que l'utilisateur
   configure les ressources grce au rpertoire /sys. Mais, jusqu' aot
   2004, il ne peut pas tre utilis pour une configuration dans la plupart
   des cas. Voir Section 7.6,  Le rpertoire /sys .

  5.4. Configuration du BIOS

    5.4.1. Introduction  l'utilisation de la configuration PnP faite par le
    BIOS

   Si vous avez un BIOS PnP, il peut configurer le matriel. Si le pilote ne
   peut pas le faire, le BIOS le peut probablement. Ceci veut dire que votre
   BIOS lit les besoins en ressources de tous les priphriques et les
   configure (en leur allouant les ressources bus). C'est un substitut pour
   l'OS PnP sauf que le BIOS ne peut faire correspondre les pilotes avec leur
   priphriques et ne peut pas non plus indiquer aux pilotes la faon dont
   il a configur les priphriques. Il devrait normalement utiliser la
   configuration enregistre dans sa mmoire non volatile (ESCD). S'il trouve
   un nouveau priphrique ou s'il existe un conflit, le BIOS devra effectuer
   les changements ncessaires et pourrait ne pas utiliser la mme
   configuration que celle de l'ESCD. Dans ce cas, il devra mettre  jour
   l'ESCD pour reflter la situation.

   Votre BIOS doit grer une telle configuration, mais il existe des cas o
   il ne le fait pas correctement ou pas compltement. Le BIOS a aussi besoin
   de savoir via le menu CMOS si le systme d'exploitation est PnP. Alors que
   la plupart des pilotes de priphriques seront capables de dtecter
   automatiquement ce que le BIOS a fait, dans certains cas, vous aurez
   besoin de le dterminer (ce qui n'est pas toujours facile). Voir
   Section 7,  Comment puis-je trouver les priphriques et comment sont-ils
   configurs ? . Un avantage possible  laisser le BIOS faire cette
   configuration est qu'il fait son boulot avant de lancer Linux, donc c'est
   fait trs tt dans le processus de dmarrage.

   La plupart des BIOS crs aprs 1996 ?? peuvent configurer les ressources
   des bus PCI et ISA. Mais, il a t dit que certains anciens BIOS peuvent
   uniquement s'occuper du PCI. Pour essayer d'en savoir plus sur votre BIOS,
   cherchez sur le web. Merci de ne pas me demander car je n'ai pas toutes
   les donnes l-dessus. Les dtails du BIOS que vous souhaitez connatre
   peuvent tre difficiles  trouver. Certains BIOS pourraient avoir des
   capacits PnP minimales et attendre que le systme d'exploitation fasse la
   configuration PnP. Si cela arrive, vous devrez soit trouver une autre
   mthode soit essayer d'enregistrer les informations dans la base de
   donnes ESCD si le BIOS en a une. Voir la prochaine section.

    5.4.2. La base de donnes ESCD du BIOS

   Le BIOS maintient une base de donnes non volatile contenant la
   configuration PnP qu'il essaiera d'utiliser (si vous aviez indiqu qu'il
   ne s'agit pas d'un systme d'exploitation PnP). Elle s'appelle l'ESCD
   (acronyme pour Extended System Configuration Data, soit Donnes pour une
   Configuration tendue du Systme). Encore une fois, l'ESCD est optionnel
   mais la plupart des BIOS PnP en disposent. L'ESCD enregistre non seulement
   la configuration des ressources pour les priphriques PnP mais aussi
   celle des priphriques non PnP (et les indique en tant que tels) pour
   viter les conflits. Les donnes de l'ESCD sont habituellement
   enregistres sur un composant et restent intactes lorsque la machine est
   arrte, mais c'est parfois stock sur un disque dur ??

   L'ESCD a pour but de conserver la dernire configuration utilise. Mais
   comme Linux peut modifier la configuration des priphriques (en incluant
   l'utilisateur avec les outils PCI ou isapnp), l'ESCD ne sera pas au
   courant de cette modification et ne sauvegardera pas cette configuration.
   Un bon systme d'exploitation PnP devrait mettre  jour l'ESCD, pour que
   les informations qui y sont stockes puissent tre utilises par un
   systme d'exploitation non PnP (comme un Linux standard). MS Windows 9x ne
   le fait que dans certains prcis. Voir Section 5.4.3,  Utiliser Windows
   pour configurer l'ESCD .  partir du noyau 2.6, Linux est capable de
   modifier l'ESCD mais cela n'est pas encore utilis (aot 2004).

   Pour utiliser ce qui a t enregistr dans l'ESCD, assurez-vous d'avoir
   bien spcifi que l'OS n'est pas PnP dans le CMOS du BIOS. Par la suite, 
   chaque fois que le BIOS dmarre (avant que l'OS Linux ne soit charg), il
   devrait tout configurer de cette faon. Si le BIOS dtecte une nouvelle
   carte PnP non indique dans l'ESCD, alors il allouera des ressources bus 
   la carte et mettra  jour l'ESCD. Il pourrait mme changer les ressources
   bus assignes aux cartes PnP existantes et modifier l'ESCD de manire
   concordante.

   Un programme vous permet de visualiser le contenu de l'ESCD. Il affiche
   les IRQ, les adresses d'entres/sorties, et ctera mais les noms de
   priphriques manquent (seulement les numros d'identifiant des
   priphriques EISA). Il est disponible sur l'index de
   /home/gunther.mayer/lsescd
   [http://home.t-online.de/home/gunther.mayer/lsescd/].

   Si chaque priphrique sauvegardait sa dernire configuration au niveau du
   matriel, la configuration matrielle ne serait pas ncessaire  chaque
   dmarrage du PC. Mais cela ne fonctionne pas ainsi. Donc, toutes les
   donnes de l'ESCD ont besoin d'tre actualises si vous utilisez le BIOS
   pour PnP. Il existe des BIOS ne disposant pas d'ESCD mais ayant une
   mmoire non volatile pour stocker des informations concernant
   l'attribution des ressources bus aux cartes non PnP. Beaucoup de BIOS
   disposent des deux.

    5.4.3. Utiliser Windows pour configurer l'ESCD

   ventuellement, Linux pourrait initialiser l'ESCD. Depuis Linux 2.6, une
   fonction du nouveau code pourrait le faire si le noyau a t compil avec
   PNPBIOS. Mais elle reste pour l'instant inutilise.

   Si le BIOS ne configure pas l'ESCD de la faon souhaite (ou de la bonne
   faon), alors il serait bien de disposer d'un utilitaire Linux pour le
   faire. Donc, vous pourriez vouloir utiliser Windows (si vous l'avez sur le
   mme PC) pour faire cela.

   Il existe trois faons d'utiliser Windows pour tenter de modifier l'ESCD.
   La premire est d'utiliser l'utilitaire ICU pour DOS ou Windows 3.x. Il
   devrait aussi fonctionner pour Windows 9x/2k ?? Une autre faon est de
   configurer les priphriques manuellement ( en forant ) sous Windows
   9x/2k de faon  ce que Windows enregistre les informations dans l'ESCD
   lorsque Windows est arrt normalement. La troisime faon est possible
   uniquement pour les priphriques non PnP. Si Windows connat quelque
   chose sur eux, notamment quelles ressources bus ils utilisent, alors
   Windows enregistrera cette information dans l'ESCD.

   Si les priphriques PnP sont configurs automatiquement par Windows sans
   que l'utilisateur ait besoin de forcer cette reconnaissance, alors ces
   paramtrages ne se trouveront probablement pas dans l'ESCD. Bien sr,
   Windows pourrait bien dcider de lui-mme de configurer ce qui est
   enregistr dans l'ESCD, ce qui pourrait aboutir au mme par concidence.

   Windows 9x est un systme d'exploitation PnP et configure automatiquement
   via PnP les priphriques. Il maintient leur propre base de donnes PnP
   dans la base de registre (fichiers binaires de Windows). Beaucoup d'autres
   donnes de configuration rsident dans la base de registre en plus des
   ressources bus PnP. Il y a  la fois une configuration des ressources PnP
   actuelles et une autre (peut-tre la mme) enregistre sur le disque dur.
   Pour voir a avec Windows 98, ou pour forcer l'enregistrement des
   modifications, utilisez le gestionnaire des priphriques.

   Dans Windows 98, il existe deux faons d'arriver au gestionnaire des
   priphriques :

     * 1. Poste de travail --> Panneau de configuration --> Systme -->
       Gestionnaire de priphriques

     * 2. (clic droit) Poste de travail --> Proprits --> Gestionnaire de
       priphriques.

   Ensuite, dans ce gestionnaire, vous slectionnez un priphrique (parfois
   un processus en plusieurs tapes s'il existe plusieurs priphriques de la
   mme classe). Ensuite, cliquez sur  Proprits  puis  Ressources .
   Pour essayer de modifier la configuration des ressources manuellement,
   dcochez  Utilisez la configuration automatique  puis cliquez sur
    Changer la configuration . Maintenant, essayez de modifier les
   paramtrages. Il peut ne pas vous laisser les modifier. S'il vous le
   permet, vous avez  forc  un changement. Du coup, un message devrait
   vous avertir que vous avez forc cette modification. Si vous souhaitez
   garder le paramtrage existant affich par Windows, mais que vous voulez
   forcer, alors vous devrez forcer un autre changement et de nouveau forcer
   sa modification en sa valeur prcdente.

   Pour voir ce qui a t forc sous Windows 98, regardez la liste des
   matriels  forcs  : Dmarrer --> Programme --> Accessoires --> Outils
   systme --> Information systme --> Ressources matrielles --> Matriel
   forc. Lorsque vous  forcez  un changement des ressources bus dans
   Windows, il devrait enregistrer votre modification dans l'ESCD (
   condition que vous ayez quitt Windows normalement).  partir de la
   fentre  Informations systme , vous pouvez aussi voir comment les IRQ
   et les ports d'entres/sorties ont t allous par Windows.

   Mme si Windows ne montre aucun conflit des ressources bus, il peut
   exister un conflit sous Linux. Ceci est d au fait que Windows peut
   affecter des ressources bus diffrentes de celles de l'ESCD. Dans le cas
   rare o les priphriques sous Windows sont soit non PnP soit  forcs ,
   alors la configuration Windows et celle de l'ESCD devraient tre les
   mmes.

    5.4.4. Ajouter un nouveau priphrique (sous Linux ou Windows)

   Si vous ajoutez un nouveau priphrique PnP et avez configur le BIOS 
    pas un systme d'exploitation PnP , alors le BIOS devrait
   automatiquement le configurer et enregistrer la configuration dans l'ESCD.
   S'il ne s'agit pas d'un priphrique non PnP (ou un utilisant les
   cavaliers), alors il existe quelques options pour le grer.

   Vous pouvez indiquer directement au BIOS (via le menu de configuration
   CMOS) que certaines ressources bus qu'il utilise sont rserves et ne
   peuvent pas tre alloues avec PnP. Ceci ne met pas cette information dans
   l'ESCD. Il existe un menu de slection du BIOS permettant d'indiquer si
   les choix CMOS supplantent ceux de l'ESCD en cas de conflit. Une autre
   mthode revient  lancer ICU sous DOS/Windows. Encore une autre permet de
   l'installer manuellement sous Windows 9x/2k puis de s'assurer que cette
   configuration est  force  (voir la section prcdente). Si elle l'est,
   Windows devrait mettre  jour l'ESCD  l'arrt du PC.

  5.5. ISA seulement : Dsactiver PnP ?

   Les priphriques PCI sont PnP  la base donc cela ne peut pas tre
   dsactiv. Mais quelques priphriques ISA ont des options pour dsactiver
   PnP par l'intermdiaire de cavaliers ou en lanant un programme Windows
   fourni avec le priphrique (configuration logicielle). Si le pilote du
   priphrique ne peut pas le configurer, ceci vitera la tche probablement
   complique de la configuration PnP. N'oubliez pas de dire au BIOS que ces
   ressources bus sont rserves. Mais comme le support de Linux pour le PnP
   a t amlior, vous ne voulez gnralement pas dsactiver PnP. Voici
   quelques arguments pour lesquels vous ne voudrez pas dsactiver PnP :

     * Si vous avez Windows sur la mme machine, alors vous pouvez permettre
        PnP de configurer les priphriques diffremment entre Windows et
       Linux.

     * L'ensemble des choix pour les numros d'IRQ (ou ports d'adresse) peut
       tre assez limit sauf si vous utilisez PnP.

     * Vous pourriez avoir un pilote de priphrique Linux utilisant des
       mthodes PnP pour rechercher le priphrique qu'il contrle.

     * Si vous avez besoin de modifier la configuration plus tard, il serait
       plus facile de faire ceci avec PnP (sans utiliser de cavaliers ou
       d'avoir  lancer un programme Dos/Windows).

   Une fois vos priphriques configurs sans PnP, ils ne peuvent plus tre
   configurs par un logiciel PnP ou par un BIOS PnP (jusqu' ce que vous
   changiez les cavaliers ou utilisiez le logiciel de configuration
   Dos/Windows).

  5.6. Bus ISA : Isapnp (outil faisant partie d'isapnptools)

   Le programme isapnp est utilis uniquement pour les priphriques PnP du
   bus ISA (donc non PCI). Il tait vraiment ncessaire avant les noyaux 2.4.
   Avec le noyau 2.4, qui a apport des fonctionnalits permettant aux
   pilotes de grer le PnP sur le bus ISA, le programme isapnp devient moins
   important. De plus, le BIOS pourrait configurer ISA PnP de manire
   satisfaisante. Mais, le module isa-pnp (ou l'quivalent intgr au noyau)
   est dj trs satisfaisant car de nombreux pilotes de priphriques ISA
   l'appellent pour configurer les ressources du bus. Avant le noyau 2.6,
   cela rsultait en un  fichier  /proc/isapnp pouvant tre utilis pour
   configurer manuellement (voir isapnp.txt dans la documentation du noyau).

   Dans certains cas, les distributions Linux ont t configures pour lancer
   isapnp automatiquement au dmarrage. Il est toujours utilis en 2004 mais
   il n'est pas rellement ncessaire si les pilotes de priphriques
   fonctionnent bien. Si vous avez besoin de le configurer vous-mme, la
   grande partie de la documentation d'isapnp est difficile  comprendre sauf
   si vous possdez des notions de base de PnP. Ce guide pratique devrait
   vous aider  le comprendre, ainsi que la FAQ qui accompagne isapnp. Lancer
   le programme isapnp au dmarrage vous permettra de configurer ces
   priphriques suivant les valeurs spcifies dans /etc/isapnp.conf. Il est
   possible de crer ce fichier de configuration automatiquement mais vous
   devrez alors l'diter manuellement pour choisir entre les diffrentes
   options. Puis pour que le pilote connaisse ces ressources, vous avez
   souvent besoin de les spcifier en tant que paramtres pour les modules
   appropris (pilotes). Ceci se fait avec des fichiers de configuration,
   gnralement dans le rpertoire /etc. Cherchez-y des fichiers nomms mod*,
   et ctera. Si le pilote est intgr au noyau, alors ils pourraient parfois
   tre donns comme paramtre du noyau. Voir le guide pratique des options
   de dmarrage
   [http://www.traduc.org/docs/howto/lecture//BootPrompt-HOWTO.html].

   Avec isapnp, il existait un risque qu'un pilote de priphrique, intgr
   au noyau, soit lanc trop tt, avant qu'isapnp n'ait pu configurer les
   adresses, et ctera au niveau matriel. En consquence, le pilote de
   priphrique ne serait plus capable de trouver le priphrique. Le pilote
   essaie la bonne adresse mais cette adresse n'est pas configure au niveau
   matriel. Cela est-il toujours un problme ??

   Si votre distribution Linux a automatiquement install isapnptools, isapnp
   est probablement lanc au dmarrage. Dans ce cas, il ne vous reste qu'
   diter /etc/isapnp.conf suivant man isapnp.conf. Notez que cela revient 
   configurer manuellement PnP car vous prendrez les dcisions sur la faon
   de configurer lors de l'dition du fichier de configuration.

   Si le fichier de configuration est mauvais ou n'existe pas, vous pouvez
   utiliser le programme pnpdump pour vous aider  crer le fichier de
   configuration. Il cre pour vous un fichier de configuration mais vous
   devrez l'diter avec intelligence avant de l'utiliser. Il contient
   quelques commentaires pour vous aider. Alors que le BIOS pourrait aussi
   avoir configur les priphriques ISA (si vous lui avez dit que vous ne
   disposez pas de systme d'exploitation PnP), isapnp le refera.

   La terminologie utilise dans le fichier /etc/isapnp.conf peut sembler
   trange au dbut. Par exemple, pour une adresse d'entre/sortie 0x3e8,
   vous pourriez voir  (IO 0 (BASE 0x3e8))   la place.  IO 0  veut dire
   qu'il s'agit de la premire plage d'adresses que ce priphrique utilise.
   Une autre faon d'exprimer ceci serait :  IO[0] = 0x3e8  mais isapnp ne
   le fait pas de cette faon.  IO 1  voudrait dire qu'il s'agit de la
   deuxime plage d'adresse utilise par ce priphrique, et ctera.  INT
   0  a une signification similaire mais pour les IRQ (interruptions). Une
   carte simple peut contenir plusieurs priphriques physiques mais
   l'explication ci-dessus tait seulement pour un des priphriques.

  5.7. Les utilitaires PCI

   Le paquetage des utilitaires PCI (pciutils, quelque fois appel
    pcitools ) vous permet de configurer manuellement via PnP le bus PCI
   (avec difficult). lspci ou scanpci liste les ressources bus alors que
   setpci enregistre les allocations des ressources (sauf les IRQ) dans les
   priphriques physiques. Il semble que setpci soit principalement utilis
   dans des scripts et en fait, vous aurez besoin de comprendre le dtail des
   registres de configuration du PCI pour pouvoir l'utiliser. Ce thme n'est
   pas expliqu ici, et pas plus dans la page de manuel de setpci.

   Les gens l'ont utilis pour configurer les priphriques PCI dont le
   pilote a chou dans cette action. Un exemple est disponible dans le guide
   pratique sur les modems et le guide pratique sur les ports sries dans la
   sous-section  PCI : Activer un port dsactiv . Nanmoins, activer un
   priphrique n'est d'aucune utilit si vous n'avez pas de pilote
   fonctionnel pour ce priphrique.

  5.8. Configuration de Windows

   Cette mthode utilise MS Windows pour configurer et devrait tre utilise
   seulement si tout le reste choue. Si vous avez Windows 9x (ou 2k) sur le
   mme PC, alors lancez simplement Windows et laissez-le configurer PnP.
   Puis lancez Linux  partir de Windows (ou DOS) en utilisant, par exemple,
   loadlin.exe. Il peut y avoir un problme avec les IRQ pour les
   priphriques PCI. Quand Windows s'arrte (sans messages) pour laisser la
   place  Linux, il pourrait craser l'IRQ (en y mettant 0) qui est stock
   dans un des registres de configuration du priphrique PCI. Linux se
   plaindra de trouver une IRQ 0.

   Ce qu'on vient d'aborder arrive lorsque vous lancez Linux en utilisant un
   raccourci (fichier PIF). Mais un moyen de contourner ce problme est connu
   si vous utilisez toujours le raccourci PIF. Un raccourci est en quelque
   sorte l'quivalent du lien symbolique sous Linux, mais il est en fait plus
   que a car il est paramtrable. Pour lancer Linux,  partir de DOS, vous
   crez un fichier batch (script) qui lance Linux. (Le programme qui lance
   Linux est dans le paquet appel loadlin.) Ensuite, crez un raccourci PIF
   vers ce fichier batch et allez dans la fentre des proprits du
   raccourci. Slectionnez  Avanc , puis vrifiez que le  mode MS-DOS 
   est bien coch.

   Maintenant, voici une astuce empchant de mettre  zro les IRQ PCI.
   Cochez  Spcifier une nouvelle configuration MS-DOS . Ensuite, soit vous
   acceptez la configuration par dfaut qui vous est propose soit vous
   cliquez sur  Configuration  pour la modifier. Maintenant, lorsque vous
   lancerez Linux en cliquant sur le raccourci, des nouveaux fichiers de
   configurations (config.sys et autoexec.bat) seront crs pour votre
   nouvelle configuration.

   Les anciens fichiers sont enregistrs comme Config.wos et Autoexec.wos.
   Une fois que vous avez termin d'utiliser Linux et que vous avez arrt
   votre PC, vous aurez encore besoin de ces fichiers pour pouvoir lancer DIS
   la prochaine fois que vous dmarrerez votre PC. Vous devez vous assurer
   que les noms redeviennent *.sys et *.bat. Lorsque vous quittez Windows/DOS
   pour aller sous Linux, Windows s'attend que, une fois que vous avez fini
   avec Linux, vous retourniez  Windows pour que celui-ci puisse restaurer
   ces fichiers avec leur noms originaux. Mais ceci n'arrivera pas car
   lorsque vous quitterez Linux, vous teindrez votre PC et ne retournerez
   pas sous Windows. Donc, comment renommer ces fichiers ? C'est facile,
   placez ces commandes dans votre fichier batch de lancement de Linux pour
   qu'il renomme les fichiers. Mettez ces commandes de renommage dans votre
   fichier batch juste avant la ligne qui charge Linux.

   De la mme faon, il a t rapport que vous devez cliquer sur l'onglet
    Gnral  (de la fentre  Proprits  de votre raccourci) et cochez
    Lecture seule . Sinon, Windows pourrait remettre  zro les
    Paramtrages avances  en  Utilisez la configuration MS-DOS courante 
   et les IRQ PCI se retrouveraient  zro. Comme Windows efface les IRQ
   lorsque vous utilisez la configuration MS-DOS courante mais il n'efface
   pas une nouvelle configuration (qui peut configurer tout de manire
   identique  l'ancienne configuration). Windows ne semble pas trs
   cohrent.

  5.9. Documents/Logiciels PnP

     * Page d'accueil d'Isapnptools
       [http://www.roestock.demon.co.uk/isapnptools/] ;

     * Proposition pour un gestionnaire de configuration pour Linux
       [http://www.astarte.free-online.co.uk] 1999 (n'a jamais fait partie du
       noyau) ;

     * Spcifications PnP de Microsoft
       [http://www.microsoft.com/hwdev/tech/pnp/default.asp] ;

     * Livre : PCI System Architecture, quatrime dition par Tom Shanley +,
       MindShare 1999. Couvre les fonctionnalits PnP du bus PCI ;

     * Livre : Plug and Play System Architecture, par Tom Shanley, Mind Share
       1999. Dtails sur PnP pour le bus ISA. Une vue de PnP avec le bus
       PCI ;

     * Livre : Programming Plug and Play, par James Kelsey, Sams 1995.
       Dtails sur la programmation pour communiquer avec un BIOS PnP. Couvre
       les bus ISA, PCI et PCMCIA.

6. Indiquer au pilote la configuration ??

  6.1. Introduction

   Un pilote moderne trouvera pour un priphrique la configuration des
   ressources bus sans que vous ayez besoin de lui dire quoi que ce soit. Il
   pourrait mme enregistrer les ressources bus au niveau matriel en
   utilisant des mthodes PnP. Certains priphriques ont plus d'une faon
   pour trouver comment leur priphrique physique est configur. Dans le
   pire des cas, vous devez coder en dur les ressources bus dans le noyau (ou
   un module) et recompiler.

   En un juste milieu, il existe des cas tels que le lancement d'un programme
   pour donner les informations des ressources bus au pilote ou pour mettre
   les informations dans un fichier de configuration. Dans certains cas, le
   pilote peut chercher le priphrique aux adresses o il suppose qu'il
   rside (mais il ne trouvera jamais un priphrique PnP s'il n'a pas t
   activ par des mthodes PnP). Il peut mme essayer de tester diffrentes
   IRQ pour voir laquelle fonctionne. Il peut, ou non, le faire
   automatiquement.

   Dans d'autres cas, le pilote peut utiliser des mthodes PnP pour trouver
   le priphrique et la faon dont les ressources bus ont t configures
   par le BIOS, et ctera mais ne les modifiera pas. Il peut aussi regarder
   dans certains des  fichiers  du rpertoire /proc.

   Il peut aussi dire  manuellement  au pilote les ressources bus qu'il
   doit utiliser. Vous donnez ces ressources bus en tant que paramtre au
   noyau ou  un module. Si le pilote est intgr au noyau, vous passez les
   paramtres au noyau via l'invite du dmarrage. Voir le Guide pratique sur
   l'invite de dmarrage (BootPrompt-HOWTO)
   [http://www.traduc.org/docs/howto/lecture/BootPrompt-HOWTO.html] pour la
   description de quelques ressources bus et autres paramtres. Une fois que
   vous savez quels paramtres donner au noyau, vous pouvez les enregistrer
   dans un fichier de configuration du chargeur. Par exemple, mettez
   append="..." dans le fichier lilo.conf puis lancez lilo pour qu'il mette 
   jour les informations de lancement.

   Si le pilote est charg comme module, dans plusieurs cas, le module
   trouvera les ressources bus ncessaires et les enregistrera dans le
   priphrique. Dans les autres cas (gnralement pour les anciens PC), vous
   pouvez avoir besoin de donner les ressources bus comme paramtres du
   module. Les paramtres d'un module peuvent tre spcifis dans
   /etc/modules.conf. Ce sont gnralement des outils utilis pour modifier
   ce fichier et qui sont dpendant de la distribution. Les commentaires
   inclus dans ce fichier devraient vous aider sur la faon de le modifier.
   De mme, tout module que vous placez dans /etc/modules se verra charger
   avec ses paramtres.

   Bien qu'il ait une grande htrognit sur la faon dont les pilotes
   trouvent leur ressources bus, le but final est le mme. Si vous avez des
   problmes avec un pilote, vous pouvez avoir besoin de regarder la
   documentation du pilote (vrifier la documentation du noyau). Quelques
   exemples brefs de pilotes sont prsents dans les sections suivantes :

  6.2. Exemple de pilote de port srie

   Pour les ports sries PCI (et pour les ports srie ISA PnP aprs le noyau
   2.4), le pilote srie dtecte le type de port srie et le configure via
   PnP. Malheureusement, quelques ports srie PCI ne sont pas encore grs.

   Pour le pilote du port srie ISA standard avec les anciennes versions du
   noyau et pour le pilote srie (ne faisant pas partie des cartes
   multiports), le pilote travaille sur deux adresses standards pour les
   ports srie. Il ne cherche pas d'IRQ mais il affecte l'IRQ  standard 
   aux deux premiers ports sries. Ceci peut tre mauvais.

   Pour tout autre chose dans le fichier de configuration, le programme
   setserial doit tre modifi manuellement. Voir le Guide pratique sur la
   programmation des ports srie
   [http://www.traduc.org/docs/howto/lecture/Serial-Programming-HOWTO.html]
   pour plus de dtails. Vous utilisez setserial pour informer le pilote de
   l'adresse d'entre/sortie et setserial est souvent excut  partir d'un
   fichier de dmarrage. Dans les versions rcentes, il existe un fichier
   /etc/serial.conf (ou /var/lib/setserial/autoconfig) que vous  ditez  en
   lanant simplement la commande setserial de faon ordinaire et ce que vous
   configurez avec setserial est sauvegard dans le fichier de configuration
   serial.conf. Le fichier serial.conf devrait tre consult lorsque la
   commande setserial est lance  partir d'un fichier de dmarrage. Votre
   distribution peut, ou non, avoir configur ceci pour vous.

   Il existe deux faons d'utiliser setserial suivant les options que vous
   lui donnez. Une possibilit est de dire manuellement au pilote la
   configuration. L'autre mthode est de tester une adresse donne et
   d'indiquer si un port srie existe  cet endroit. Il peut aussi tester
   cette adresse et essayer de dtecter l'IRQ utilise par ce port.

   Mme avec des noyaux modernes, setserial est quelque fois ncessaire si le
   pilote choue lors de la dtection du port srie ou si vous avez un trs
   ancien matriel.

7. Comment puis-je trouver les priphriques et comment sont-ils configurs ?

  7.1. La recherche des priphriques et la dcouverte de la configuration sont
  lis

   Une fois que vous avez trouv votre matriel, le mme programme qui l'a
   trouv vous indique normalement comment il est configur. Donc, trouver
   comment un matriel est configur revient habituellement  trouver le
   matriel.

  7.2. Les priphriques pourraient avoir deux  configurations 

   Ici,  configuration  correspond  l'assignation des ressources bus PnP
   (adresses, IRQ et DMA). Pour chaque priphrique, il existe deux parties 
   cette question de configuration :

     * Que croit le pilote en ce qui concerne la configuration matrielle ?

     * Quelle configuration (s'il y en a une) est rellement enregistre au
       niveau du matriel ?

   Chaque partie devrait avoir la mme rponse (la mme configuration). La
   configuration du priphrique physique et de son pilote devrait tre
   videmment la mme (elle l'est habituellement). Mais les choses ne
   fonctionnent pas toujours bien et c'est pourquoi il existe une diffrence.
   Ceci veut dire que le pilote dispose d'une mauvaise information sur la
   configuration actuelle du matriel. Les problmes arrivent. Si le logiciel
   que vous utilisez ne vous dit pas exactement ce qui ne va pas (ou ne
   configure pas automatiquement correctement), alors vous avez besoin de
   chercher comment vos priphriques physiques et vos pilotes sont
   configurs. Alors que les pilotes de priphriques Linux devraient tout
   vous dire, dans certains cas, il n'est pas facile de dterminer ce qui a
   t enregistr au niveau matriel.

   Un autre problme est que lors de la visualisation des messages de
   configuration  l'cran, vous devez savoir si la configuration affiche
   est celle du pilote, du priphrique physique ou des deux. Si le pilote de
   priphrique a soit enregistr la configuration soit vrifi le matriel,
   alors le pilote devrait avoir les bonnes informations.

   Mais, quelquefois, le pilote a obtenu des ressources incorrectes par un
   script ou un fichier de configuration, par des paramtres de ressources
   incorrectes donnes  un module, ou peut-tre mme que la configuration ne
   lui a pas t fournie compltement et qu'il essaie d'utiliser par dfaut
   des ressources incorrectes. Par exemple, quelqu'un peut utiliser setserial
   pour indiquer au pilote de priphrique une configuration incorrecte des
   ressources et le pilote les acceptera sans broncher. Mais le port srie ne
   fonctionne pas bien (s'il fonctionne tout court).

  7.3. Trouver le matriel

   Un problme habituel est que le logiciel ne dtecte pas votre priphrique
   ou ne dtermine pas le bon pilote pour celui-ci. Pour les priphriques
   PnP, les dtecter est facile avec un logiciel PnP sauf pour le cas
   inhabituel o le matriel a t dsactiv. Le BIOS peut parfois tre
   initialis pour dsactiver les priphriques PnP ou un
   cavalier/interrupteur sur le priphrique physique lui-mme pourrait le
   dsactiver. Dans ce cas, le matriel ne peut pas tre dtect du tout
   jusqu' ce que vous re-configuriez le BIOS ou que vous changiez le
   cavalier/interrupteur.

   Comme le bus PCI est intrinsquement PnP, il n'y a pas de priphriques
   cachs. Mme si les priphriques PnP sont faciles  trouver avec les
   mthodes PnP, si le pilote n'utilise pas les mthodes PnP mais utilise
   l'ancienne mthode de recherche aux adresses supposes, ils pourraient ne
   pas tre trouvs. Ceci est d au fait que, avant que les ressources bus
   aient t initialises (par le BIOS ou Linux), le priphrique pourrait ne
   pas avoir d'adresses du tout, donc parcourir les adresses habituelles
   n'apportera rien. Pour l'ancien bus ISA, quelques-uns des priphriques
   pourraient tre non PnP et, de ce fait, les anciennes mthodes pourraient
   fonctionner. Donc, de nombreux pilotes continuent  parcourir les adresses
   habituelles en plus d'utiliser les mthodes PnP (parcours PnP, quelquefois
   appel simplement parcours).

   Faons de dtecter des priphriques matriels (et leur configurations)  :
   (suivre le lien pour plus de dtails)

     * Vrifier le BIOS pour vous assurer qu'ils ne sont pas dsactivs ;

     * Regarder les messages de dmarrage  l'cran (voir les messages au
       dmarrage) ;

     * Regarder dans Section 7.5,  Le rpertoire /proc  ;

     * Outils pour dtecter et configurer tout le matriel... lsdev, hwinfo,
       discover, kudzu ;

     * Outils pour dtecter ou configurer un type de matriel ;

     * PCI : Section 7.7,  Inspection du bus PCI 

     * Bus ISA : Section 7.8,  Introduction au bus ISA 

     * Bus ISA : Section 7.9,  Cartes ISA PnP 

     * Bus ISA : Section 7.12,  Cartes non PnP 

     * Bus ISA : Section 7.13,  Cartes non PnP avec cavaliers 

     * Bus ISA : Section 7.14,  Cartes non PnP et sans cavaliers 

     * Et Section 7.17,  Utilisez MS Windows 

  7.4. Messages de dmarrage

   Des informations significatives sur la configuration peuvent tre obtenues
   en lisant les messages affichs par le BIOS et par Linux lors du dmarrage
   de l'ordinateur. Ces messages disparaissent souvent trop rapidement pour
   tre lus mais, une fois le dfilement termin, tapez Majuscule+Page
   Suivante plusieurs fois pour revenir en arrire. Pour aller en avant,
   faites Majuscule+Page Prcdente. Utilisez dmesg  la console  n'importe
   quel moment pour afficher seulement les messages du noyau. Vous ne verrez
   pas certains messages les plus importants provenant gnralement du BIOS.
   Les messages affichs par Linux peuvent parfois n'afficher que ce que le
   pilote de priphrique croit tre configur, peut-tre  cause d'un
   mauvais fichier de configuration. Vrifier les fichiers de traces dans
   /var/log peut tre utile.

   Pour le bus PCI, la notation 00:1a:0 signifie le bus PCI 00 (le bus PCI
   principal), la carte PCI (ou le composant) 1a et la fonction 0 (le premier
   priphrique) sur la carte ou le composant. Le deuxime priphrique sur
   la carte (ou sur le composant) devrait tre 00:08:1.

   Les messages du BIOS s'affichent en premier et montrent la configuration
   du matriel  ce moment, mais isapnp, ou les utilitaires PCI, voire les
   pilotes de priphriques peuvent le changer plus tard. Dans certains cas,
   il n'affiche pas les priphriques que le BIOS n'a pas configur.

   Si les messages du BIOS ne s'affichent pas en revenant au dbut des
   messages du BIOS avec Majuscule+Page Suivante, essayez de mettre en pause
   lorsqu'ils apparaissent, en utilisant la touche Pause ds que les premiers
   mots apparaissent. Appuyez sur n'importe quelle touche pour continuer. Il
   est souvent difficile d'appuyer sur Pause exactement au bon moment.
   Assurez-vous d'appuyer continuellement sur la touche Shift avant d'appuyer
   sur Pause car Pause est une touche ncessitant l'utilisation de Shift. Si
   vous n'avez pas russi, appuyez sur Ctrl+Alt+Del au lancement de Linux
   pour le relancer et essayer de nouveau. Une fois que les messages de Linux
   commencent  tre visibles, il est trop tard pour utiliser Pause car cela
   ne glera pas les messages de Linux.

   Pour initialiser des lments du BIOS comme les IRQ rservs au matriel
   propritaire, aux adresses des ports srie, et ctera vous aurez besoin
   d'entrer dans les menus de configuration du BIOS (CMOS) au lancement.
   Chaque marque de BIOS a diffrentes touches pour ce faire. Il existe des
   listes sur Internet. Parfois en gelant l'affichage des messages du BIOS ou
   en regardant l'cran, la touche que vous devez appuyer sera indique dans
   un message tel que  Press DEL for setup  ( Appuyez sur DEL pour la
   configuration ). Mais il pourrait disparatre si rapidement que vous ne
   le verrez pas. Bien sr, vous ne modifiez rien dans le BIOS que vous ne
   comprenez pas. Le cas contraire, votre PC pourrait tre dsactiv.

   Les messages du BIOS au dmarrage vous indiquent ce que fut la
   configuration du matriel. La configuration actuelle pourrait toujours
   tre la mme que ce qu'a fait le BIOS et que Linux devrait accept si
   c'est bon. Les messages de Linux pourraient provenir des pilotes utilisant
   les fonctions PnP du noyau pour inspecter ou configurer les ressources
   bus. Cela devrait tre correct mais attention aux messages qui affichent
   seulement ce que le pilote a lu de son fichier de configuration. Cela
   pourrait tre faux. Bien sr, si le priphrique fonctionne bien, alors il
   est configur probablement de la mme faon par le pilote.

  7.5. Le rpertoire /proc

   Depuis le noyau 2.6, il existe aussi un rpertoire /sys en plus du
   rpertoire /proc. Ces rpertoires sont utiles pour rcuprer les
   configurations des ressources et priphriques. Les fichiers qu'ils
   contiennent reprsentent des donnes provenant de la mmoire du noyau et
   n'existent pas du tout sur votre disque dur. Les programmes comme lspci
   rcuprent leurs informations du rpertoire /proc et ils doivent les
   afficher d'une faon plus lisible qu'en lisant directement le contenu des
   fichiers de ce rpertoire. Voici quatre fichiers provenant de /proc qui
   montrent les ressources enregistres dans le noyau par les pilotes de
   priphriques.

   Comme le Plug-And-Play de Linux fonctionne en laissant les pilotes de
   priphriques allous les ressources pour leur priphrique, il pourrait
   ne pas y avoir de ressources utilises par certains de vos matriels si le
   pilote n'a pas encore rclam que ces ressources lui soient rserves.
   Pour les cas des modules du noyau (pilotes de priphrique chargeables),
   si le module n'est pas encore charg, le noyau ne connat pas les
   ressources dont le module a besoin. Quelque fois, le module se charge
   seulement quand vous lancez une application qui en a besoin. Donc, si un
   certain matriel est manquant parmi les fichiers de /proc, cela pourrait
   signifier que le matriel n'a pas encore t utilis. Par exemple, mme si
   votre lecteur de disquette dispose d'une disquette et est prt  tre
   utilis, son interruption n'apparatra tant que le lecteur n'est pas
   utilis.

   /pts affiche les adresses d'entre/sortie. S'il y a une erreur (mauvaise
   adresse), cela pose problme car le priphrique n'obtiendra pas les
   octets qui lui sont envoys. /proc/iomem affiche les adresses mmoires
   d'entre/sortie qui sont rserves. /proc/interrupts affiche les
   interruptions en cours d'utilisation. /proc/dma affiche les allocations de
   canaux DMA pour le bus ISA.

   Dans le pass, l'auteur a observ une liste d'interruptions qui
   n'existaient pas. Dans certains cas, cela montrait que quelques
   interruptions taient vraiment envoyes. Ceci peut tre d  des matriels
   dfectueux envoyant des interruptions errones.

   /proc/bus/ contient les sous-rpertoires /input/, /pci/ et /isapnp/. Le
   format de la plupart des fichiers dans ce rpertoire est vraiment
   cryptique, souvent une simple copie des octets de l'espace de
   configuration. Donc, utilisez-les seulement en dernier ressort. Le
   sous-rpertoire input/ a des informations sur les priphriques en entre
   comme le clavier ou la souris. Elles ne sont pas aussi complexes que les
   autres rpertoires sous /proc/bus et pourraient fournir des informations
   utiles sur les priphriques d'entres qui sont sur les ports PS2 ou sur
   le bus LPC (voir Section 7.10,  Bus LPC ). Malheureusement, ce que j'ai
   vu ne dit pas que c'est sur le bus LPC o il est probablement. Dans
   /pci/00/ se trouve un fichier binaire pour chaque priphrique PCI o les
   noms des fichiers sont les numros des emplacements PCI. Le 00 signifie le
   bus PCI 0.

  7.6. Le rpertoire /sys

    partir du noyau 2.6, il existe un nouveau rpertoire /sys pour la
   configuration de PnP. Il s'agit d'un systme de fichiers de type sysfs et
   c'est un quivalent du systme de fichiers /proc car les  fichiers 
   reprsentent une information de la mmoire du noyau et non pas un vrai
   fichier de votre disque dur. Cependant, il n'est pas aussi utile que le
   systme de fichiers /proc. Au dbut (pour les noyaux 2.5), il s'appelait
   le  systme de fichiers des pilotes  et avait comme type  driverfs .

   Dans ce systme de fichiers, chaque priphrique existant sur votre
   systme a son propre rpertoire contenant des fichiers spcifiant les
   ressources qui lui sont affectes. Ces rpertoires ont des noms comme
   0000:00:12.0@ ou 00:06@. Quels sont ces priphriques ? Le premier est une
   carte PCI dans l'emplacement 12 de votre PC. L'emplacement pourrait tre
   appel PCI2 dans votre PC (2 au lieu de 12) tout simplement parce que les
   emplacements ayant des numros fiables sont utiliss par les emplacements
   intgrs  la carte mre et n'utilisent pas les emplacements physiques.
   Dans cet exemple, les emplacements 1  10 seraient intgrs alors que les
   emplacements 11  14 seraient appels de 1  4. En excutant lspci, vous
   connatrez la correspondance entre les numros (comme 0000:00:12.0) et les
   noms (identique  l'interface IDE). Excutez la commande lspci -vv, ou
   lspci -vv si vous voulez en voir plus.

   Alors, qu'est-ce que 00:06 ? C'est une carte ISA (ou un priphrique
   intgr) mais ce n'est pas l'emplacement 6 du bus ISA (contrairement au
   numrotage PCI). Quand une recherche est faite pour les priphriques PnP
   ISA, il a t le sixime dcouvert. Plus prcisment, il tait le septime
   trouv car il existe un priphrique numrot 00:00. Donc, comment les
   identifier ? Vous pouvez lancer  cat */*  et afficher tous les fichiers
   pour tous les priphriques mais mme  ce moment-l vous ne verrez pas
   les noms des priphriques (mais vous verrez l'information qui vous
   permettra de l'identifier). Ce problme sera corrig dans le futur.

   Non seulement ces fichiers apportent des informations sur la configuration
   des ressources du bus (d'une manire un peu crypte) et sur les pilotes
   (dans les rpertoires  drivers ) mais, dans le futur, vous devriez tre
   capable de les utiliser pour modifier la configuration des ressources.
   Actuellement (aot 2004), vous ne pouvez pas configurer le bus PCI avec
   cela. Une srieuse limitation est qu'avec le  modle de pilote  actuel,
   vous ne pouvez pas changer la ressource d'un priphrique qui a t
   affect  un pilote, ce qui signifie gnralement que vous aurez besoin de
   dcharger le module du pilote pour pouvoir l'utiliser. Si le pilote est
   intgr, il n'y a aucun espoir. Ces srieuses limitations seront limines
   dans le futur avec un peu de chance. Dans la documentation du noyau se
   trouve un fichier pnp.txt indiquant comment raliser la configuration. En
   aot 2004, il tait obsolte mais l'auteur travaille sur une mise  jour.
   Utiliser le rpertoire /sys pour configurer les ressources est connue
   comme l' interface utilisateur pour le Plug and Play de Linux .

   L'autre partie de  Linux Plug and Play  est l'interface noyau utilise
   par les pilotes de priphriques. Elle a beaucoup chang depuis le dbut
   du noyau 2.6 mais la plupart des pilotes utilisent toujours l'ancienne
   interface (aot 2004). Il est aussi possible pour les pilotes (ou vous)
   d'utiliser l'interface utilisateur qui a besoin d'amliorations.

  7.7. Inspection du bus PCI

   Il est facile de trouver quelles ressources bus ont t assignes aux
   priphriques du bus PCI avec les commandes lspci et scanpci. Les options
   -v et -vv vous donneront plus de dtails. Dans certains cas, scanpci
   trouvera un priphrique que lspci ne peut pas trouver. Ceci est d au
   fait que scanpci recherche les priphriques directement sur le bus PCI
   (via l'espace de configuration) et n'utilise pas les donnes obtenues par
   le noyau (qui pourraient tre fausses  cause d'un bogue du noyau -- je
   viens de trouver un tel cas).

   Cette information d'un format crypt est disponible dans les  fichiers 
   situs dans les rpertoires /sys et /proc. Dans /sys/bus/pci/devices, le
   fichier vendor contiendra le numro d'identifiant du vendeur, comme
   0x4B8C, et ctera. Dans un format encore moins comprhensible, il se
   trouve dans /proc/bus/pci. De telles informations dans les anciens noyaux
   (avant le 2.6) se trouvaient dans /proc/pci (comprhensible malgr que les
   IRQ soient en hexadcimal) ou dans /proc/buspci/devices (affichage non
   comprhensible).

   Dans la plupart des cas pour le PCI, vous verrez seulement comment le
   matriel est maintenant configur et pas quelles ressources sont
   ncessaires. Dans certains cas, vous verrez seulement l'adresse de base
   (le dbut des plages d'adresses) mais pas celle de fin. Si vous disposez
   de l'espace complet, alors vous pourrez dterminer combien d'octets de
   ressources sont ncessaires.

  7.8. Introduction au bus ISA

   Pour les cartes du bus ISA, ce n'est pas aussi simple que pour le bus PCI
   qui est conu pour le PnP. Les cartes ISA rcentes taient PnP
   contrairement aux anciennes. De mme, certaines cartes PnP ont leur partie
   PnP dsactive par des logiciels spciaux ne fonctionnant que sous MS
   Windows. Les cartes non PnP sont configures avec des cavaliers sur la
   carte ou par des logiciels sous MS Windows.

  7.9. Cartes ISA PnP

   Si c'est une carte PnP, vous pouvez essayer pnpdump --dumpregs mais ce
   n'est pas une certitude. Le rsultat peut sembler crypt mais il peut tre
   dchiffr. Ne confondez pas les adresses de port de lecture que pnpdump
   utilise pour communiquer avec les cartes PnP avec l'adresse
   d'entres/sorties du priphrique trouv. Elles ne sont pas identiques.

  7.10. Bus LPC

   LPC (acronyme de Low Pin Count, soit petit nombre de connecteurs) est une
   interface type bus souvent utilise sur les portables et de plus en plus
   utilise sur les machines de bureau. Pour savoir si vous disposez d'un bus
   LPC, saisissez la commande lspci et cherchez quelque chose comme  LPC .
   Il y a d'autres mots prt de  LPC  comme  ISA Bridge ... LPC Interface
   Controller  ou  LPC Bridge , et ctera. LPC n'est pas rellement de
   l'ISA mais il se substitue  un bus ISA.

   L'ancien bus ISA tait lent et les priphriques qui avaient besoin de
   plus de rapidit taient placs sur le nouveau bus PCI. Mais les
   priphriques qui n'avaient pas besoin d'une grande vitesse taient
   souvent implments par des composants sur la carte mre et restaient sur
   le bus ISA mme s'il n'y avait aucun emplacement pour des cartes ISA. Puis
   le bus LPC est arriv pour remplacer les cartes ISA restantes. LPC est
   bien plus petit que l'ISA et aussi rapide car son horloge est quatre fois
   plus rapide que celle du bus ISA. Son bus multiplex pour les
   donnes/adresses et le contrle est compos de quatre fils. Envoyer un
   octet requiert la sparation de l'octet en deux demi-octets et leur
   rassemblage aprs. Cela explique la signification de l'acronyme LPC : Low
   Pin Count (petit nombre de broches). Il y a aussi quelques lignes sur le
   bus.

   Cette petite interface LPC est utilis pour les priphriques
   propritaires lents comme les ports sries, les ports parallles et les
   lecteurs de disquette. Donc, un ordinateur utilisant le bus LPC aura tous
   ces priphriques rapides sur le bus PCI, et ctera et les priphriques
   lents sur le bus LPC. Tous les priphriques LPC seront sur la carte : il
   n'existe pas d'emplacement pour carte LPC.

   Un composant majeur du bus LPC est le composant superio, contenant des
   priphriques d'entres/sorties propritaires : ports srie et parallle,
   lecteur de disquette, contrleur de clavier, et ctera. Le BIOS pourrait
   mme se trouver sur le bus LPC. Le clavier et la souris (priphriques en
   entre) devraient tre lists dans /proc/bus/input/devices mais, au lieu
   de voir  lpc , il semble afficher  isa0060/serio0 , et ctera mme
   s'ils se trouvent sur le bus LPC, et non pas sur le bus ISA.

  7.11. X-bus

   Avant que le bus LPC devienne populaire, il existait un bus X (pas couvert
   dans ce guide pratique) qui a servi dans le mme but que le bus LPC mais
   qui n'tait pas aussi compact que le bus LPC. Certains PC disposent des
   deux bus.

  7.12. Cartes non PnP

   En contraste avec les cartes PnP, les cartes non PnP ont toujours leurs
   ressources configures au niveau matriel. C'est--dire qu'elles ont
   toujours une adresse et une IRQ sauf s'il existe une configuration par
   cavalier, et ctera pour dsactiver le priphrique. Quelquefois, le
   pilote du priphrique, ou un autre logiciel, peut trouver les ressources
   utilises simplement en cherchant sur chaque adresse. Par exemple,
   scanport (Debian uniquement ?) cherche sur la plupart des adresses
   d'entres/sorties et peut trouver des priphriques ISA. Mais, attention,
   cela peut bloquer votre PC. Quelque fois, il chouera dans sa recherche du
   matriel disponible (car le matriel a 0xff dans ses registres). Mme s'il
   trouve le matriel, il n'affichera pas l'IRQ ou n'identifiera pas
   positivement le matriel.

   Donc, une faon de trouver ce matriel est de lancer un pilote, qui
   pourrait chercher un tel matriel. En regardant dans les messages du
   dmarrage, vous pourriez voir un pilote se lancer et dcouvrir le
   matriel. Sinon, vous pourriez avoir besoin de trouver un pilote et de le
   lancer (par exemple, en le chargeant comme un module).

   Trouver le bon pilote peut tre difficile. Quelquefois, il n'existe tout
   simplement pas de pilote car certains priphriques ne sont pas (encore)
   grs par Linux. Pour dterminer le pilote dont vous avez besoin, jetez un
   il sur toute documentation pouvant vous permettre d'identifier la carte.
   Si ceci choue, jetez un il  la carte elle-mme, avec les noms/numros
   importants inscrits sur les composants. Mais l'identification du module de
   pilote dont vous avez besoin pourrait n'tre pas disponible sur la carte.
   Vous pouvez trouver l'identifiant FCC sur la carte, puis chercher sur
   Internet avec ce numro pour essayer de trouver plus d'informations sur la
   carte (ou sur les composants en faisant partie).

  7.13. Cartes non PnP avec cavaliers

   Si la carte dispose de cavaliers pour configurer les ressources, alors
   vous pouvez regarder la faon dont ils sont installs. Il existe des
   cartes qui ont  la fois le support de PnP et des cavaliers. Elles
   fonctionnent comme des cartes  cavalier si PnP a t dsactiv d'une
   faon ou d'une autre. Vous pourriez avoir besoin de la documentation (soit
   imprime soit sur disquette) venant avec la carte. Peut-tre pourrez-vous
   la trouver sur Internet.

  7.14. Cartes non PnP et sans cavaliers

   Un des cas les plus difficiles est quand du logiciel fonctionnant sous MS
   Windows a t utilis pour configurer une carte non PnP ou une carte PnP
   o la partie PnP a t dsactive. Donc, vous ne pouvez la configurer par
   PnP ou par des cavaliers. Dans ce cas, votre seul espoir est de chercher
   les adresses comme dcrit dans Section 7.12,  Cartes non PnP . Ou
   essayez de trouver le logiciel MS qui l'a configur.

  7.15. Outils pour dtecter ou configurer le matriel

   Dans un effort dupliqu, plusieurs distributions majeures de Linux ont
   dvelopp leur propre outil de dtection et de configuration du matriel.
   Ils configurent gnralement bien plus que les ressources Plug-and-Play.
   C'est une configuration gnrale qui est bien au-del du domaine couvert
   par ce guide pratique.

   Puis, d'autres distributions, comme Debian, pouvaient obtenir des copies
   des outils et les offrir  leurs utilisateurs comme option ou comme outil
   en cas de problme. Ces outils utilisent gnralement les outils Linux
   standard pour dtecter le matriel, comme par exemple lspci. Dans la liste
   d'outils qui suit, le nom de la distribution qui l'a conu est entre
   parenthses mais l'outil est certainement disponible aussi pour les autres
   distributions.

     * hardinfo ;

     * hwinfo (SuSE) dtecte plus de choses que discover ;

     * discover (Progeny, utilis par Debian) ;

     * Kudzu (RedHat) dtecte et configure ;

     * lsdev (commande Linux standard) ;

     * hwsetup-knoppix (Knoppix, bas sur Kudzu).

  7.16. Outils pour dtecter et configurer un type de matriel

   Il existe diffrents outils disponibles pour trouver et, quelque fois,
   configurer diffrents types de priphriques. Cette configuration est
   gnraliste et n'est pas couverte dans ce guide pratique.

     * read-edid (get-edid) : rcupre les paramtres des moniteurs VESA (
       part les trs anciens) ;

     * sndconfig : pour les cartes son ;

     * printtool : imprimantes (X-window doit tre en cours d'excution) ;

     * pconf-detect : ports parallles ;

     * gpm-mouse-test : dtecte et teste les souris

     * mdetect : dtecte et configure les souris. Connat-il les souris sur
       /dev/input/ ?

     * nictools-pci (et nictools-nopci) pour les cartes ethernet ;

     * hdparm : configure les disques durs ;

     * hotplug : utilis par le noyau ;

     * xvidtune : configure la vido avec Xwindows (voir
       XFree86-Video-Timings-HOWTO).

  7.17. Utilisez MS Windows

   Quelques personnes ont essay d'utiliser Windows pour voir comment les
   ressources bus taient configures. Malheureusement, comme le matriel PnP
   oublie sa configuration de ressources bus  l'arrt, la configuration peut
   ne pas tre identique lors du redmarrage sous Linux pour le matriel non
   PnP (ou lorsque quelqu'un a dsactiv PnP dans le priphrique soit par
   des cavaliers soit en utilisant des logiciels Windows). Mme pour PnP,
   cela peut tre le cas parce que dans beaucoup de cas, Windows et Linux
   acceptent simplement ce que le BIOS a fait. Mais l o Windows et Linux
   font une configuration, ils peuvent le faire diffremment. Donc ne comptez
   pas  ce que les priphriques soient configurs de la mme manire.

8. Interruptions PCI

  8.1. Introduction

   Chaque priphrique PCI qui a besoin d'une interruption vient avec une
   interruption PCI fixe qui ne peut pas tre modifi. Elle est dsign par
   un numro de slot et une lettre (A, B, C ou D), par exemple 3:B. Mais,
   cette interruption PCI est redirige vers un numro d'interruption ISA,
   comme par exemple 21 pour un composant sur la carte mre.

   Ce routage est ralis par un routeur programmable d'interruptions (PIR,
   acronyme de programmable interrupt router). Autrement, une ligne
   d'interruption pourrait tre route directement (sans aucun PIR). Si un
   PIR est prsent, il peut tre programm par le BIOS ou par Linux. Donc,
   l'interruption d'un periphrique PCI peut quelque fois tre modifie, non
   pas en envoyant l'interruption sur un fil diffrent, mais en modifiant le
   routage d'un envoi sur ce film en programmant le PIR. Quand le routage est
   modifi, l'interruption fournie par ce nouveau routage est crit dans un
   registre de configuration situ dans le composant du priphrique.

  8.2. Historique : des interruptions ISA aux PCI

   Avant l'arrive du bus PCI, les PC utilisaient le bus ISA. Ensuite, lors
   de la transition vers le nouveau bus PCI, les PC utilisaient les bus ISA
   et PCI. Le bus ISA est fait de telle faon que toutes les lignes
   d'interruption arrivent sur chaque carte, donc toute carte peut modifier
   son numro d'IRQ tout simplement en envoyant son signal d'interruption sur
   la ligne souhaite. Tous les signaux d'interruption taient envoys au
   contrleur d'interruption qui envoyait ensuite un signal au processeur
   pour lui indiquer de stopper temporairement son travail et de lancer le
   code du pilote pour rpondre  l'interruption.

   Quand le PCI est apparu, la solution simple tait d'tablir une
   correspondance entre les interruptions PCI et les interruptions ISA qui
   n'taient pas utilises. Ceci ncessite l'utilisation du PIR, routeur
   programmable d'interruptions. Ce routeur ralise la correspondance. Comme
   il n'y avait que 15 interruptions, il tait commun de placer plusieurs
   priphriques PCI sur les quelques interruptions disponibles. Rsoudre ce
   problme est simple : proposer un nouveau matriel pour augmenter le
   nombre d'interruptions. Le rsultat est l'APIC. Son adoption a t lente
   car la capacit du bus PCI  partager les interruptions a diminu le
   problme. En fait, l'APIC a t principalement utilis avec les machines
   bi-processeurs.

  8.3. Contrleur avanc d'interruptions programmes (APIC, acronyme de Advanced
  Programmable Interrupt Controller)

   Un APIC peut fournir (suivant le modle) 16, 24, 32 ou 64 interruptions,
   etc. Il peut aussi grer le routage d'interruptions d'un processeur vers
   un autre. Voir le fichier  IO-APIC  dans le rpertoire i386 de la
   documentation du noyau et le guide pratique sur l'ACPI. Ne confondez pas
   APIC avec ACPI (Configuration avance et interface pour la gestion
   d'nergie) qui peut tre utilis par le noyau pour configurer l'APIC.

   Le contrleur APIC actuel qui est connect sur les lignes d'interruptions
   est un APIC I/O (ou IO-APIC ou IOAPIC). En utilisant plus d'un IO-APIC, on
   peut obtenir plus d'interruptions et elles sont numrotes de faon  tre
   uniques. Par exemple, le premier contrleur peut les numroter de 0  23
   et le second les appelera de 24  47, ce qui donne 48 interruptions
   numrotes de 0  47. Mais certaines personnes ont des numros
   d'interruptions hauts. Se pourrait-il que le deuxime IO-APIC commence la
   numrotation avec un numro de base haut, laissant ainsi beaucoup d'IRQ
   inexistants. ?

   En plus des IO-APIC, il existe des APIC locaux (LAPIC) qui font partie de
   chaque processeur. L'IO-APIC travaille en communiquant avec les LAPIC
   compris dans les processeurs.

   Quand APIC a t introduit, les anciens PIC ISA taient aussi conservs en
   laissant le choix d'utiliser ou non l'APIC ou le PIC ISA (qui est quelque
   fois appel PIC ou XT-PIC dans /proc/interrupts ; le XT vient du PC XT
   d'IBM qui tait le second modle de PC d'IBM en 1983). Il est possible de
   dire au noyau (sur la ligne de commande du noyau) de ne pas utiliser APIC
   auquel cas il utilisera le vieux XT-PIC s'il est disponible. Comme l'APIC
   peut avoir plus d'interruptions que les 15 fournies par XT-PIC, il
   pourrait y avoir des problmes ??

   Pour savoir si vous utilisez PIC ou APIC, regardez dans /proc/interrupts.
   Si vous voyez XT-PIC pour l'IRQ 2 seule et IO-APIC pour les autres, cela
   pourrait signifier que vous avez l'ancien XT-PIC mais qu'il n'est pas
   actuellement utilis. En fait, l'IRQ 2 est utilis pour la communication
   entre les deux anciens XT-PIC juste au cas o vous en auriez besoin aprs
   avoir dsactiver l'APIC. Deux XT-PIC sont ncessaires car chacun
   supportent seulement huit interruptions.

  8.4. Interruptions signales par message (MSI)

   Un autre nouveau dveloppement concerne les interruptions signales par
   message (MSI, acronyme de Message Signalled Interrupts (MSI) o
   l'interruption est juste un message envoy  une adresse spciale sur le
   bus principal de l'ordinateur (pas de ligne d'interruption ncessaire).
   Mais le priphrique qui envoie un tel message doit tout d'abord obtenir
   le contrle du bus principal de faon  ce qu'il puisse envoyer le message
   d'interruption. Un tel message contient plus d'informations que  J'envoie
   une interruption . Il contient un index pour l'adresse du programme qui a
   besoin d'tre excut pour remplir la mission de l'IRQ. Ce nombre, par
   exemple 3, signifie que le processeur trouve l'adresse  laquelle il doit
   se rendre dans le troisime lment d'une table spciale connue du
   processeur.

   Comme le matriel du priphrique doit connatre MSI pour que le
   priphrique utilise MSI, il est frquent que certains priphriques
   utilisent MSI alors que d'autres utilisent les interruptions
   traditionnelles. Since for a device to use MSI the device hardware must
   support MSI, Les mthodes conventionnelles du support matriel des
   interruptions (appeles INTx) seront donc certainement prsentes pendant
   longtemps encore. Les MSI ont des numros d'interruption comme les
   interruptions INTx mais ces nombres sont souvent trop grands pour viter
   toute rutilisation des nombres des interruptions INTx.

  8.5. Partage des interruptions PCI

   Les interruptions PCI peuvent tre partages, signifiant que deux
   priphriques voire plus utilisent la mme IRQ. C'est faisable, il est
   gnralement prfrable de ne pas les partager. Le partage ne fonctionne
   pas bien pour les trs anciens matriels PCI (avant 1995 ?) et pour les
   matriels PCI dfectueux ds l'usine (ils ont t crs ainsi). Par
   exemple, si un priphrique PCI sur l'IRQ 9 rclamait par erreur que toute
   IRQ 9 tait pour lui, alors les autres priphriques utilisant l'IRQ 9
   verraient toutes leurs demandes d'interruption ignores. Sans partage, ce
   problme est vit.

   Pour un exemple de partage d'une mme IRQ entre deux priphriques PCI,
   voir Partage d'interruption PCI. Cette capacit de partage est intgre au
   matriel et tous les pilotes de priphriques sont supposs la supporter.
   Notez que vous ne pouvez pas habituellement partager la mme interruption
   entre le bus PCI et le bus ISA.

  8.6. Recherche dans les tables de routage

   Certaines informations sont fournies par les messages au dmarrage. Elles
   sont visibles grce  l'outil  dmesg . Les faons de rechercher les
   tables impliquent du logiciel que vous pourriez ne pas avoir (ou qui
   n'existe pas encore). Pour vrifier le routage qu'effectue PCI vers les 16
   interruptions ISA, utiliser  pirtool  qui affiche la table de routage
   $PIR. Si vous avez un APIC avec un routage en dur (pas de PIR), utiliser
    mptable  pour rechercher dans la table MP. Pour un APIC routable, des
   mthodes ACPI _PRT sont utilisables pour accder  une table (mais je ne
   sais pas si un outil en ligne de commande existe pour cela ?)

  8.7. Pour plus d'informations

   Des informations techniques dtailles sur les interruptions sont
   disponibles, par exemple  Les interruptions PCI pour les machines x86
   sous FreeBSD
   [http://people.freebsd.org/~jhb/papers/bsdcan/2007/article/article.html].
   Microsoft a un document intitul  L'importance de l'implmentation des
   sous-systmes d'interruptions bases sur APIC sur les PC mono-processeur"
   [http://www.microsoft.com/whdc/system/sysperf/apic.mspx] .

9. Lier les interruptions PCI

   Voici quelques dtails sur le systme d'interruptions PCI. Chaque carte
   PCI (et les priphriques monts sur la carte-mre) a quatre interruptions
   possibles : INTA#, INTB#, INTC#, INTD#.  partir de maintenant, nous les
   appelerons simplement A, B, C et D. Chacune a sa propre broche sur le
   connecteur d'une carte PCI. Donc, pour un systme comprenant sept
   emplacements (pour sept cartes), il pourrait y avoir 28 (7 x 4)
   diffrentes lignes d'interruption pour ces cartes. Les priphriques
   intgrs  la carte-mre ont aussi des interruptions supplmentaires. Mais
   les spcifications permettent un nombre plus rduit de lignes
   d'interruption, donc certains bus PCI semblent n'avoir que quatre ou huit
   lignes d'interruption. Ceci n'est pas trop restrictif car les
   interruptions pourraient tre partages. Pour une ligne  quatre
   interruptions (LNKA, LNKB, LNKC, LNKD), il y a un composant appel
    routeur programmable d'interruptions  qui redirige LNKA, LNKB, LNKC,
   LNKD vers les IRQ slectionnes. Ce routage peut tre modifi par le BIOS
   ou par Linux. Par exemple, LNKA peut tre rout vers l'IRQ 5. Supposons
   que nous dsignons l'interruption B de l'emplacement 3 comme
   l'interruption 3B. Les interruptions 3B et 2A pourraient tre connectes
   de faon permanente  LNKA qui est rout vers l'IRQ 5. Ces deux
   interruptions, 3B et 2A, sont partages en permanence par le cablage sur
   la carte-mre.

   Saisir dmesg sur la ligne de commande permet de voir comment les lignes
   d'interruption style LNKA sont rediriges (ou routes) vers les IRQ (*5
   signifie que c'est li  l'IRQ 5). Recherchez PCI Interrupt Link. Notez
   que  link  est utilis ici avec deux significations : 1. le lien
   (routage) des lignes d'interruptions PCI vers les les IRQ, 2. le label
   d'une ligne d'interruption comme LNKB (lien B). Les labels de la ligne
   d'interruption semblent tre fournis par le BIOS (??) et pourraient avoir
   des noms diffrents comme : LNKC, LNK2, APCF, LUBA, LIDE, et ctera.
   Question : quand un grand nombre de lignes d'interruption sont affiches
   comme tant dsactives, existent-elles toutes physiquement sur la
   carte-mre ? ou existent-elles seulement dans la partie ACPI du BIOS pour
   que ce dernier puisse fonctionner avec les cartes-mres qui ont un grand
   nombre de lignes d'interruption ?

   Connecter toutes les interruptions A (INTA#)  la ligne LNKA, toutes les B
    la ligne LNKB, et ctera. est une mthode simple pour connecter en dur
   ces lignes des priphriques PCI (comme le 3B) aux interruptions LNKA, et
   ctera. Cette mthode a t utilise une fois plusieurs annes
   auparavarant mais ce n'est pas la bonne solution. Voici pourquoi. Si une
   carte a seulement besoin d'une interruption, elle doit utiliser A. Si elle
   a besoin de deux interruptions, elle doit utiliser A et B. Du coup, INTA#
   est utilis bien plus frquemment que INTD#. Donc, on va se trouver avec
   un nombre excessif d'interruptions partageant la premire ligne (LNKA
   connect  toutes les INTA#). Pour dpasser ce problme, il vaut mieux les
   connecter de faon alatoire pour que chacune des quatre lignes
   d'interruptions (LNKA, LNKB, LNKC, LNKD) partagent  peu prs le mme
   nombre d'interruptions PCI.

   Une faon de le faire est de lier en dur LNKA avec les interruptions 1A,
   2B, 3C, 4D, 5A, 6B, 7C. Ceci se fait en connectant physiquement le fil W
   aux fils 1A, 2B, et ctera. De la mme faon, le fil LNKB pourrait tre
   connect aux fils 1B, 2C, 3D, 4A, 5B, 6C, 7D, et ctera. Puis, au
   dmarrage, le BIOS dirige les LNKB, LNKA, LNKC, LNKD aux IRQ. Aprs cela,
   il crit l'IRQ que chaque priphrique utilise dans un registre de
   configuration du matriel dans chaque priphrique.  partir de
   maintenant, tout programme interrogeant ce registre peut savoir l'IRQ
   utilise par le priphrique. Notez qu'crire simplement l'IRQ dans un
   registre sur une carte PCI ne configure en aucun cas l'IRQ pour ce
   priphrique.

   Une utilisation pratique de cette information est qu'en dernier ressort,
   une personne pourrait modifier les IRQ d'une carte PCI en l'insrant dans
   un emplacement diffrent. Dans l'exemple ci-dessus, INTA# d'une carte PCI
   sera connect au fil LNKA si la carte est insre dans l'emplacement 1 (1A
   correspond  LNKA) mais INTA# sera connect au fil LNKB si elle est
   insre dans l'emplacement 4 (4A correspond  LNKB).

   Une carte dans un emplacement pourrait avoir jusqu' huit priphriques
   mais il n'y a que quatre interruptions PCI pour elle (A, B, C, D). Cela
   suffit car les interruptions pourraient tre partages pour que chacun des
   huit priphriques (s'ils existent) puisse avoir une interruption
   partage. La lettre de l'interruption PCI d'un priphrique est souvent
   fixe et code en dur dans le priphrique. L'affectation des
   interruptions est ralise par soit le BIOS ou par Linux, tablissant une
   correspondance entre les interruptions PCI et les interruptions ISA comme
   mentionn ci-dessus.

   S'il n'existe que quatre lignes (LNKA, LNKB, LNKC, and LNKD) comme dans
   l'exemple ci-dessus, les choix de correspondance pour le BIOS sont
   limits. Certaines cartes-mre peuvent utiliser plus de lignes et ont donc
   plus de choix. Par exemple, de LNKA  LNKH (8 lignes). Les messages au
   dmarrage (dmesg) peuvent les afficher et indiquer leur correspondance. Le
   BIOS sait comment elles sont cbles.

   Sur le bus PCI, le BIOS (ou Linux) affecte des IRQ (interruptions) de
   faon  viter les conflits avec les IRQ qu'il sait affects au bus ISA.
   Quelque fois, le menu du CMOS du BIOS peut vous autoriser  affecter des
   IRQ aux cartes PCI ou indiquer au BIOS les IRQ rserves aux priphriques
   ISA. Les affectations sont connues sous le nom d'une table de routage.
   Sous MS WIndows, c'est appel IRQ steering mais cela couvre aussi le cas
   d'un routage dynamique des IRQ aprs le dmarrage. Le BIOS peut supporter
   son propre IRQ steering.

   Si votre PC utilise les interruptions PCI qui sont renvoyes vers des
   interruptions ISA, vous auriez le droit de penser que les interruptions
   seront lentes tant donn que le bus ISA tait lent. Pas vraiment. Le
   composant de contrle des interruptions ISA a un fil d'interruption direct
   le reliant au CPU pour qu'il obtienne une attention immdiate. Bien que
   les signaux sur les bus d'adresses et de donnes de l'ancien ISA sont
   lents pour arriver au CPU, les signaux d'interruptions y arrivent
   rapidement.

10. PnP pour les priphriques externes et ajouts

  10.1. Bus USB

   L'USB (Universal Serial Bus, c'est--dire Bus Universel Srie) est un bus
    grande vitesse sur un cble externe qui se connecte au PC. Le bus
   externe a ses propres protocoles de communication et n'utilise pas les
   IRQ, adresses d'entres/sorties (ou tout autre ressource bus) sur les
   cbles bus externes. La communication se fait par paquets comme sur
   Internet, seulement sur des allocations de tranches de temps, ce qui
   empche un priphrique de manger le bus si d'autres priphriques en ont
   besoin. Il existe des tranches de temps libre qui permettent  tout
   priphrique d'envoyer un message court au contrleur de bus sans avoir
   besoin des IRQ sur le bus.

   Nanmoins, le contrleur de bus USB intgr au PC a une IRQ et une adresse
   sur le bus PCI (ou ISA), utilises pour la communication entre le CPU et
   tous les priphriques USB. Donc, il n'y a pas d'allocations de ressources
   ncessaires pour les priphriques individuels sur le bus USB. Vous pouvez
   aussi imaginer que tous les priphriques sur le bus USB partagent la mme
   interruption et la mme adresse. Si un priphrique est sur l'USB, il a
   besoin d'un pilote qui comprenne l'USB.

   Mais, chaque priphrique USB a un identifiant, comme les cartes du bus
   PCI. Linux maintient donc une table des identifiants de faon  ce que les
   pilotes de priphrique puissent les vrifier et trouver ainsi leur
   priphrique. L'USB supporte aussi le  hot plug . Pour trouver ce qui
   est plac sur le bus USB, vous pouvez utiliser un outil gnraliste de
   dtection de matriel comme discover ou hwinfo.

  10.2. Hot Plug

    Hot plug  correspond  la connexion d'un priphrique sur un PC
   (habituellement avec un cble) et  sa dtection immdiate. Si ncessaire,
   il est configur avec les ressources bus. Son pilote est aussi lanc,
   peut-tre en chargeant le module correspondant. Pour que ceci fonctionne,
   le matriel utilis doit tre conu de faon appropri. Vous pouvez
   utiliser cette fonctionnalit avec certaines cartes PCI (Cardbus),
   priphriques USB et IEEE 1394 (Firewire).

   Lorsqu'un nouveau priphrique est dtect, ses registres sont lus de
   faon  rcuprer un numro d'identifiant du priphrique. Pour trouver un
   pilote, Linux doit maintenir une table ralisant la correspondance entre
   numro de priphrique et pilote. Cette table existe dans le noyau depuis
   la version 2.4. Elle est nomme MODULE_DEVICE_TABLE.

  10.3. Hot Swap

    Hot Swap  vous permet de remplacer un ancien priphrique en l'enlevant
   et en branchant le nouveau. Vous avez donc interverti (swapped) les
   priphriques. Maintenant, en plus d'tre capable de dtecter le
   branchement d'un nouveau priphrique, la suppression d'un ancien
   priphrique doit aussi tre dtecte.

  10.4. PnP dtecte les priphriques connects aux ports sries

   Les priphriques externes connects par le port srie via un cble (comme
   les modems externes) sont aussi appel Plug-and-Play. Comme seul le port
   srie a besoin de ressources bus (une IRQ et une adresse
   d'entres/sorties), il n'y a pas de ressources bus  allouer pour ces
   priphriques. Dans ce cas, PnP est utilis uniquement pour
   l'identification du modem (lire le numro/code du modle). Ceci est
   important dans le cas o ce modem est un modem logiciel (linmodem) et
   requiert un pilote spcifique. Il existe une spcification PnP pour de
   tels priphriques sries externes (quelque chose connect au port srie).

   Linux ne supporte pas encore ceci ? Pour un modem matriel, le pilote
   srie ordinaire suffira, donc il n'y a pas besoin de chercher un pilote
   avec serialpnp. Vous devez toujours indiquer au programme de communication
   sur quel port se trouve le modem. Avec PnP, vous n'auriez mme pas besoin
   de faire a. Avec l'arrive des modems logiciels disposant de pilotes
   Linux (linmodem), il serait bien que les pilotes appropris s'installent
   automatiquement via PnP.

11. Messages d'erreurs

  11.1. Unexpected Interrupt (Interruption inattendue)

   Ceci signifie qu'une interruption est survenue alors qu'aucun pilote ne
   l'attendait. Il est improbable que le matriel ait gnr une interruption
   par erreur. Il est plus probable que le logiciel comporte un petit bogue
   et n'a pas ralis qu'un logiciel a fait quelque chose qui a gnr cette
   interruption. Dans la plupart des cas, vous pouvez ignorer ce message en
   toute scurit, et tout particulirement si cela n'est arriv qu'une ou
   deux fois lors du dmarrage. Pour les messages du dmarrage, regardez les
   messages qui lui sont proches pour trouver une indication sur ce qui s'est
   pass. Par exemple, si une recherche tait en cours, il est possible que
   cela ait activ un priphrique physique qui en retour a gnr une
   interruption, interruption que le pilote n'attendait pas. Le pilote
   n'coutait peut-tre pas le bon numro d'IRQ.

  11.2. Erreur de configuration Plug and Play (BIOS Dell)

   Le BIOS a t incapable de configurer les ressources bus. Il peut exister
   un conflit d'interruptions qui ne peut tre vit. Dell vous suggre que
   vous enleviez certaines des cartes non essentielles pour voir si le
   problme disparat. Dans un cas, le problme tait d  une carte mre
   dfectueuse.

  11.3. isapnp: Write Data Register 0xa79 already used ( partir des journaux)

   Si vous utilisez isa-pnp, l'adresse d'entres/sorties 0xa79 ne doit jamais
   tre utilise par un priphrique, quel qu'il soit. Donc, si un autre
   matriel utilise 0xa79 lorsque vous essayez de charger le module isa-pnp,
   vous obtiendrez ce message dans vos journaux de trace et isa-pnp quittera.
   Une faon de corriger cela est de charger le module isa-pnp bien plus tt
   avant que tout autre matriel ne soit initialis. Pour le PCMCIA, ceci
   impose de charger isa-pnp avant de lancer les modules cb et le service
   associ.

  11.4. Impossible d'allouer la rgion (PCI)

   Ici,  rgion  signifie un ensemble d'adresses. Un priphrique PCI qui a
   besoin de deux rgions aura la rgion 0 comme premire adresse et la
   rgion 1 pour deuxime adresse. Utilisez la commande lspci --v pour voir
   les diffrentes rgions de ressources (souvent appel rgions) et si
   l'adresse est de type entre/sortie ou mmoire. Dans le jargon PCI, la
   rgion 2 est l' adresse de base 2  (ou  registre d'adresse de base
   2 ), et ctera.

12. Partage et conflit d'interruption

  12.1. Introduction

   Quand deux priphriques ou plus utilisent la mme ligne d'interruption,
   (et le mme numro d'IRQ), il s'agit soit d'un  partage d'interruption 
   soit d'un  conflit d'interruption . Le bus PCI autorise tous les
   priphriques PCI  partager des interruptions avec les autres, ce qui est
   appel le partage. Mais si un priphrique ISA (ou un priphrique LPC ??)
   utilise la mme interruption (IRQ) qu'un autre priphrique (PCI, ISA ou
   LPC ??), il y habituellement un conflit d'interruption.

   Il existe des exceptions. Certains priphriques PCI trs anciens
   (pr-1995) ne permettent pas le partage d'interruption.  contrario,
   quelques priphriques ISA ont t conus pour partager les interruptions
   (entre deux priphriques ISA ?) mais ces deux priphriques ISA doivent
   tre conus de cette faon et tre pilots par du logiciel au courant du
   partage des interruptions. La carte-mre doit aussi le supporter. La
   discussion suivante se rapporte aux PC qui ont un bus ISA.

   Un conflit signifie que, quand une interruption survient, aucun pilote de
   priphrique (ou le mauvais) ne sera appel. Cela peut aboutir  de
   mauvaises actions comme des dpassements de tampon (perte de donnes). Un
   priphrique peut presque immobiliser sa ligne d'interruption quand il
   n'envoie pas son interruption, et de ce fait empcher tout autre
   dispositif d'employer cette ligne d'interruption. Cela ne pose pas de
   problme seulement si seul ce priphrique utilise cette interruption mais
   si un deuxime priphrique essaie d'utiliser la mme ligne
   d'interruption, il ne pourra plus le faire. Si ce second priphrique
   immobilise aussi la ligne lorsqu'il n'envoyait pas d'interruption, alors
   aucun des deux priphriques ne peut utiliser l'interruption. Linux et les
   deux priphriques sont inconscients de ce conflit et continuent  envoyer
   les interruptions qui vont nul part et sont donc perdus.

   Les conflits d'interruptions taient communs quand les IRQ taient
   configures grce  des cavaliers sur les cartes (bus ISA), souvent parce
   que le noyau ne connaissait pas la configuration de ces cavaliers. Le
   Plug-and-Play ISA (aucun cavalier) a beaucoup aid car le logiciel pouvait
   modifier les IRQ. L'abandon d'ISA en faveur du PCI a pratiquement limin
   les conflits IRQ. Malgr tout, votre PC peut toujours avoir des
   priphriques sur la carte-mre (pas sur une carte fille) sur un bus ISA,
   LPC ou X. Mais le BIOS et le noyau devraient savoir comment les configurer
   et donc viter de les utiliser pour les priphriques PCI, vitant ainsi
   les conflits d'interruption. Mais il existe toujours un problme avec PCI
   car il peut manquer d'interruptions disponibles, tout spcialement sur les
   anciens PC qui ont seulement 16 interruptions.

   Mais, bien qu'ayant limin le problme des conflits, le partage d'IRQ sur
   le bus PCI a introduit un nouveau problme qui est moins srieux, le
   problme d'quilibre des IRQ. Si des priphriques utilisant beaucoup les
   interruptions partagent la mme IRQ, cela pourrait amener des dlais dans
   la rcupration des IRQ et pourrait mme amener  des dpassements de
   tampon et d'autres erreurs. Ceci n'est pas d  la faon dont le logiciel
   dtermine le priphrique qui a lanc cette interruption.

   Il existe deux types de conflits d'interruptions. Le premier est un vrai
   conflit, celui dcrit ci-dessus. Dans ce cas, les interruptions ne
   fonctionnent plus et le pilote de priphrique continue d'essayer de
   contrler son priphrique et ne sait pas que les interruptions ne
   fonctionnent pas. Le second type de conflit d'interruption arrive quand un
   pilote de priphrique est lanc mais dcouvre que l'interruption dont il
   a besoin est dj utilis. Il affiche un message d'erreur et quitte. Le
   message indique quelque chose comme  ressource en cours d'utilisation 
   ( ressource busy ) mais ne prcise pas clairement qu'il s'agit d'un
   problme d'interruption.

  12.2. Vrai conflit d'interruption

   Le BIOS et le noyau ne vont pas permettre un conflit d'interruptions en
   connaissance de cause. Alors comment cela peut-il arriver ? Une faon d'y
   parvenir arrive quand quelqu'un a indiqu un mauvais IRQ dans un fichier
   de configuration, par exemple en donnant un paramtre  irq=9   un
   module. Dans cet exemple, supposons que l'IRQ du priphrique est
   rellement le 5. Quand un autre pilote de priphrique se lance et trouve
   son priphrique  l'IRQ 5, vous avez deux vrai priphriques utilisant la
   mme IRQ, ce qui aboutit  un vrai conflit. Le noyau a approuv
   l'utilisation de l'IRQ 5 par le second priphrique car il a t tromp et
   pensait que le premier priphrique tait sur l'IRQ 9.

   Il existe d'autres cas o le noyau ne sait pas qu'une IRQ est utilise.
   Par exemple quand une ancienne carte ISA est configur par un cavalier
   mais que son pilote n'est pas encore lanc (il peut mme ne pas voir de
   pilote). Un autre cas, le BIOS configure un IRQ au niveau matriel mais
   aucun pilote Linux n'est lanc pour ce matriel. Linux ne connatra donc
   pas cette IRQ. Ceci peut mme arriver pour une carte PCI, celle-ci
   s'affichera avec la commande lspci -v mais ne sera pas disponible dans le
   rpertoire /proc/interrupts et n'est donc pas connue par le noyau. Est-ce
   un bogue du noyau ?

   Quels sont les symptmes d'un conflit d'interruption ? On pourrait penser
   que les priphriques ne fonctionnent pas du tout mais comme les adresses
   sont connues, le pilote peut communiquer. Les interruptions sont souvent
   utilises pour contrler le flux de donnes provenant et allant au
   priphrique. Sans les interruptions, le flux n'est pas contrl, ce qui
   signifie des dpassements de tampon, voire mme pas de flux du tout, les
   interruptions pouvant aussi tre utilises pour initier le flux. Pour un
   modem srie, le rsultat est un flux extrmement lent avec de longues
   pauses et des erreurs frquentes. Pour une carte son, cela pourrait
   signifier qu'un mot ou deux sont entendus, puis plus rien.

  12.3. Aucune interruption disponible

   Ceci arrive quand un pilote de priphrique est lanc mais quitte
   immdiatement pour viter un conflit d'interruption. Gnralement, il
   affiche un message d'erreur comme  ressource en cours d'utilisation  ou
   l'enregistre dans un journal de trace.

   Un cas o un priphrique ISA est activ et ne peut se voir affect une
   interruption (IRQ) car aucune n'est disponible. Ou une interruption
   pourrait tre disponible mais ne peut pas tre utilise car le matriel du
   priphrique qui a besoin de cette interruption ne sait pas grer le
   numro disponible ou la carte mre ne le supporte pas non plus  cause de
   problmes de routage (voir PCI Interrupts). Si les priphriques ISA
   utilisent toutes les interruptions, alors une ou plusieurs cartes PCI
   pourraient tre en conflit car elles ne peuvent pas obtenir d'IRQ.

   Normalement, le BIOS affectera des interruptions et ne crera pas de
   conflits. Mais il pourrait tre forc de crer des conflits s'il tombe 
   court d'IRQ. Ceci peut survenir si quelqu'un a configur le BIOS pour
   rserver certaines IRQ pour les priphriques ISA qui ne sont pas PnP. Ces
   paramtrages pourraient tre mauvais et devraient tre vrifis, tout
   spcialement si vous avez des problmes. Par exemple, quelqu'un pourrait
   avoir rserv une IRQ pour une carte ISA qui a t enlev du PC depuis
   longtemps. Si vous rcuprez cette IRQ, alors elle est disponible et un
   conflit disparat.

   Quelque fois, le BIOS rsoudra le problme du manque d'IRQ en utilisant ce
   qu'il appelle l'IRQ 0. Elle n'existe pas car la vrai IRQ 0 est affecte en
   permanence  l'horloge de l'ordinateur mais signifie que le pilote devrait
   utiliser la demande au lieu des IRQ. Ceci signifie que le pilote devra
   vrifier frquemment le priphrique (lui demander) pour voir si le
   priphrique a besoin d'un service de la routine d'interruptions. Bien
   sr, cela gche du temps processeur et il y a plus de risques d'un
   dpassement de tampon du priphrique car il pourrait ne pas tre servi
   assez rapidement par le pilote.

13. Annexe

  13.1. Universal Plug and Play (UPnP)

   C'est en quelque sorte un rseau Plug-and-Play dvelopp par Microsoft
   mais utilisable sous Linux. Vous connectez quelque chose sur un rseau et
   ce quelque chose n'a pas besoin d'tre configur mais ne va communiquer
   qu'avec des priphriques UPnP du rseau. Ici,  configurer  est utilis
   dans le sens large et ne signifie pas simplement configurer les ressources
   bus. Un des objectifs est de permettre au gens connaissant peu de choses
   sur les rseaux ou sur la configuration et l'installation d'un routeur,
   d'une passerelle, d'une imprimante rseau, et ctera de le faire. Une
   utilisation majeure de UPnP serait dans les rseaux sans-fil.

   UPnP utilise :

     * un protocole de dcouverte des services (Simple Service Discovery
       Protocol) pour trouver les priphriques,

     * une architecture de notification gnrale d'vnements (General Event
       Notification Architecture),

     * un protocole d'accs aux objets (Simple Object Access Protocol) pour
       assurer le contrle des priphriques.

   Ce guide pratique ne couvre pas UPnP. UPnP pour Linux est support par
   Intel qui a dvelopp un logiciel spcifique. Il existe d'autres
   programmes qui font  peu prs la mme chose que UPnP. Une comparaison de
   ceux-ci est disponible sur
   http://www.cs.umbc.edu/~dchakr1/papers/mcommerce.html
   [http://www.cs.umbc.edu/~dchakr1/papers/mcommerce.html]. Un projet UPnP
   pour Linux se trouve sur Sourceforge : Kit UPnP pour Linux
   [http://sourceforge.net/projects/upnp/]

  13.2. Dtails des adresses

   Il existe trois types d'adresses : adresses en mmoire principale,
   adresses d'entres/sorties (ports) et adresses de configuration. Sur le
   bus PCI, les adresses de configuration constituent une plage d'adresses
   spare un peu comme les adresses d'entres/sorties. Sauf dans le cas
   compliqu des adresses de configuration ISA, qu'une adresse sur le bus
   soit ou non une adresse en mmoire principale, une adresse
   d'entres/sorties ou une adresse de configuration dpend seulement du
   voltage sur certains fils du bus. Pour plus de dtails sur les adresses de
   configuration du bus ISA, voir Section 13.3,  Adresses de configuration
   du bus ISA (Port de lecture et ctera) .

    13.2.1. Plages d'adresses

   Le terme  adresse  est quelque fois utilis dans ce document pour
   signifier un ensemble contigu d'adresses. Les adresses sont en unit
   d'octets. Donc, par exemple, un port srie sur l'espace d'adressage
   3F8-3FF sera souvent juste rfrenc par son adresse de base, 3F8. 3F8 est
   l'emplacement du premier octet de la plage (espace d'adressage). Pour
   visualiser les espaces d'adressage, jetez un il  /proc/iomem et
   /proc/ioports.

    13.2.2. Plage d'adresses

   Pour accder  la fois aux espaces d'adresses mmoire principale et
   d'entres/sorties, le mme bus d'adresses est utilis (les fils utiliss
   pour l'adresse sont partags). Comment le priphrique sait-il si
   l'adresse apparaissant sur le bus est une adresse mmoire ou
   d'entres/sorties ? En fait, pour l'ISA (pour le PCI, lisez aussi ceci),
   il existe quatre fils ddis sur le bus qui amnent ce type
   d'informations. Si un de ces quatre fils est  activ , cela indique que
   le CPU veut lire une adresse d'entres/sorties et la mmoire principale
   ignore l'adresse sur le bus. En tout, les fils de lecture et criture
   existent  la fois pour les adresses de mmoire principale et pour les
   adresses d'entres/sorties (quatre fils en tout).

   Pour le bus PCI, il s'agit de la mme ide de base (utilisant aussi quatre
   fils) mais ralise un peu diffremment. Au lieu d'avoir un seul des
   quatre fils activ, un nombre binaire est plac sur les fils (d'o 16
   possibilits diffrentes). Donc, il est possible de vhiculer plus
   d'informations sur ces quatres fils. Quatre de ces 16 nombres sont
   utiliss pour les espaces en mmoire principale et d'entres/sorties comme
   indiqu dans le paragraphe ci-dessus. En plus, il existe aussi un espace
   d'adressage de configuration qui utilise plus de deux chiffres
   supplmentaires. Cela laisse dix autres nombres disponibles pour d'autres
   utilisations.

    13.2.3. Espace d'adresses pour la configuration PCI

   Ceci est diffrent des espaces d'adresses mmoire et d'entres/sorties
   parce que l'espace d'adresses de configuration est  gographique .
   Chaque emplacement d'une carte a un numro d'emplacement faisant parti de
   l'adresse. De cette faon, Linux (ou le BIOS) peut adresser un certain
   emplacement et trouver le type de carte fich dans cet emplacement. Chaque
   priphrique a des registres standards de 64 bits et quelques uns d'entre
   eux contiennent des numros qui peuvent identifier de faon non ambigu le
   priphrique. Comme le nombre d'emplacements est limit comme le sont le
   nombre de priphriques PCI construit dans la carte mre, Linux (ou le
   BIOS) a besoin de vrifier un nombre limit d'adresses pour trouver tous
   les priphriques PCI. S'il ne lit que des uns (0xFF en hexadcimal) 
   partir du premier registre d'un priphrique, alors cela signifie qu'aucun
   priphrique n'est prsent. Comme il n'y a aucune carte ou priphrique
   fournissant tous les numros un (0xFF), le  host bridge  PCI sur la
   carte mre fournit ce numro pour tous les priphriques inexistants.

   Le numro d'emplacement PCI est appel (dans le jargon PCI le numro de
   priphrique et comme une carte peut avoir au plus huit priphriques sur
   elle, un numro de fonction (allant de 0  7) identifie le priphrique
   qui se trouve sur une carte PCI. Ces numros font partie de l'adresse
   gographique. Les dveloppeurs Linux l'appellent pci-slot-name. Du coup,
   ce que Linux appelle un priphrique est en fait une fonction dans le
   jargon PCI. Le numro du bus PCI (souvent 00) devient aussi une partie de
   l'adresse gographique. Par exemple, 0000:00:0d.2 correspond au bus PCI 0,
   emplacement 0, fonction 2. Pour l'adresse gographique complte, vous
   devez inclure le numro sur deux mots des registres de configuration du
   priphrique auquel on veut l'accs. Les 0000 en tte (en 1999) taient
   rservs pour une utilisation future.

   Comment le processeur dsigne-t-il qu'une lecture ou une criture doit se
   faire dans l'espace de configuration PCI ? Il ne le fait pas, en tout cas
   pas directement.  la place lorsque l'accs  l'espace de configuration
   est dsir, il fait une criture sur 32 bits (un mot double) pour crire
   0cf8-0cfb en espace d'entres/sorties et crit l'adresse gographique
   complte ici. Le host bridge PCI coute  cette adresse et nous assure que
   la prochaine criture de donnes sera 0cfc-0cff. C'est enregistr dans des
   registres de configuration du priphrique spcifi. Le pont fait les deux
   en envoyant un signal spcial  la carte PCI spcifie (ou ce qui y
   ressemble) sur un fil ddi qui va seulement  l'emplacement o la carte
   est connecte. Il place aussi des bits sur le bus de contrle indiquant
   que ce qui est sur le bus d'adresse maintenant est une adresse
   gographique de l'espace de configuration.

   Pourquoi ne pas faire simple et demander simplement au processeur de
   placer les bits sur le bus de contrle pour indiquer que l'adresse sur le
   bus principal est une adresse gographique pour la configuration du PCI ?
   Et bien, la plupart des processeurs ne sont pas capables de le faire donc
   le  host bridge  PCI le fait  la place.

    13.2.4. Vrification de la plage (test ISA pour les conflits d'adresses
    d'entres/sorties)

   Sur le bus ISA, il existe une mthode intgre dans chaque carte PnP pour
   vrifier qu'aucune autre carte n'utilise la mme adresse
   d'entres/sorties. Si deux cartes ou plus utilisent la mme adresse
   d'entres/sorties, les cartes ont peu de chance de fonctionner
   correctement (voire de fonctionner tout court). Un bon logiciel PnP
   devrait allouer les ressources bus de manire  viter ce conflit, mais
   mme dans ce cas, une carte non PnP pourrait avoir la mme adresse.

   Le test fonctionne par une carte plaant un nombre de test connu dans ses
   propres registres d'entres/sorties. Puis, le logiciel PnP le lit et
   vrifie que ce qu'il lit correspond bien au numro de test connu. Il
   rpte le mme test avec un autre numro. Comme il vrifie l'ensemble des
   adresses d'entres/sorties alloues  la carte, il est appel un
   vrificateur de plage. Il pourrait tre appel plus logiquement un testeur
   de conflit d'adresses. Si un conflit est dtect, vous obtenez un message
   d'erreur.

    13.2.5. Communiquer directement via la mmoire

   Traditionnellement, la plupart des priphriques d'entres/sorties
   utilisent seulement la mmoire d'entres/sorties pour communiquer avec le
   processeur (CPU). Le pilote de priphrique, excut sur le processeur
   lira et crira des donnes de/vers l'espace d'adressage des
   entres/sorties et la mmoire principale. Malheureusement, cela ncessite
   deux tapes. Par exemple, 1. lire les donnes  partir d'un priphrique
   (en espace d'adressage) et les stocker temporairement dans le CPU ; 2.
   crire ces donnes en mmoire principale. Une faon plus rapide serait que
   le priphrique place lui-mme les donnes directement en mmoire
   principale. Une faon de faire ceci est d'utiliser Section 2.7,  DMA
   (accs direct  la mmoire) ou matrise du bus  ISA ou la matrise du bus
   PCI. Le priphrique physique peut aussi dtenir un peu de mmoire
   principale (aux adresses suprieures pour viter les conflits avec les
   adresses des composants de la mmoire principale). De cette faon, le
   priphrique lit et crit directement dans son espace mmoire interne sans
   avoir  s'embter avec le DMA ou la matrise du bus. De tels priphriques
   pourraient aussi utiliser des adresses d'entres/sorties.

  13.3. Adresses de configuration du bus ISA (Port de lecture et ctera)

   Ces adresses sont aussi connues comme les  ports d'auto-configuration .
   Pour le bus ISA, il n'existe pas techniquement de plage d'adresses de
   configuration, mais le CPU utilise une faon spciale d'accder aux
   registres de configuration PnP sur les cartes PnP. Dans ce but, trois
   adresses d'entres/sorties sont alloues et chacune adresse un seul octet
   (il n'y a pas  proprement parler d'espace ou de plage). Il ne s'agit pas
   de trois adresses pour chaque carte mais de trois adresses partages par
   toutes les cartes ISA-PnP.

   Ces trois adresses sont nommes port de lecture (read-port), port
   d'criture (write-port) et port d'adresse (address-port). Chaque port a
   une taille d'un octet. Chaque carte PnP dispose d'un grand nombre de
   registres de configuration, donc mme les trois adresses ne sont pas
   suffisantes pour les registres de configuration d'une seule carte. Pour
   rsoudre ce problme, chaque carte se voit affecter un numro de carte en
   utilisant une technique appele  isolation . Voir Section 13.6,
    Isolation ISA  pour des dtails plus complexes.

   Ensuite, pour configurer une certaine carte, son numro de carte est
   envoy via l'adresse du port d'criture pour indiquer  cette carte
   qu'elle doit couter sur son port d'adresse. Toutes les autres cartes
   notent que ce n'est pas leur numro de carte et donc n'coutent pas.
   Ensuite, l'adresse d'un registre de configuration est envoy sur le port
   d'adresse ( toutes les cartes, mais une seule coute). Enfin, le
   transfert de donnes prend place avec ce registre de configuration sur
   cette carte soit en faisant une lecture sur le port de lecture soit en
   faisant une criture sur le port d'criture.

   Le port d'criture est toujours A79 et le port d'adresse est toujours 279
   (en hexadcimal). Le port de lecture n'est pas fixe mais dpend du
   logiciel de configuration (tout en restant dans la plage 203-3FF) qui avec
   un peu de chance n'entrera pas en conflit avec les autres cartes ISA. Si
   un conflit se dclare, il changera l'adresse. Toutes les cartes PnP sont
    programmes  avec cette adresse. Donc, si vous utilisez isapnp pour
   enregistrer ou connatre la configuration, celui-ci doit d'abord
   dterminer l'adresse du port de lecture.

  13.4. Dtails sur les interruptions

    13.4.1. Interruptions srialises

   Il a t dit prcdemment qu'il existe un fil pour chaque interruption.
   Mais l'interruption srialise (ou interruption srie) est une exception.
   Un seul fil est utilis pour toutes les interruptions qui sont
   multiplexes sur ce fil. Chaque interruption a un crneau horaire sur la
   ligne d'interruption. Il est utilis sur le bus LPC mais aussi sur le bus
   PCI bien que cela soit plus rare pour ce dernier ?

    13.4.2. DMA

   Avant de se plonger dans le dtail des interruptions, il existe une autre
   faon pour que les priphriques initient la communication en dehors de
   l'envoi d'une interruption. Cette mthode est une requte DMA (Direct
   Memory Access) pour prendre le contrle de l'ordinateur  partir du CPU
   pour un temps limit. Sur le bus PCI, il n'utilise aucune ressource. Tous
   les priphriques ne sont pas capables de faire du DMA. Voir Section 2.7,
    DMA (accs direct  la mmoire) ou matrise du bus .

    13.4.3. Interruptions logicielles

   Il existe aussi un autre type d'interruption nomme  interruption
   logicielle , non couverte par ce guide pratique et n'utilisant pas de
   ressources. Alors qu'une interruption matrielle est gnre par le
   matriel, une interruption logicielle est initie par le logiciel. Il
   existe plusieurs faons pour ce faire. Une faon est que le logiciel dise
   au processeur d'excuter une interruption (une instruction
   d'interruption). Une autre faon consiste, pour le logiciel,  envoyer des
   messages aux autres processus pour les interrompre mme s'il n'est pas
   clair qu'on puisse appeler a une interruption. Le processus ksoftirq
   process, que vous pouvez trouver dans la liste des processus sur un PC
   Linux, est un programme qui lance ce type d'interruption pour grer les
   pilotes de priphriques. Le pilote de priphrique commence  s'excuter
    cause d'une interruption matrielle mais, plus tard, des interruptions
   logicielles sont utilises pour la deuxime moiti de la routine
   d'interruption du pilote. Donc, le processus ksoftirq est aussi connu
   comme la  seconde moiti . Pour plus de dtails, voir la documentation
   du noyau.

    13.4.4. Interruptions matrielles

   Les interruptions amnent beaucoup d'informations mais seulement
   indirectement. Le signal de demande d'interruption (un voltage sur un fil)
   envoy par un matriel indique seulement au composant, appel le
   contrleur d'interruption, qu'un certain priphrique demande l'attention.
   Le contrleur d'interruption envoie le signal au CPU. Le CPU s'interrompt
   dans ce qu'il faisait, trouve le pilote de ce priphrique et excute une
   partie de celui-ci nomme  routine d'interruption  (ou  gestionnaire
   d'interruption ). Cette  routine  essaie de trouver ce qui est arriv
   et gre ensuite le problme. Par exemple, le priphrique peut avoir
   besoin d'envoyer/recevoir des octets. Ce programme (cette routine) peut
   facilement comprendre ce qui s'est pass car le priphrique dispose de
   registres disponibles sur des adresses connues par le pilote ( condition
   que le numro d'IRQ et que les adresses d'entres/sorties soient
   correctement configurs). Ces registres contiennent l'tat du
   priphrique. Le logiciel lit le contenu de ces registres et en inspectant
   le contenu, trouve ce qui est arriv et ralise l'action approprie.

   Donc, chaque pilote de priphrique a besoin de savoir le numro
   d'interruption (IRQ) o couter. Sur le bus PCI (et dans certains cas
   spciaux, sur le bus ISA), il est possible que deux (voire plus)
   priphriques partagent le mme numro d'IRQ. Notez que vous ne pouvez pas
   partager une interruption PCI avec une interruption ISA (y a-t'il des
   exceptions ?). Quand une interruption partage est lance, le processeur
   excute toutes les routines du service d'interruption squentiellement
   pour tous les priphriques utilisant cette interruption. La premire
   action qu'entreprend la premire routine lance est de vrifier les
   registres du priphrique pour voir si une interruption a t gnre par
   son priphrique. S'il se trouve que ce n'est pas le cas (fausse alarme),
   il s'arrtera immdiatement et la prochaine routine commence pour le
   deuxime priphrique qui utilise cette mme interruption, et ctera. Il
   vrifie le priphrique comme dcrit ci-dessus. Cette squence est rpte
   jusqu' la dcouverte du priphrique qui a lanc cette interruption.
   Toutes les routines d'interruption pour une interruption constituent une
   chane. Donc, la chane est traverse jusqu' ce qu'une routine de la
   chane rclame l'interruption en disant : cette interruption est pour moi.
   Aprs avoir gr l'interruption, les routines suivantes du service
   d'interruption ne sont pas excutes.

   Mettre un certain voltage sur une ligne IRQ revient seulement  demander
   que le CPU s'interrompe de faon  excuter la routine du pilote du
   priphrique. Dans pratiquement tous les cas, le CPU est interrompu par la
   requte. Mais les interruptions du CPU peuvent tre temporairement
   dsactives ou  faire la queue , et donc, dans de rares cas, une
   interruption peut ne pas tre gre (ou peut subir un certain dlai).
   Donc, ce qui a t auparavant appel une interruption est plus prcisment
   une  demande d'interruption , ce qui explique l'acronyme d'IRQ
   ( Interrupt ReQuest , c'est--dire ReQute d'Interruption).

  13.5. Comment le pilote de priphrique rcupre son interruption

   L'indication prcdente,  savoir que les pilotes de priphrique coutent
   leur interruption, tait une explication trs simplifie. En fait, il
   s'agit d'un composant (ou d'une partie d'un composant) embarqu sur la
   carte-mre, appel le contrleur d'interruptions. Il va couter toutes les
   interruptions. Quand le contrleur rcupre une interruption, il envoie un
   signal au CPU pour lancer la routine du service d'interruption du pilote
   de priphrique appropri pour grer cette interruption.

   Il existe diffrents types de contrleurs d'interruptions. L'un d'entre
   eux est l'APIC (acronyme de Advanced Programmable Interrupt Controller)
   qui a habituellement des broches en entre pour un grand nombre
   d'interruptions, y compris les interruptions PCI. Les anciens contrleurs
   ont seulement des broches pour les interruptions ISA mais ils peuvent
   toujours grer les interruptions PCI car il s'agit d'un routeur
   programmable d'interruptions qui convertit les interruptions PCI en
   interruptions ISA et les envoie vers certaines broches (c'est--dire vers
   certaines IRQ).

  13.6. Isolation ISA

   C'est uniquement pour l'ancien bus ISA. L'isolation est une mthode
   complexe d'affectation d'un point temporaire (numro d'identifiant ou CSN,
   Card Select Number)  chaque priphrique PnP du bus ISA. Comme il existe
   des moyens plus efficaces (mais plus complexes) de le faire, certains
   pourraient dire qu'il s'agit d'une mthode simple. Seule une adresse
   d'criture est utilise pour les critures PnP vers tous les priphriques
   pour que toutes les critures vers cette adresse aillent sur tous les
   priphriques PnP. Cette adresse d'criture est utilis pour envoyer
   (affecter) un numro de carte unique  chaque priphrique PnP. Pour tre
   assign, ce numro de carte ncessite qu'un seul priphrique soit en
   coute lorsque le numro de carte est envoy (crit)  cette adresse
   commune. Tous les priphriques PnP ont un numro de srie unique qu'ils
   utilisent lors du processus d'isolation. Faire l'isolation est comme un
   jeu. Cela se fait en utilisant l'quivalent d'un bus commun de fils
   connectant tous les priphriques PnP au programme d'isolation.

   Pour le premier tour du  jeu , tous les priphriques PnP coutent sur
   ce fil et envoient simultanment une squence de bits sur le fil. Les bits
   autoriss sont soit un 1 (voltage positif) soit un  0 ouvert  sans
   voltage (circuit ouvert ou trois-tats). Pour cela, chaque priphrique
   PnP commence  envoyer squentiellement son numro de srie sur ce fil,
   voltage (circuit ouvert ou trois-tats). Pour faire cela, chaque
   priphrique PnP lance simplement son numro de srie sur les fils, bit 
   bit, en commenant par le plus haut. Si un priphrique envoie un 1, un 1
   sera entendu par tous les autres priphriques. Si tous les priphriques
   envoient un  0 ouvert , rien ne sera entendu sur le fil. Le but est
   d'liminer ( la fin du premier tour) tous les priphriques sauf celui
   possdant le numro de srie le plus important.  liminer  signifie
   enlever de ce tour du jeu et donc cesser temporairement d'couter tout ce
   qui passe sur le fil. (Notez que tous les numros de srie ont la mme
   taille.) Quand il ne reste qu'un seul priphrique en coute, un numro de
   carte lui est donn.

   Tout d'abord, considrez seulement le bit le plus haut du numro de srie
   qui est plac sur le fil par tous les priphriques qui n'ont pas encore
   de numro de carte. Si un priphrique PnP envoie un 0 (0 ouvert) mais
   entend un 1, cela signifie qu'un ou plusieurs autres priphriques PnP a
   un numro de srie plus important, donc il se supprime temporairement pour
   ce tour. Maintenant, les priphriques restant en jeu (pour ce tour) ont
   tous le mme bit de haut niveau (un 1), donc nous pouvons supprimer ce bit
   et continuer avec le  reste du numro de srie  pour la suite du tour.
   Ensuite, recommencez depuis le dbut de ce paragraphe et rptez jusqu'
   ce que le numro de srie soit examin en entier pour chaque priphrique
   (voir plus bas pour les cas  tous  0 ).

   Donc, il est clair que seules les cartes avec un petit numro de srie
   sont limines lors d'un tour. Mais qu'arrive-t-il si tous les
   priphriques du jeu envoient un 0 comme leur bit de haut niveau ? Dans ce
   cas, un  0 ouvert  est envoy sur la ligne et tous les participants
   restent en lice. S'ils ont tous un 0 au dbut, alors les 0 sont supprims
   comme les 1 du paragraphe ci-dessus. Le jeu continue alors avec le bit
   suivant du numro de srie).

   A la fin du tour (aprs que le dernier bit ait t envoy), seul un
   priphrique PnP, celui possdant le plus haut numro de srie, reste en
   jeu. Il se voit attribuer un numro de carte et quitte le jeu
   dfinitivement. Ensuite, tous les autres priphriques du tour prcdent
   (qui n'ont donc pas de numro de carte) reviennent dans le jeu et un
   nouveau tour commence, avec un participant en moins. ventuellement, tous
   les priphriques PnP se voient assigner un numro de carte. Il est facile
   de prouver que cet algorithme fonctionne. L'algorithme actuel est un peu
   plus complexe que celui prsent ci-dessus car chaque tape est rpte
   deux fois pour s'assurer, et ces rptitions sont faites d'une faon un
   peu diffrente (mais en utilisant la mme ide de base).

   Une fois tous les numros de carte assigns, ils sont utiliss pour
   s'adresser  chaque priphrique PnP pour envoyer/lire des donnes de
   configuration. Notez que ces numros de carte sont seulement utiliss pour
   la configuration PnP et ne sont pas utiliss pour les communications
   normales avec le priphrique PnP. Lorsque l'ordinateur dmarre, un BIOS
   PnP fera l'isolation puis s'occupera de la configuration PnP. Aprs a,
   tous les numros de carte sont  perdus  d'une telle faon que si
   quelqu'un veut changer (ou inspecter) la configuration une nouvelle fois,
   l'isolation devra tre refaite intgralement.

  13.7. Matrise du bus et ressources DMA

   Si un bus dispose d'une fonctionnalit de matrise du bus, il est peu
   probable que des ressources seront ncessaires pour le DMA sur ce bus. Par
   exemple, le bus PCI n'a pas besoin des ressources DMA car il dispose de
   cette fonctionnalit. Nanmoins, la  matrise du bus  est souvent
   appele DMA. Mais, comme il ne s'agit pas strictement de DMA, il ne
   ncessite aucune ressource DMA. Les bus locaux ISA et VESA n'ont pas de
   matrise du bus. Les anciens bus MCU et EISA l'avaient.

  13.8. Historique et obsolescence

    13.8.1. Pilote son OSS-Lite

   Vous devez donner l'adresse d'entre/sortie, l'IRQ et le canal DMA comme
   paramtres au module ou les compiler dans le noyau. Mais certaines cartes
   PCI seront automatiquement dtectes. RedHat fournit un programme
   sndconfig qui dtecte les cartes ISA PnP et configure automatiquement les
   modules en chargeant les ressources bus dtectes.

    13.8.2. ALSA (Architecture son avance pour Linux) en l'an 2000

   Ceci dtectera la carte par des mthodes PnP, puis slectionnera le pilote
   et le chargera. Il configurera aussi les ressources bus sur les cartes
   ISA-PnP et sur les cartes PCI. Il remplace OSS (Open Sound System),
   auparavant populaire.

    13.8.3. Notes sur MS Windows Notes

   Windows NT4 ne supportait pas ISAPNP mais dispose d' un programme PNPISA
   que vous pouvez utiliser   vos risques et prils . Pour NT4, les
   utilisateurs se sont vus conseiller de ne pas configurer le BIOS avec
   l'indication que le systme d'exploitation est PnP de faon  ce que le
   BIOS s'occupe de la configuration des ressources. Du coup, MS Windows et
   Linux taient auparavant dpendants de la configuration du BIOS (et le
   sont toujours).

A. Adaptation franaise

1. Traduction

   La traduction franaise de ce document a t ralise par Guillaume
   Lelarge <gleu CHEZ wanadoo POINT fr>.

2. Prparation de la publication

   La publication de ce document a t prpare par Jean-Philippe Gurard
   <fevrier CHEZ tigreraye POINT org>.

