<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lier les interruptions PCI</title><link href="style.css" rel="stylesheet" type="text/css" /><meta content="DocBook XSL Stylesheets V1.73.2" name="generator" /><link rel="start" href="index.html" title="Guide pratique du Plug-and-Play" /><link rel="up" href="index.html" title="Guide pratique du Plug-and-Play" /><link rel="prev" href="ar01s08.html" title="Interruptions PCI" /><link rel="next" href="ar01s10.html" title="PnP pour les périphériques externes et ajoutés" /></head><body><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Lier les interruptions PCI</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s08.html">Précédent</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ar01s10.html">Suivant</a></td></tr></table><hr /></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title"><a id="N111AD" />Lier les interruptions PCI</h2></div></div></div><p>Voici quelques détails sur le système d'interruptions PCI. Chaque carte PCI (et les périphériques montés sur la carte-mère) 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 système comprenant sept emplacements (pour sept cartes), il pourrait y avoir 28 (7 x 4) différentes lignes d'interruption pour ces cartes. Les périphériques intégrés à la carte-mère ont aussi des interruptions supplémentaires. Mais les spécifications permettent un nombre plus réduit 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 partagées. Pour une ligne à quatre interruptions (LNKA, LNKB, LNKC, LNKD), il y a un composant appelé « <span class="quote">routeur programmable d'interruptions</span> » qui redirige LNKA, LNKB, LNKC, LNKD vers les IRQ sélectionnées. Ce routage peut être modifié par le BIOS ou par Linux. Par exemple, LNKA peut être routé vers l'IRQ 5. Supposons que nous désignons l'interruption B de l'emplacement 3 comme l'interruption 3B. Les interruptions 3B et 2A pourraient être connectées de façon permanente à LNKA qui est routé vers l'IRQ 5. Ces deux interruptions, 3B et 2A, sont partagées en permanence par le cablage sur la carte-mère.</p><p>Saisir <span class="command"><strong>dmesg</strong></span> sur la ligne de commande permet de voir comment les lignes d'interruption style LNKA sont redirigées (ou routées) vers les IRQ (*5 signifie que c'est lié à l'IRQ 5). Recherchez <span class="foreignphrase"><em class="foreignphrase">PCI Interrupt Link</em></span>. Notez que « <span class="quote">link</span> » 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 différents comme : LNKC, LNK2, APCF, LUBA, LIDE, et cætera. Question : quand un grand nombre de lignes d'interruption sont affichées comme étant désactivées, existent-elles toutes physiquement sur la carte-mère ? ou existent-elles seulement dans la partie ACPI du BIOS pour que ce dernier puisse fonctionner avec les cartes-mères qui ont un grand nombre de lignes d'interruption ?</p><p>Connecter toutes les interruptions A (INTA#) à la ligne LNKA, toutes les B à la ligne LNKB, et cætera. est une méthode simple pour connecter en dur ces lignes des périphériques PCI (comme le 3B) aux interruptions LNKA, et cætera. Cette méthode a été utilisée une fois plusieurs années 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 fréquemment que INTD#. Donc, on va se trouver avec un nombre excessif d'interruptions partageant la première ligne (LNKA connecté à toutes les INTA#). Pour dépasser ce problème, il vaut mieux les connecter de façon aléatoire pour que chacune des quatre lignes d'interruptions (LNKA, LNKB, LNKC, LNKD) partagent à peu près le même nombre d'interruptions PCI.</p><p>Une façon 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 cætera. De la même façon, le fil LNKB pourrait être connecté aux fils 1B, 2C, 3D, 4A, 5B, 6C, 7D, et cætera. Puis, au démarrage, le BIOS dirige les LNKB, LNKA, LNKC, LNKD aux IRQ. Après cela, il écrit l'IRQ que chaque périphérique utilise dans un registre de configuration du matériel dans chaque périphérique. À partir de maintenant, tout programme interrogeant ce registre peut savoir l'IRQ utilisée par le périphérique. Notez qu'écrire simplement l'IRQ dans un registre sur une carte PCI ne configure en aucun cas l'IRQ pour ce périphérique.</p><p>Une utilisation pratique de cette information est qu'en dernier ressort, une personne pourrait modifier les IRQ d'une carte PCI en l'insérant dans un emplacement différent. Dans l'exemple ci-dessus, INTA# d'une carte PCI sera connecté au fil LNKA si la carte est insérée dans l'emplacement 1 (1A correspond à LNKA) mais INTA# sera connecté au fil LNKB si elle est insérée dans l'emplacement 4 (4A correspond à LNKB).</p><p>Une carte dans un emplacement pourrait avoir jusqu'à huit périphériques mais il n'y a que quatre interruptions PCI pour elle (A, B, C, D). Cela suffit car les interruptions pourraient être partagées pour que chacun des huit périphériques (s'ils existent) puisse avoir une interruption partagée. La lettre de l'interruption PCI d'un périphérique est souvent fixée et codée en dur dans le périphérique. L'affectation des interruptions est réalisée par soit le BIOS ou par Linux, établissant une correspondance entre les interruptions PCI et les interruptions ISA comme mentionné ci-dessus.</p><p>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 limités. Certaines cartes-mère peuvent utiliser plus de lignes et ont donc plus de choix. Par exemple, de LNKA à LNKH (8 lignes). Les messages au démarrage (<span class="command"><strong>dmesg</strong></span>) peuvent les afficher et indiquer leur correspondance. Le BIOS sait comment elles sont câblées.</p><p>Sur le bus PCI, le BIOS (ou Linux) affecte des IRQ (interruptions) de façon à éviter les conflits avec les IRQ qu'il sait affectés 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 réservées aux périphériques ISA. Les affectations sont connues sous le nom d'une table de routage. Sous MS WIndows, c'est appelé <span class="foreignphrase"><em class="foreignphrase">IRQ steering</em></span> mais cela couvre aussi le cas d'un routage dynamique des IRQ après le démarrage. Le BIOS peut supporter son propre <span class="foreignphrase"><em class="foreignphrase">IRQ steering</em></span>. </p><p>Si votre PC utilise les interruptions PCI qui sont renvoyées 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 contrôle des interruptions ISA a un fil d'interruption direct le reliant au CPU pour qu'il obtienne une attention immédiate. Bien que les signaux sur les bus d'adresses et de données de l'ancien ISA sont lents pour arriver au CPU, les signaux d'interruptions y arrivent rapidement.</p></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s08.html">Précédent</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ar01s10.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">Interruptions PCI </td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%"> <acronym class="acronym">PnP</acronym> pour les périphériques externes et ajoutés</td></tr></table></div></body></html>