Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1181

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>Cartes d'interface</TITLE>
</HEAD>
<BODY>
<H1>5. <A NAME="s5"></A>Cartes d'interface</H1>
<P>
<A HREF="SCSI-HOWTO.html#toc5">Contenu de cette section</A></P>

<P>Ce chapitre donne des informations sp&eacute;cifiques sur les diverses cartes d'interface SCSI qui sont support&eacute;es d'une mani&egrave;re ou d'une autre par Linux.</P>
<P></P>
<H2>5.1 <A NAME="ss5.1"></A> Mat&eacute;riel support&eacute; et non support&eacute;</H2>

<P>Les pilotes de la distribution du noyau :</P>
<P>Adaptec 152x, Adaptec 154x (les cartes DTC 329x fonctionnent th&eacute;oriquement, mais ne sont pas explicitement g&eacute;r&eacute;es),
Adaptec 174x, Adaptec 274x/284x (le support pour la 294x n&eacute;cessite une version plus r&eacute;cente du pilote),
BusLogic MultiMaster Host Adapters, les cartes compatibles avec les protocoles EATA-DMA et EATA-PIO (DPT PM2001, PM2011, PM2012A, PM2012B, PM2021, PM2022, PM2024, PM2122, PM2124, PM2322, PM2041, PM2042, PM2044, PM2142, PM2144, PM2322, PM3021, PM3122, PM3222, PM3224, PM3334, quelques cartes de NEC, AT&amp;T, SNI, AST, Olivetti et Alphatronix), Future Domain 850, 885, 950 et d'autres cartes de cette s&eacute;rie (sauf les cartes 840, 841, 880 et 881 &agrave; moins que vous n'appliquiez le patch ad&eacute;quat), Future Domain 16x0 avec les composants TMC-1800, TMC-18C30 ou TMC-18C50, NCR53c8xx, PAS16, les ports SCSI, Seagate ST0x, les cartes Trantor T128/T130/T228, Ultrastor 14F, 24F et 34F et les Western Digital 7000.</P>
<P>MCA :</P>
<P>Les cartes MCA compatibles avec une des cartes pr&eacute;c&eacute;demment cit&eacute;es fonctionnent.</P>
<P>Les pilotes alpha :</P>
<P>Plusieurs pilotes ALPHA sont disponibles &agrave;
<BLOCKQUOTE><CODE>
<PRE>
ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Certains pilotes fonctionnent apr&egrave;s quelques modifications :</P>
<P>NCR53c8x0/7x0:</P>
<P>
<BLOCKQUOTE>
<PRE>
Un pilote NCR53c8xx a ete developpe mais il ne marche toujours pas avec les
composants NCR53c700, NCR53c700-66, NCR53c710 et NCR53c720. Une liste des
modifications necessaires pour le faire marcher sur chacun de ces composants
est fournie ci-apres, accompagnee d'un resume de la difficulte de chaque patch.

NCR53c720 (facile) - modifications dans la detection du composant, dans la
phase d'initialisation, dans la traduction des adresses des registres '810
vers l'organisation (mapping) des registres '7xx.

NCR53c710 (facile) - modifications dans la detection du composant, dans la
phase d'initialisation, dans la traduction des adresses des registres '810 
vers l'organisation (mapping) des registres '7xx, modification des
gestionnaires d'interruption pour traiter l'interruption IID de l'instruction
INTFLY pour l'emuler (Note aux relecteurs (a supprimer dans la version
definitive) je ne suis pas sur d'avoir bien compris ce que voulait dire
l'auteur : change interrupt handlers to treat IID interrupt from INTFLY
instruction to emulate it),

NCR53c700, NCR53c700-66 (tres complique) - modifications dans la detection
des composants, dans la phase d'initialisation. Modification du code du NCR
pour ne pas utiliser DSA, modification du code de la gestion des commutations
de contextes.
</PRE>
</BLOCKQUOTE>
</P>
<P>Les cartes SCSI qui ne marcheront pas :</P>
<P>Tous les adapteurs parall&egrave;le-&gt;SCSI, les cartes Rancho SCSI et les cartes Grass Roots SCSI. Les cartes BusLogic FlashPoint, telles que les BT-930/932/950, ne sont actuellement pas support&eacute;es.</P>
<P>Les cartes SCSI qui ne marcheront JAMAIS :</P>
<P>Les cartes non compatibles Adaptec, les cartes non NCR53c8xx DTC (y compris les 3270 et les 3280).</P>
<P>Les cartes CMD SCSI.</P>
<P>L'obtention d'informations techniques sur ces cartes n&eacute;cessite la signature d'un accord de confidentialit&eacute; (NDA : non-disclosure agreement) avec DTC/CMD.  En cons&eacute;quence, distribuer un pilote pour Linux est impossible car se conformer &agrave; cet accord signifie qu'il n'est pas possible de fournir les sources, ce qui est en violation de la GPL. Inversement, se conformer &agrave; la GPL signifie que les sources doivent &ecirc;tre rendus publics, ce qui est en conflit avec la NDA.</P>
<P>Si vous voulez utiliser Linux sur du mat&eacute;riel non support&eacute;, deux options s'offrent &agrave; vous :
<OL>
<LI> &eacute;crire vous-m&ecirc;me le pilote (Eric Youngdale et moi-m&ecirc;me r&eacute;pondons volontiers aux questions techniques sur les pilotes SCSI pour Linux),</LI>
<LI> faire d&eacute;velopper le pilote (les tarifs habituels des sous-traitants rendent cette solution non viable pour une utilisation personnelle),</LI>
</OL>
</P>
<P></P>
<H3>Cartes contr&ocirc;leur multiples</H3>

<P></P>
<P>Avec certaines cartes (voir
<A HREF="SCSI-HOWTO-10.html#BuyerGuideFeatures">Guide de l'acheteur : comparaison des fonctionnalit&eacute;s</A>
), vous pouvez utiliser plusieurs contr&ocirc;leurs du m&ecirc;me type sur la m&ecirc;me machine. Dans ce cas, la plus petite adresse SCSI va &ecirc;tre r&eacute;f&eacute;renc&eacute;e par le noyau comme scsi0, la suivante comme scsi1, etc.</P>
<P>Dans tous les cas, il est possible d'utiliser des contr&ocirc;leurs de types diff&eacute;rents, sous r&eacute;serve que leurs adresses n'entrent pas en conflit. Les cartes contr&ocirc;leur sont scrut&eacute;es dans l'ordre suivant (d&eacute;fini dans le tableau <CODE>builtin_scsi_hosts[]</CODE> du fichier <CODE>drivers/scsi/hosts.c</CODE>) :</P>
<P>
<BLOCKQUOTE>
BusLogic, Ultrastor 14/34F, Ultrastor 14F, Adaptec 151x/152x,
Adaptec 154x, Adaptec 174x, AIC7XXX, AM53C974, Future Domain 16x0,
Always IN2000, Generic NCR5380, QLOGIC, PAS16, Seagate,
Trantor T128/T130, NCR53c8xx, EATA-DMA, WD7000 et le pilote de mise au point.
</BLOCKQUOTE>
</P>
<P>Dans la plupart des cas (c'est-&agrave;-dire si vous n'utilisez pas en m&ecirc;me temps une BusLogic et une Adaptec), le tableau pr&eacute;c&eacute;dent peut &ecirc;tre chang&eacute; pour d&eacute;finir un ordre qui vous convient mieux (de mani&egrave;re &agrave; garder le m&ecirc;me ordre pour les p&eacute;riph&eacute;riques de votre ancienne carte lorsque vous ajoutez une nouvelle carte dans votre syst&egrave;me); il vous suffit de d&eacute;placer les entr&eacute;es du tableau.</P>
<P></P>

<A NAME="CommonProblems"></A> <H2>5.2 <A NAME="ss5.2"></A> Probl&egrave;mes habituels </H2>

<P></P>
<P></P>
<H3>Timeouts SCSI</H3>

<P>V&eacute;rifiez que les interruptions sont bien autoris&eacute;es et qu'il n'y a pas de conflits d'IRQ, de DMA ou d'adresses avec d'autres cartes.</P>
<P></P>
<H3>Echec de l'auto-d&eacute;tection des cartes qui s'appuient sur le BIOS</H3>

<P>Si votre contr&ocirc;leur SCSI est un des suivants :</P>
<P>
<BLOCKQUOTE>
Adaptec 152x, Adaptec 151x, Adaptec AIC-6260,
Adaptec AIC-6360, Future Domain 1680, Future Domain TMC-950,
Future Domain TMC-8xx, Trantor T128, Trantor T128F,
Trantor T228F, Seagate ST01, Seagate ST02 ou un Western Digital 7000
</BLOCKQUOTE>
</P>
<P>et qu'il n'est pas d&eacute;tect&eacute; au d&eacute;marrage (vous avez eu par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
scsi : 0 hosts
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>ou encore   </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
scsi%d : type
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>au d&eacute;marrage),
vous avez certainement un probl&egrave;me avec la routine d'auto-d&eacute;tection qui ne reconna&icirc;t pas votre carte contr&ocirc;leur.</P>
<P>L'auto-d&eacute;tection &eacute;choue pour les pilotes qui s'appuient sur le BIOS si celui-ci est d&eacute;sactiv&eacute;. V&eacute;rifiez plut&ocirc;t deux fois qu'une que votre BIOS est activ&eacute; et qu'il n'entre pas en conflit avec celui d'un autre p&eacute;riph&eacute;rique.</P>
<P>L'auto-d&eacute;tection peut &eacute;galement &eacute;chouer si la "signature" de la carte et son adresse de BIOS ne font pas partie de la liste des cartes connues.</P>
<P>Si le BIOS est install&eacute;, red&eacute;marrez sous DOS et utilisez DEBUG pour trouver la signature de votre carte.</P>
<P>Par exemple, si votre carte se trouve &agrave; l'adresse 0xc8000, red&eacute;marrez sous DOS puis tapez :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
debug
d c800:0
q
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Envoyez ensuite un message &agrave; la liste de diffusion SCSI avec le message ASCII obtenu, sa longueur et son d&eacute;placement par rapport &agrave; l'adresse de base (par exemple 0xc8000). Attention : le texte exact est n&eacute;cessaire et vous aurez certainement &agrave; fournir une version ASCII et une autre binaire du message.</P>
<P>Si aucun BIOS n'est install&eacute; et si vous utilisez une Adaptec 152x, une Trantor T128 ou un contr&ocirc;leur Seagate, vous pouvez utiliser la ligne de commande (LILO) ou bien surcharger des variables au moment de la compilation de mani&egrave;re &agrave; ce que l'auto-d&eacute;tection fonctionne malgr&eacute; tout.</P>
<P>Reportez-vous &agrave; la section appropri&eacute;e de votre carte SCSI, ainsi qu'au chapitre 
<A HREF="SCSI-HOWTO-2.html#Flakiness">Dysfonctionnement g&eacute;n&eacute;ralis&eacute;</A>
.</P>
<P></P>
<H3>Pannes de contr&ocirc;leurs utilisant des E/S mapp&eacute;es en m&eacute;moire</H3>

<P>(Les cartes Trantor T128 et Seagate sont de telles cartes. Les cartes Adaptec, Generic NCR5380, PAS16 et Ultrastor n'en sont pas)</P>
<P>Les pannes sont souvent dues &agrave; un 'cache' des ports d'entr&eacute;es/sorties incorrect. L'espace d'adressage de la carte doit &ecirc;tre indiqu&eacute; comme 'non cachable' dans les param&egrave;tres de la XCMOS. Si ce n'est pas possible, il vous faudra compl&egrave;tement interdire le 'cache'.</P>
<P>Si vous avez manuellement sp&eacute;cifi&eacute; l'adresse de la carte, souvenez-vous que Linux a besoin de la v&eacute;ritable adresse de la carte et non pas de l'adresse segment&eacute;e (par segments de 16 octets) &agrave; laquelle la documentation pourrait faire r&eacute;f&eacute;rence.</P>
<P>Ainsi, 0xc8000 est une adresse valide, tandis que 0xc800 ne marche pas et risque de causer des probl&egrave;mes d'int&eacute;grit&eacute; de la m&eacute;moire du noyau.</P>
<P></P>
<H3>"kernel panic : cannot mount root device" au d&eacute;marrage avec une disquette de d&eacute;marrage comportant un pilote ALPHA</H3>

<P>Vous allez devoir &eacute;diter l'image binaire du noyau (avant ou apr&egrave;s l'avoir &eacute;crite sur la disquette) pour modifier quelques champs de deux octets (en petit indien -- little endian), afin de garantir qu'il fonctionnera sur votre syst&egrave;me.</P>
<P>
<OL>
<LI> le p&eacute;riph&eacute;rique de pagination (swap) par d&eacute;faut. Il se trouve &agrave; l'offset 502 et doit valoir 0x00 0x00
</LI>
<LI> la taille du disque m&eacute;moire (RAM disk) se trouve &agrave; l'offset 504. Elle doit valoir la taille de la disquette de d&eacute;marrage, en Ko. Par exemple, pour une disquette 5,25", on trouvera 1200. Pour une disquette 3,5", on aura 1440.

<BLOCKQUOTE>
<PRE>
C'est a dire que les octets doivent etre 

3,5&quot; : 0xA0 0x05
5,25&quot; : 0xB0 0x04
</PRE>
</BLOCKQUOTE>

</LI>
<LI> l'identificateur du p&eacute;riph&eacute;rique de la racine (root device) se trouve &agrave; la position 508 et doit valoir 0x00 0x00 (qui repr&eacute;sente le p&eacute;riph&eacute;rique de d&eacute;marrage).
</LI>
</OL>
</P>
<P>Recopiez le fichier sur la disquette par <CODE><B>dd</B></CODE> ou <CODE><B>rawrite</B></CODE>. Ins&eacute;rez ensuite la disquette dans un lecteur puis relancez. Attendez qu'il vous soit demand&eacute; d'ins&eacute;rer la disquette racine (root disk) puis mettez celle fournie avec votre distribution.</P>
<P></P>
<H3>Installation d'un pilote non inclus dans le noyau de la distribution</H3>

<P>Vous devez commencer avec la version du noyau utilis&eacute;e par le d&eacute;veloppeur du pilote. Il arrive qu'on trouve la version en question dans la documentation incluse avec le pilote.</P>
<P>Des versions r&eacute;centes du noyau sont pr&eacute;sentes &agrave; l'adresse
<BLOCKQUOTE><CODE>
<PRE>
nic.funet.fi:/pub/OS/Linux/PEOPLE/Linus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>dans les fichiers <CODE>linux-version.tar.gz</CODE></P>
<P>On peut &eacute;galement les trouver sur divers sites et autres miroirs (dont tsx-11.mit.edu).</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Supprimez l'ancienne arborescence des sources de Linux ou faites-en une copie :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
mv linux linux-old
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>D&eacute;sarchivez le fichier</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
gunzip &lt; linux-0.99.12.tar.gz | tar xvfp -
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>(pour la version 0.99.12 ici). Appliquez les patches. Habituellement, les patches sont relatifs &agrave; un des r&eacute;pertoires de l'arborescence. En recherchant la cha&icirc;ne '---' dans le fichier de patch, vous pouvez savoir &agrave; partir d'o&ugrave; l'appliquer. Ainsi, des lignes</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
--- ./kernel/blk_drv/scsi/Makefile

--- ./config.in Wed Sep  1 16:19:33 1993
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>vous pouvez d&eacute;duire que les fichiers &agrave; modifier sont relatifs &agrave; <CODE>/usr/src/linux</CODE>.</P>
<P>D&eacute;sarchivez les sources du pilote &agrave; l'endroit appropri&eacute; :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
tar tfv patches.tar
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>vous fournira d'abord une liste des fichiers. D&eacute;placez quelques fichiers si n&eacute;cessaire (les sources des pilotes SCSI doivent se trouver dans le r&eacute;pertoire <CODE>/usr/src/linux/kernel/drivers/scsi</CODE>).</P>
<P>Vous pouvez ensuite aller dans le r&eacute;pertoire racine du patch et taper :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
patch -p0 &lt; patch_file
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Vous pouvez &eacute;galement demander &agrave; 'patch' d'&eacute;liminer les chemins initiaux des noms des fichiers &agrave; modifier. Ainsi, si les fichiers commencent par</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
--- linux-new/kernel/blk_drv/scsi/Makefile
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>et que vous voulez appliquer le patch directement depuis <CODE>/usr/src/linux</CODE>, vous pouvez faire les op&eacute;rations suivantes :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src/linux
patch -p1 &lt; patches
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>pour supprimer le "linux-new" des noms des fichiers.</P>
<P>Une fois les patches appliqu&eacute;s, v&eacute;rifiez qu'il n'y a pas eu de rejets (un fichier de rejet a la m&ecirc;me nom que le fichier &agrave; modifier, un suffixe # y &eacute;tant ajout&eacute;).</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
find /usr/src/linux/ -name &quot;*#&quot; -print
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Si vous trouvez des fichiers de rejet, &eacute;ditez-les. Parfois, seules les cha&icirc;nes d'identification RCS seront diff&eacute;rentes. Cela ne posera alors pas de probl&egrave;me. Dans d'autres cas, il vous faudra appliquer d'importantes parties du patch &agrave; la main. Il n'est pas dans l'optique de ce document de d&eacute;crire les fichiers de diff&eacute;rences ou l'utilisation de patch.</P>
<P>R&eacute;f&eacute;rez-vous &eacute;galement &agrave; la section
<A HREF="SCSI-HOWTO-2.html#KernelConfig">Configurer et reg&eacute;n&eacute;rer le noyau</A>
.</P>
<P></P>
<H3>Installation d'un pilote qui n'a pas de patches</H3>

<P>L'auteur d'un pilote ne fournit parfois pas de patches avec les .c et .h qui forment le pilote. Il se peut aussi que les patches soient faits pour une vieille version du noyau et qu'ils risquent de ne pas passer avec le noyau courant.</P>
<P>
<OL>
<LI> copiez les .c et les .h dans <CODE>/usr/src/linux/drivers/scsi</CODE>
</LI>
<LI> ajoutez l'option de configuration

Editez <CODE>/usr/src/linux/config.in</CODE> puis ajoutez une ligne (une variable de configuration bool&eacute;enne pour votre pilote) dans le chapitre

<BLOCKQUOTE><CODE>
<PRE>
*
* SCSI low-level drivers
*
</PRE>
</CODE></BLOCKQUOTE>


Par exemple

<BLOCKQUOTE><CODE>
<PRE>
bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI> ajoutez les entr&eacute;es dans le Makefile

Editez <CODE>/usr/src/linux/drivers/scsi/Makefile</CODE> et ajoutez une entr&eacute;e similaire &agrave;

<BLOCKQUOTE><CODE>
<PRE>
ifdef CONFIG_SCSI_IN2000
SCSI_OBS := $(SCSI_OBJS) in2000.o
SCSI_SRCS := $(SCSI_SRCS) in2000.c
endif
</PRE>
</CODE></BLOCKQUOTE>


juste avant la ligne

<BLOCKQUOTE><CODE>
<PRE>
scsi.a: $(SCSI_OBJS)
</PRE>
</CODE></BLOCKQUOTE>


du makefile. Ici, le fichier .c est votre fichier source et le .o est le fichier objet g&eacute;n&eacute;r&eacute; &agrave; partir de votre fichier source (le .c est remplac&eacute; par le .o).
</LI>
<LI> ajoutez les points d'entr&eacute;e

Editez <CODE>/usr/src/linux/drivers/scsi/hosts.c</CODE> puis ajoutez un #include pour le fichier d'ent&ecirc;te, mis en conditionnel par la constante que vous venez de d&eacute;finir dans le fichier de configuration. Par exemple, apr&egrave;s

<BLOCKQUOTE><CODE>
<PRE>
#ifdef CONFIG_SCSI_GENERIC_NCR5380
#include &quot;g_NCR5380.h&quot;
#endif
</PRE>
</CODE></BLOCKQUOTE>


vous pouvez ajouter

<BLOCKQUOTE><CODE>
<PRE>
#ifdef CONFIG_SCSI_IN2000
#include &quot;in2000.h&quot;
#endif
</PRE>
</CODE></BLOCKQUOTE>


Vous devez &eacute;galement ajouter l'entr&eacute;e pour le Scsi_Host_Template dans le tableau <CODE>scsi_hosts[]</CODE>. Jetez un oeil dans le fichier .h et vous devriez y trouver un #define qui ressemble &agrave; :

<BLOCKQUOTE><CODE>
<PRE>
#define IN2000 {&quot;Always IN2000&quot;, in2000_detect, \
    in2000_info, in2000_command,    \
    in2000_queuecommand,            \
    in2000_abort,                   \
    in2000_reset,                   \
    NULL,                           \
    in2000_biosparam,               \
    1, 7, IN2000_SG, 1, 0, 0}
</PRE>
</CODE></BLOCKQUOTE>


Ajoutez la constante IN2000 dans le tableau <CODE>scsi_hosts[]</CODE>, rendue conditionnelle par le symbole que vous venez de d&eacute;finir dans le fichier de configuration.

Par exemple, apr&egrave;s

<BLOCKQUOTE><CODE>
<PRE>
#ifdef CONFIG_SCSI_GENERIC_NCR5380
        GENERIC_NCR5380,
#endif
</PRE>
</CODE></BLOCKQUOTE>


vous pouvez ajouter

<BLOCKQUOTE><CODE>
<PRE>
#ifdef CONFIG_SCSI_IN2000
        IN2000,
#endif
</PRE>
</CODE></BLOCKQUOTE>


R&eacute;f&eacute;rez-vous au chapitre 
<A HREF="SCSI-HOWTO-2.html#KernelConfig">Configurer et reg&eacute;n&eacute;rer le noyau</A>
.
</LI>
</OL>
</P>
<P></P>
<H3>Panne d'une carte PCI dans un syst&egrave;me Compaq</H3>

<P>Un certain nombre de machines Compaq logent les extensions 32-bit du BIOS permettant de tester les contr&ocirc;leurs PCI dans une zone m&eacute;moire inaccessible au noyau Linux (cela est d&ucirc; &agrave; l'organisation de la m&eacute;moire). Si Linux est incapable de d&eacute;tecter une carte PCI SCSI connue comme &eacute;tant support&eacute;e et si le noyau affiche un message du genre</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
pcibios_init: entry in high memory, unable to access
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>allez chercher</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp://ftp.compaq.com/pub/softpaq/Software-Solutions/sp0921.zip
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>C'est un programme auto-extractible qui vous permettra de reloger le code du BIOS32.</P>
<P></P>
<H3>Un syst&egrave;me SCSI avec des contr&ocirc;leurs PCI se bloque apr&egrave;s le message %d Hosts</H3>

<P></P>
<P>Certains syst&egrave;mes PCI ont un BIOS d&eacute;fectueux qui masque les interruptions et qui n'arrive pas &agrave; les d&eacute;masquer avant de rendre la main &agrave; l'appelant. Le patch suivant corrige ce probl&egrave;me :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
--- bios32.c.orig       Mon Nov 13 22:35:31 1995
+++ bios32.c    Thu Jan 18 00:15:09 1996
@@ -56,6 +56,7 @@
 #include &lt;linux/pci.h&gt;

 #include &lt;asm/segment.h&gt;
+#include &lt;asm/system.h&gt;

 #define PCIBIOS_PCI_FUNCTION_ID        0xb1XX
 #define PCIBIOS_PCI_BIOS_PRESENT       0xb101
@@ -125,7 +126,9 @@
        unsigned long address;          /* %ebx */
        unsigned long length;           /* %ecx */
        unsigned long entry;            /* %edx */
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%edi)&quot;
                : &quot;=a&quot; (return_code),
                  &quot;=b&quot; (address),
@@ -134,6 +137,7 @@
                : &quot;0&quot; (service),
                  &quot;1&quot; (0),
                  &quot;D&quot; (&amp;amp;bios32_indirect));
+       restore_flags(flags);

        switch (return_code) {
                case 0:
@@ -161,11 +165,13 @@
        unsigned char present_status;
        unsigned char major_revision;
        unsigned char minor_revision;
+       unsigned long flags;
        int pack;

        if ((pcibios_entry = bios32_service(PCI_SERVICE))) {
                pci_indirect.address = pcibios_entry;

+               save_flags(flags);
                __asm__(&quot;lcall (%%edi)\n\t&quot;
                        &quot;jc 1f\n\t&quot;
                        &quot;xor %%ah, %%ah\n&quot;
@@ -176,6 +182,7 @@
                        : &quot;1&quot; (PCIBIOS_PCI_BIOS_PRESENT),
                          &quot;D&quot; (&amp;amp;pci_indirect)
                        : &quot;bx&quot;, &quot;cx&quot;);
+               restore_flags(flags);

                present_status = (pack &gt;&gt; 16) &amp; 0xff;
                major_revision = (pack &gt;&gt; 8) &amp; 0xff;
@@ -210,7 +217,9 @@
 {
        unsigned long bx;
        unsigned long ret;
+       unsigned long flags;

+       save_flags(flags);
        __asm__ (&quot;lcall (%%edi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -221,6 +230,7 @@
                  &quot;c&quot; (class_code),
                  &quot;S&quot; ((int) index),
                  &quot;D&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        *bus = (bx &gt;&gt; 8) &amp; 0xff;
        *device_fn = bx &amp; 0xff;
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
@@ -232,7 +242,9 @@
 {
        unsigned short bx;
        unsigned short ret;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%edi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -244,6 +256,7 @@
                  &quot;d&quot; (vendor),
                  &quot;S&quot; ((int) index),
                  &quot;D&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        *bus = (bx &gt;&gt; 8) &amp; 0xff;
        *device_fn = bx &amp; 0xff;
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
@@ -254,7 +267,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags (flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -273,7 +288,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -292,7 +309,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -303,6 +322,7 @@
                  &quot;b&quot; (bx),
                  &quot;D&quot; ((long) where),
                  &quot;S&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
 }

@@ -311,7 +331,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -322,6 +344,7 @@
                  &quot;b&quot; (bx),
                  &quot;D&quot; ((long) where),
                  &quot;S&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
 }

@@ -330,7 +353,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -341,6 +366,7 @@
                  &quot;b&quot; (bx),
                  &quot;D&quot; ((long) where),
                  &quot;S&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
 }

@@ -349,7 +375,9 @@
 {
        unsigned long ret;
        unsigned long bx = (bus &lt;&lt; 8) | device_fn;
+       unsigned long flags;

+       save_flags(flags);
        __asm__(&quot;lcall (%%esi)\n\t&quot;
                &quot;jc 1f\n\t&quot;
                &quot;xor %%ah, %%ah\n&quot;
@@ -360,6 +388,7 @@
                  &quot;b&quot; (bx),
                  &quot;D&quot; ((long) where),
                  &quot;S&quot; (&amp;amp;pci_indirect));
+       restore_flags(flags);
        return (int) (ret &amp; 0xff00) &gt;&gt; 8;
 }
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.3 <A NAME="ss5.3"></A> Adaptec 152x, 151x, 1505, 282x, Sound Blaster 16 SCSI, SCSI Pro, Gigabyte et autres produits bas&eacute;s sur l'AIC 6260/6360 (standard)</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
adresses du BIOS : 0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000,
                   0xe0000, 0xe4000.
Ports            : 0x140, 0x340
IRQs             : 9, 10, 11, 12
DMA              : non utilise
E/S              : port mappe
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Cela marche avec de nombreuses cartes qui ont un BIOS installe. Toutes les autres cartes,
y compris les Adaptec 1510 et les Sound Blaster 16 SCSI, necessitent d'utiliser une ligne
de commande du noyau ou une surcharge au moment de la compilation.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>Au moment de la compilation :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Definissez PORTBASE, IRQ, SCSI_ID, RECONNECT, PARITE de maniere adequate (voir Definitions)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aha152x=&lt;PORTBASE&gt;[,&lt;IRQ&gt;[,&lt;SCSI-ID&gt;[,&lt;RECONNECT&gt;[,&lt;PARITE&gt;]]]]
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Le champ SCSI-ID est l'identificateur SCSI de la carte contr&ocirc;leur. Aucun autre p&eacute;riph&eacute;rique connect&eacute; sur ce bus SCSI ne doit avoir ce num&eacute;ro. Habituellement, il est fix&eacute; &agrave; 7.</P>
<P>Pour forcer l'auto-d&eacute;tection &agrave; l'adresse 0x340, l'IRQ 11, SCSI-ID 7 et autoriser la connexion/d&eacute;connexion, vous devez utiliser la ligne de commande suivante :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aha152x=0x340,11,7,1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;solus en mettant &agrave; jour le noyau :</P>
<P>
<OL>
<LI> le pilote n'arrive pas &agrave; g&eacute;rer les cartes VLB. Il y avait un probl&egrave;me de temporisation avec les noyaux ant&eacute;rieurs &agrave; la version 1.0.5.</LI>
</OL>
</P>
<P>Les constantes :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
AUTOCONF       : utiliser la configuration reportee par le controleur (uniquement pour les 152x)
IRQ            : surcharge du niveau d'interruption (9,10,11 ou 12) (11 par defaut)
SCSI_ID        : surcharge du SCSI ID de l'AIC-6260 (0-7) (7 par defaut)
RECONNECT      : surcharge l'indicateur de deconnexion/reselection (une valeur non nulle
                 signifie 'autoriser', une valeur nulle signifie 'interdire')
DONT_SNARF     : n'enregistre pas les ports (pl12 et inferieurs)
SKIP_BIOSTEST  : ne teste pas la signature du BIOS (pour la AHA-1510 ou en cas de BIOS debraye)
PORTBASE       : force le port de base. Il ne faut pas essayer l'auto-detection
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.4 <A NAME="ss5.4"></A> Adaptec 154x, AMI FastDisk VLB, DTC 329x (standard)</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : 0x330 et 0x334
IRQs           : 9, 10, 11, 12, 14, 15
Canaux DMA     : 5, 6, 7
E/S            : port mappe, controle de bus (bus master)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
detecte uniquement les cartes en 0x330 et 0x334.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aha1542=&lt;PORTBASE&gt;[,&lt;BUSON&gt;,&lt;BUSOFF&gt;[,&lt;VITESSEDMA&gt;]]
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Notes :</P>
<P>
<OL>
<LI> BusLogic produit une s&eacute;rie de cartes logiciellement compatibles avec les Adaptec 1542. Ces cartes existent en ISA, VLB, EISA et plusieurs vari&eacute;t&eacute;s en PCI.</LI>
<LI> Des cartes sans suffixe et les premi&egrave;res cartes &agrave; suffixe 'A' n'acceptent pas le 'd&eacute;coupage' / 'r&eacute;assemblage' (scatter/gather), et, de ce fait, ne fonctionnent pas. Moyennant une red&eacute;finition du mot 'fonctionnement', on peut les faire marcher &agrave; condition de mettre <B>AHA1542_SCATTER</B> &agrave; 0 dans le fichier <CODE>drivers/scsi/aha1542.h</CODE>.</LI>
</OL>
</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;solus en mettant &agrave; jour le noyau :</P>
<P>
<OL>
<LI> Les versions du noyau ant&eacute;rieures &agrave; la version 0.99.10 ne g&egrave;rent pas la version 'C' des contr&ocirc;leurs.</LI>
<LI> Les versions du noyau ant&eacute;rieures &agrave; la version 0.99.14k ne g&egrave;rent pas les options suivantes pour les cartes version 'C' :

<UL>
<LI> support du BIOS pour le mapping &eacute;tendu des disques &gt; 1G</LI>
<LI> support du BIOS pour plus de 2 disques</LI>
<LI> support du BIOS pour la scrutation automatique du bus SCSI</LI>
</UL>

</LI>
<LI> Les versions du noyau ant&eacute;rieures &agrave; la version 0.99.15e ne g&egrave;rent pas les versions 'C' avec support du BIOS pour plus de 2 disques activ&eacute; et le support du BIOS pour le mapping &eacute;tendu des disques &gt; 1G d&eacute;sactiv&eacute;</LI>
<LI> Les versions du noyau ant&eacute;rieures &agrave; la version 0.99.14u ne supportent les versions 'CF' de ce type de cartes</LI>
<LI> Il existait un s&eacute;quencement critique (race condition) dans les versions du noyau ant&eacute;rieures &agrave; la version 1.0.5 lorsque plusieurs p&eacute;riph&eacute;riques &eacute;taient acc&eacute;d&eacute;s simultan&eacute;ment.</LI>
</OL>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> erreurs 'non attendues' avec des cartes 154xC ou 154xCF.
<A NAME="154_1"></A> 


Certaines cartes 154xC parmi les premiers exemplaires g&eacute;n&eacute;raient un signal &agrave; haute fr&eacute;quence sur un des signaux SCSI, provoquant des r&eacute;flexions dans des c&acirc;bles de mauvaise imp&eacute;dance.
<P>Les nouvelles cartes ne sont pas vraiment meilleures et sont pointilleuses sur la qualit&eacute; des c&acirc;bles et sur la sensibilit&eacute; des terminaisons.</P>
<P>R&eacute;f&eacute;rez-vous aux chapitres Probl&egrave;mes fr&eacute;quents 
<A HREF="#154_2">#2</A>
 et
<A HREF="#154_3">#3</A>
,
<A HREF="#CommonProblems">Probl&egrave;mes habituels</A>
, ou
<A HREF="SCSI-HOWTO-2.html#Flakiness">Dysfonctionnement g&eacute;n&eacute;ralis&eacute;</A>
.</P>
<P></P>
</LI>
<LI> erreurs 'non attendues' avec des cartes 154xC ou 154x lorsqu'&agrave; la fois des p&eacute;riph&eacute;riques internes et externes sont connect&eacute;s.
<A NAME="154_2"></A> 


C'est probablement un probl&egrave;me de terminaison. Afin de pouvoir utiliser l'option logicielle permettant de d&eacute;sactiver la terminaison interne de la carte, vous devez positionner le cavalier 1 sur OFF.

R&eacute;f&eacute;rez-vous aux chapitres Probl&egrave;mes fr&eacute;quents 
<A HREF="#154_1">#1</A>
 et
<A HREF="#154_3">#3</A>
,
<A HREF="#CommonProblems">Probl&egrave;mes habituels</A>
, ou
<A HREF="SCSI-HOWTO-2.html#Flakiness">Dysfonctionnement g&eacute;n&eacute;ralis&eacute;</A>
.
</LI>
<LI> le sous-syst&egrave;me SCSI se bloque compl&egrave;tement.
<A NAME="154_3"></A> 


Dans certains cas, le blocage semble se produire lors de l'utilisation simultan&eacute;e de plusieurs p&eacute;riph&eacute;riques. Si cela arrive, contactez le fabricant de ces p&eacute;riph&eacute;riques et voyez si une &eacute;ventuelle mise &agrave; jour du firmware r&eacute;soudrait le probl&egrave;me. En dernier recours, vous pouvez modifier <B>AHA1542_MAILBOX</B> &agrave; 1 dans le fichier <CODE>aha1542.h</CODE>. Cela va limiter le nombre de commandes pr&eacute;sentes sur le bus SCSI &agrave; 1 &agrave; la fois. Il se peut que &ccedil;a r&eacute;solve le probl&egrave;me. Par contre, une fois encore, si vous avez des p&eacute;riph&eacute;riques lents (lecteur de bandes, lecteur de CDROM), ce contournement risque de ne pas &ecirc;tre une solution utilisable.

Reportez-vous aux chapitres Probl&egrave;mes fr&eacute;quents 
<A HREF="#154_1">#1</A>
 et 
<A HREF="#154_2">#2</A>
, 
<A HREF="#CommonProblems">Probl&egrave;mes habituels</A>
 ou 
<A HREF="SCSI-HOWTO-2.html#SCSISysLockups">Le SCSI se bloque</A>
.
</LI>
<LI> Le message "Interrupt received, but no mail" est affich&eacute; au d&eacute;marrage et vos p&eacute;riph&eacute;riques SCSI ne sont pas d&eacute;tect&eacute;s.

D&eacute;sactivez les options du BIOS pour la gestion du mapping &eacute;tendu pour les disques &gt; 1G, pour la gestion de plus de 2 p&eacute;riph&eacute;riques et pour la scrutation automatique du bus (autoscanning). Ou alors, passez &agrave; une version de Linux 0.99.14k (ou plus r&eacute;cente).
</LI>
<LI> Si des erreurs de temporisation infinie apparaissent sur des cartes version 'C', entrez dans le programme de configuration Adaptec puis autorisez la n&eacute;gociation synchrone.
</LI>
<LI> Linux 1.2.x affiche le message

"Unable to determine Adaptec DMA priority.  Disabling board."

Cela est d&ucirc; &agrave; un conflit sur certains syst&egrave;mes avec un pilote BusLogic obsol&egrave;te. Vous pouvez soit reg&eacute;n&eacute;rer votre noyau sans ce pilote, soit lui fournir une option sur la ligne de commande lui indiquant de scruter une adresse autre que celle de votre contr&ocirc;leur. Par exemple, si votre carte Adaptec r&eacute;pond &agrave; l'adresse 0x334 et qu'il n'y a aucune autre carte en 0x330, utilisez la ligne de commande suivante :

<BLOCKQUOTE><CODE>
<PRE>
buslogic=0x330
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI> Le syst&egrave;me se bloque lors d'acc&egrave;s simultan&eacute;s &agrave; plusieurs p&eacute;riph&eacute;riques sur des cartes 1542C ou 1540C avec la d&eacute;connexion activ&eacute;e.

Quelques versions du firmware des Adaptec avaient des erreurs. Une mise &agrave; jour avec la version du BIOS v2.11 est cens&eacute;e corriger ce probl&egrave;me.
</LI>
</OL>
</P>
<P></P>

<H2>5.5 <A NAME="ss5.5"></A> Adaptec 174x</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Emplacements   : 1-8
Ports          : non significatif (carte EISA)
IRQs           : 9, 10, 11, 12, 14, 15
Canaux DMA     : non significatif (carte EISA)
E/S            : port mappe, controle de bus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
fonctionne avec toutes les configurations gerees
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aucune
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Remarque :
<OL>
<LI> Cette carte n'est plus fabriqu&eacute;e par Adaptec.</LI>
</OL>
</P>
<P>Probl&egrave;mes courants :
<OL>
<LI> Si le pilote de l'Adaptec 1740 affiche le message
"aha1740: Board detected, but EBCNTRL = %x, so disabled it."
<P>votre carte a &eacute;t&eacute; d&eacute;sactiv&eacute;e parce qu'elle ne tournait pas en mode &eacute;tendu (enhanced mode). Les cartes qui fonctionnent en mode 1542 standard ne sont pas g&eacute;r&eacute;es.</P>
</LI>
</OL>
</P>
<P></P>

<H2>5.6 <A NAME="ss5.6"></A> Adaptec 274x, 284x (standard) 294x (ALPHA)</H2>

<P></P>
<P>Une nouvelle version qui g&egrave;re &eacute;galement les cartes Adaptec 294x est disponible &agrave; l'adresse</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp://ftp.ims.com/pub/Linux/aic7xxx
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
                    274x           284x            294x
Emplacements EISA : 1-12           N/A             N/A
Ports             : N/A            TOUS            TOUS
IRQs              : ALL            TOUTES          TOUTES
Canaux DMA        : N/A            TOUS            N/A
E/S               : port mappe, controle de bus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aha274x=extended
(pour forcer le mapping etendu)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Remarques :
<OL>
<LI> Le BIOS doit &ecirc;tre activ&eacute;</LI>
<LI> Le canal B des cartes 2742AT est ignor&eacute;</LI>
<LI> CONFIG_PCI (lors de la g&eacute;n&eacute;ration du noyau) doit &ecirc;tre positionn&eacute;e si vous utilisez une carte PCI.</LI>
</OL>
</P>
<P></P>

<H2>5.7 <A NAME="ss5.7"></A> Always IN2000 (standard)</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : 0x100, 0x110, 0x200, 0x220
IRQs           : 10, 11, 14, 15
DMA            : non utilise
E/S            : port mappe
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
le BIOS n'est pas necessaire
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aucune
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes courants :</P>
<P>
<OL>
<LI> un probl&egrave;me connu concerne les syst&egrave;mes avec des disques IDE et la pagination (swapping).</LI>
</OL>
</P>
<P></P>

<A NAME="BuslogicMulti"></A> <H2>5.8 <A NAME="ss5.8"></A> Cartes contr&ocirc;leurs multi-ma&icirc;tres BusLogic </H2>

<P></P>
<P>(cette section est Copyright 1995 par Leonard N. Zubkoff &lt;lnz@dandelion.com&gt;)
(le fichier README.BusLogic constitue une documentation plus compl&egrave;te du pilote BusLogic ; lisez-le)</P>
<P>
<PRE>
                  Pilote SCSI BusLogic Multi-Maitres pour Linux

                       Version 1.2.2 pour Linux 1.2.13
                       Version 1.3.2 pour Linux 1.3.88

                 ftp://ftp.dandelion.com/BusLogic-1.2.2.tar.gz
                 ftp://ftp.dandelion.com/BusLogic-1.3.2.tar.gz

                                 16 Avril 1996

                               Leonard N. Zubkoff
                               Dandelion Digital
                               lnz@dandelion.com

BusLogic  Inc.  concoit  et  fabrique  un  ensemble de  controleurs SCSI de hautes
performances,  qui partagent une interface de  programmation commune pour diverses
architectures  de bus, par le biais de leur technologie ASIC Multi-Maitres (Multi-
Master ASIC). Ce pilote gere tous les controleurs BusLogic Multi-Maitres actuels,
et devrait gerer toutes les cartes Multi-Maitres a venir avec peu (voire aucune) de
modifications.  Les controleurs  bases sur la  nouvelle architecture FlashPoint ne
sont pas geres par ce pilote ; reportez-vous au fichier  README.FlashPoint pour la
marche a suivre pour passer d'une carte FlashPoint LT non geree a une carte BT-948
supportee.

Mes buts principaux lorsque j'ai ecrit ce pilote BusLogic completement nouveau pour
Linux  etaient d'exploiter les performances maximales que les controleurs SCSI Bus-
Logic  et les peripheriques SCSI  modernes sont capables d'atteindre  et de fournir
un pilote extremement fiable sur lequel des applications critiques puissent s'appu-
yer. Tout  peut etre configure sur la ligne de  commande du noyau, des performances
jusqu'aux detections d'erreurs. Cela permet a chaque installation d'ajuster les pa-
rametres de performance et de gestion des erreurs aux besoins locaux.

BusLogic  est une  compagnie avec laquelle il a ete tres agreable de travailler, et
je  recommande chaleureusement leurs produits a la communaute Linuxienne. En Novem-
bre 1995, j'ai eu l'opportunite de devenir site beta testeur pour leur dernier pro-
duit Multi-Maitres - le controleur SCSI BT-948 PCI Ultra -, puis de nouveau pour le
controleur BT-958 PCI Wide Ultra en Janvier 1996. Cela a ete un benefice reciproque,
car  nous avons apporte a BusLogic un environnement de test que leurs propres equi-
pes ne pouvaient pas avoir  et la communaute Linuxienne a dispose de controleurs de
hautes  performances  qui avaient  correctement ete testes sur Linux avant meme que
les  produits ne soient  commercialises. Cette  relation avec BusLogic m'a en outre
donne  l'occasion d'interagir  directement avec leur  equipe technique  et ainsi de
leur  donner connaissance des besoins et des potentialites du monde Linux. Leur in-
teret et leur support sont tres apprecies.

Contrairement  a d'autres  vendeurs, si vous contactez le support technique de Bus-
Logic et que vous annoncez que vous tournez sous Linux, ils ne vont pas vous retor-
quer que votre utilisation de leur produit n'est pas supportee. Leurs dernieres pu-
blications commerciales mentionnent meme &quot;Les controleurs SCSI BusLogic sont compa-
tibles avec tous les systemes d'exploitation importants, incluant : ... Linux ...&quot;.

BusLogic, Inc. se trouve a 4151  Burton Drive, Santa Clara, California, 95054, USA,
et vous pouvez les contacter par  telephone au 408/492-9090 ou  par fax au 408/492-
1542. BusLogic dispose d'un  site Web (http://www.buslogic.com), d'un site FTP ano-
nyme (ftp.buslogic.com)  et d'une BBS au 408/492-1984. Le support technique de Bus-
Logic  peut etre joint par  courrier electronique a l'adresse techsup@buslogic.com,
par  telephone au 408/654-0760 ou par fax au  408/492-1542. Des  renseignements sur
leurs representants en Europe et au Japon sont disponibles sur leur site Web.

                        LES CONTROLEURS GERES

La  liste  suivante comporte les  controleurs  SCSI BusLogic  geres a la date de ce
document.  Il est  recommande qu'une  personne se  portant  acquereur  d'une  carte
BusLogic  non listee  dans la table  suivante contacte l'auteur de ce document pour
verifier si elle est supportee ou si elle le sera un jour.

Les series &quot;W&quot; :

BT-948      PCI     Ultra Fast Terminaison unique SCSI-2
BT-958      PCI     Ultra Wide Terminaison unique SCSI-2
BT-958D     PCI     Ultra Wide Differentielle SCSI-2

Les series &quot;C&quot; :

BT-946C     PCI     Fast Terminaison unique SCSI-2
BT-956C     PCI     Fast Wide Terminaison unique SCSI-2
BT-956CD    PCI     Fast Wide Differentielle SCSI-2
BT-445C     VLB     Fast Terminaison unique SCSI-2
BT-747C     EISA    Fast Terminaison unique SCSI-2
BT-757C     EISA    Fast Wide Terminaison unique SCSI-2
BT-757CD    EISA    Fast Wide Differentielle SCSI-2
BT-545C     ISA     Fast Terminaison unique SCSI-2
BT-540CF    ISA     Fast Terminaison unique SCSI-2

Les series &quot;S&quot;: 

BT-445S     VLB     Fast Terminaison unique SCSI-2
BT-747S     EISA    Fast Terminaison unique SCSI-2
BT-747D     EISA    Fast Differentielle SCSI-2
BT-757S     EISA    Fast Wide Terminaison unique SCSI-2
BT-757D     EISA    Fast Wide Differentielle SCSI-2
BT-545S     ISA     Fast Terminaison unique SCSI-2
BT-542D     ISA     Fast Differentielle SCSI-2
BT-742A     EISA    Terminaison unique SCSI-2 (742A version H)
BT-542B     ISA     Terminaison unique SCSI-2 (542B version H)

Les series &quot;A&quot; :

BT-742A     EISA    Terminaison unique SCSI-2 (742A versions A - G)
BT-542B     ISA     Terminaison unique SCSI-2 (542B versions A - G)

Les controleurs AMI FastDisk, veritables clones BusLogic, sont geres par ce pilote.

                REMARQUES SUR L'INSTALLATION DES CARTES BT-948/958/958D

Les  controleurs SCSI BT-948/958/958D PCI Ultra ont des fonctionnalites qui peuvent
necessiter une certaine attention lors de l'installation de Linux.

o Affectation des ports d'entree/sortie PCI

  Lorsqu'elles  sont  configurees avec les valeurs par defaut usine, les cartes BT-
  948/958/958D vont  uniquement reconnaitre les affectations des ports d'E/S faites
  par le BIOS  PCI de la  carte mere. Les  BT-948/958/958D ne  repondront  plus aux
  ports d'E/S compatibles ISA auxquels les controleurs SCSI BusLogic precedents re-
  pondaient. Le pilote gere les affectations des ports d'E/S PCI. C'est la configu-
  ration a privilegier. Toutefois, si le pilote BusLogic obsolete doit etre utilise
  pour une raison quelconque, comme par exemple une distribution Linux qui n'utili-
  serait pas encore le nouveau pilote dans son noyau de demarrage, BusLogic a fourni
  une option de configuration AutoSCSI qui autorise les ports d'E/S compatibles ISA.

  Pour  activer  cette  option de  compatibilite  ascendante, appelez  l'utilitaire
  AutoSCSI  par  CTRL-B au demarrage du systeme  et  choisissez &quot;Adapter Configura-
  tion&quot;,  &quot;View/Modify Configuration&quot;, puis  changez les parametres &quot;ISA Compatible
  Port&quot;  de &quot;Disable&quot;  a &quot;Primary&quot;  ou &quot;Alternate&quot;. Une  fois que  ce  pilote a ete
  installe, l'option &quot;ISA Compatible Port&quot; doit etre remise a &quot;Disable&quot; pour eviter
  tout conflit de futurs ports  d'E/S. Les anciennes  cartes BT-946C/956C/956CD ont
  egalement cette option de configuration, mais le defaut usine est &quot;Primary&quot;.

o L'ordre de scrutation des emplacements PCI

  Dans les  systemes  comportant  plusieurs  controleurs PCI BusLogic, l'ordre dans
  lequel les  emplacements PCI sont scrutes peut apparaitre inverse pour les cartes
  BT-948/958/958D par rapport aux cartes  BT-946C/956C/956CD. Pour demarrer  depuis
  un disque SCSI, il est  necessaire que le  BIOS du controleur et  le noyau soient
  d'accord  sur quel  disque est le disque de  demarrage (boot disk). Cela implique
  qu'ils reconnaissent les  controleurs PCI dans  le meme ordre. Le  BIOS PCI de la
  carte mere fournit un moyen standard d'enumerer les controleurs PCI. Ce moyen est
  utilise par le noyau Linux. Certaines  implementations du BIOS PCI  enumerent les
  emplacements PCI par ordre croissant des numeros de bus et des numeros de contro-
  leurs, alors que d'autres le font dans le sens contraire.

  Malheureusement,  Microsoft  a  decide  que Windows 95  enumererait  toujours les
  emplacements  PCI  dans l'ordre  croissant des  numeros  de bus et des numeros de
  controleurs independamment de l'enumeration du BIOS PCI  et ils ont exige que leur
  facon de faire soit  supportee par le  BIOS des  controleurs pour  etre  certifie
  Windows 95. En  consequence, les defauts usine des cartes BT-948/958/ 958D enume-
  rent les controleurs par numeros croissants. Pour  desactiver ce  fonctionnement,
  appelez l'utilitaire AutoSCSI par CTRL-B au demarrage du systeme, puis choisissez
  &quot;Adapter Configuration&quot;,  &quot;View/Modify Configuration&quot;,  appuyez sur  CTRL-F10 et
  changez l'option &quot;Use Bus And Device # For PCI Scanning Seq.&quot; a 0FF.

  Ce pilote va interroger la valeur de l'option de  Sequence De Scrutation PCI,  de
  maniere  a reconnaitre les controleurs dans le meme ordre qu'ils ont ete enumeres
  par le BIOS du controleur.

                        LA LISTE DE DIFFUSION DES ANNONCES BUSLOGIC

La  liste de diffusion des  annonces BusLogic constitue un forum d'information pour
les  utilisateurs Linux des  nouveautes (nouvelles  versions du  pilote  et  autres
annonces  concernant le  support pour  Linux des  controleurs  BusLogic). Pour vous
inscrire a la liste, envoyez un message a l'adresse suivante :
&quot;BusLogic-announce-request@dandelion.com&quot;, avec la ligne  &quot;subscribe&quot; dans le corps
du message.
</PRE>
</P>
<P></P>

<H2>5.9 <A NAME="ss5.9"></A> Les contr&ocirc;leurs BusLogic FlashPoint</H2>

<P></P>
<P>(cette section est Copyright 1995 par Leonard N. Zubkoff &lt;lnz@dandelion.com&gt;)</P>
<P>
<PRE>
Il  n'y a pas de pilote Linux pour les cartes FlashPoint LT/DL/LW (BT-930/932/950),
et quand il va y en avoir ou s'il y en aura n'est pas tres clair. Les cartes Flash-
Point  ont une  architecture differente des  cartes Multi-Maitres  et  n'ont pas de
processeurs  sur la carte ; elles disposent d'un simple sequenceur SCSI. Elles sont
concues pour les ordinateurs  de bureau  et ne sont pas  specialement concues  pour
des systemes d'exploitation multitaches performants comme Linux.

Les  cartes Multi-Maitres BT-948/958 ont  un processeur  embarque et l'interface de
programmation  par &quot;boite a lettres&quot;  permet de faire du parallelisme et du pipeli-
ning  entre le controleur et le systeme d'exploitation, alors que les cartes Flash-
Point necessitent de frequentes interventions du processeur principal. Etant  donne
que les  delais de  prise en  compte des  interruptions  augmentent sur  un systeme
charge, les BT-948/958 continuent d'avoir d'excellentes  performances au  contraire
des FlashPoint, qui  s'ecroulent  rapidement. De plus, le  firmware des  BT-948/958
possede la  connaissance  de bas niveau pour une  interaction  efficace avec le bus
SCSI. Avec un  sequenceur  SCSI comme dans les  FlashPoint, le  noyau Linux doit en
revanche contenir  lui-meme  toutes ces  informations de  bas niveau,  et il est en
general long d'arriver a faire marcher tout cela proprement. Etant  donne le faible
ecart de prix entre  ces deux  modeles, les  cartes BT-948 et  BT-958 sont de toute
evidence le meilleur choix pour Linux.

&lt;debut de citation&gt;

                                ANNONCE
                Mise a jour des BusLogic FlashPoint vers les BT-948
                             1er Fevrier 1996

Depuis  leur  apparition en Octobre 1995, les  BusLogic  FlashPoint  LT  ont  pose
des  problemes  sous  Linux, si  bien  qu'aucun  pilote  n'est  encore  disponible
pour  cette  nouvelle  carte  Ultra SCSI. Bien que le produit  soit officiellement
declare  comme  une carte pour machine de bureau  et ne  soit pas particulierement
efficace  dans  des environnements  multitaches  performants  tels  que  Linux, la
FlashPoint LT  a ete annoncee  comme etant le dernier cri, le  nec plus ultra, par
les vendeurs d'ordinateurs  et elle s'est retrouvee sur certains de leurs systemes
haut de gamme, a l'exclusion  de ceux equipes  des anciennes cartes Multi-Maitres.
Cela  a  cause du tort a de  nombreuses personnes  qui  ont  par megarde achete un
systeme en s'attendant a ce que tous les produits BusLogic soient geres par Linux,
et qui  ont finalement  decouvert que la FlashPoint n'etait pas supportee et ne le
serait pas avant longtemps, si elle devait l'etre un jour.

Apres  que  ce  probleme a  ete  identifie, BusLogic  est entree  en contact  avec
ses  principaux clients  OEM pour  annoncer que les cartes  Multi-Maitres BT-946C/
956C seraient  toujours disponibles,  et  que les  utilisateurs  Linux qui avaient
par  megarde  commande des systemes a base  de FlashPoint pourraient mettre a jour
leur  machine avec une BT-946C. Si cela a aide de nouveaux acheteurs, cela n'etait
qu'une solution partielle au probleme plus general du support de la FlashPoint pour
les  utilisateurs  de  Linux. Cette  annonce n'apportait  aucun soutien a ceux qui
avaient  initialement achete une FlashPoint pour  un systeme d'exploitation qui la
gerait  et qui decidaient plus tard de passer a Linux ou  ceux qui avaient achete
une  FlashPoint,  croyant  qu'elle etait  geree  et  qui etaient  incapables de la
retourner.

Mi-Decembre,  j'ai demande a  rencontrer le  responsable de la gestion de BusLogic
pour  discuter  du support pour le  logiciel libre (free software)  et pour  Linux
de la FlashPoint. Des  bruits plus ou moins  exacts avaient  circule  publiquement
sur l'attitude  de BusLogic  envers Linux  et  j'avais le sentiment  que le  mieux
etait d'en  discuter  directement. J'envoyai  un message par  email un  soir  a 11
heures  et  la  reunion  eut lieu  le lendemain  apres-midi. Malheureusement,  les
rouages  administratifs tournent lentement, particulierement  lorsqu'une compagnie
est en cours d'acquisition, c'est pourquoi il a fallu attendre jusqu'a  maintenant
que tous les details soient parfaitement clairs et qu'une annonce publique  puisse
etre faite.

BusLogic  n'est  pas  prete  aujourd'hui  a publier  les  informations necessaires
a ce  que des parties  tierces puissent  ecrire des pilotes  pour  la  FlashPoint.
Les  seuls pilotes  existants pour  la FlashPoint  ont  ete  ecrits  par  l'equipe
technique de BusLogic  et il n'existe pas de documentation suffisamment  detaillee
pour permettre a un developpeur exterieur d'ecrire un pilote sans aide consequente.
Alors  qu'il y a des gens  chez BusLogic  qui ne veulent  pas entendre  parler  de
divulgation  de details  sur l'architecture  de la  FlashPoint, le debat n'est pas
entierement  clos. Dans tous les cas, meme  si la documentation  etait  disponible
aujourd'hui, il faudrait certainement pas mal de temps pour qu'un pilote reellement
utilisable soit ecrit, surtout que je ne suis pas convaincu que l'effort en vaille
la peine.

De toute facon, BusLogic continue a fournir une solution SCSI de hautes performan-
ces pour Linux  et ils ne desirent pas voir quelqu'un incapable de travailler sous
Linux  sous pretexte qu'il a une FlashPoint LT. En consequence, BusLogic  a mis en
place un programme de mise a jour permettant a n'importe quel utilisateur de Linux
dans le monde de changer sa FlashPoint LT pour une nouvelle carte BT-948 Multi-Mai-
tres  PCI Ultra SCSI. La BT-948  est  la successeur  Ultra SCSI de  la BT-946C, et
possede  toutes les  fonctionnalites des controleurs BT-946C et  FlashPoint  LT, y
compris une terminaison adaptative (smart termination) et une PROM  flashable pour
faciliter les mises a jour du firmware. Elle est bien sur compatible avec le pilote
actuel de Linux. Le prix pour cette mise a jour a ete fixe a 45 dollars americains,
et  le programme de mise a jour est  realise par le Support Technique de BusLogic,
qui peut etre contacte par courrier electronique a l'adresse techsup@BusLogic.com,
par telephone au +1 408 654-0760 ou par fax au +1 408 492-1542.

J'ai un site en beta test pour le controleur BT-948 et les versions 1.2.1  et 1.3.1
de mon pilote BusLogic contiennent deja le support pour les BT-948. Une gestion sup-
plementaire (non indispensable) pour les cartes Multi-Maitres Ultra SCSI sera ajou-
tee dans une future version. En resultat de ce mecanisme de test 'cooperatif', plu-
sieurs  problemes du firmware  ont ete deceles et  corriges (assurez-vous que vous
avez  la version 5.05R ou plus). Mon systeme de test Linux tres charge a fourni un
environnement de test ideal pour tester le mecanisme de detection et de correction
d'erreurs  SCSI, qui  est bien moins  souvent mis en evidence sur les  machines de
production,  mais qui est crucial pour la  stabilite generale du systeme. Il a ete
tres pratique de pouvoir travailler directement avec leur ingenieur responsable du
firmware en reproduisant les problemes sous le controle de l'environnement de debug
du firmware. Il est certain que les  techniques ont  enormement evolue  depuis  le
temps ou je  travaillais sur un  firmware pour du  materiel embarque. Je travaille
actuellement sur des  mesures de performances  et j'espere avoir prochainement des
chiffres et des statistiques.

BusLogic  m'a demande d'envoyer cette  annonce puisqu'un important pourcentage des
questions  relatives au  support de la  FlashPoint m'a  directement ete envoye par
email ou a ete poste dans les groupes de news de Linux auxquels je participe. Pour
resumer, BusLogic offre aux  utilisateurs Linux de mettre a jour leur carte Flash-
Point LT (BT-930) non geree par une carte geree BT-948 pour une somme de 45 dollars
americains.

Contactez le support technique de BusLogic a l'adresse techsup@BusLogic.com ou au
+1 408 654-0760 pour beneficier de leur offre.

                Leonard N. Zubkoff
                lnz@dandelion.com
&lt;fin de citation&gt;
</PRE>
</P>
<P></P>

<H2>5.10 <A NAME="ss5.10"></A> EATA: DPT SmartCache, SmartCache Plus, SmartCache III,SmartCache IV et SmartRAID (standard)</H2>

<P></P>
<P>Cartes g&eacute;r&eacute;es : toutes, du moment qu'elles supportent le protocole EATA-DMA.</P>
<P>Parmi ces cartes, on trouve :</P>
<P>
<PRE>
La famille des DPT Smartcache (Plus) :
PM2011      ISA     Fast Terminaison unique SCSI-2
PM2012B     EISA    Fast Terminaison unique SCSI-2

La famille des DPT Smartcache III :
PM2021      ISA     Fast Terminaison unique SCSI-2
PM2021W     ISA     Wide Terminaison unique SCSI-2
PM2022      EISA    Fast Terminaison unique SCSI-2
PM2022W     EISA    Wide Terminaison unique SCSI-2
PM2024      PCI     Fast Terminaison unique SCSI-2
PM2024W     PCI     Wide Terminaison unique SCSI-2
PM2122      EISA    Fast Terminaison unique SCSI-2
PM2122W     EISA    Wide Terminaison unique SCSI-2
PM2124      PCI     Fast Terminaison unique SCSI-2
PM2124W     PCI     Wide Terminaison unique SCSI-2
PM2322      EISA    Fast Terminaison unique SCSI-2
PM2322W     EISA    Wide Terminaison unique SCSI-2

La famille des DPT Smartcache VI :
PM2041W     ISA     Wide Terminaison unique SCSI-2
PM2041UW    ISA     Ultra Wide Terminaison unique SCSI-2
PM2042W     EISA    Wide Terminaison unique SCSI-2
PM2042UW    EISA    Ultra Wide Terminaison unique SCSI-2
PM2044W     PCI     Wide Terminaison unique SCSI-2
PM2044UW    PCI     Ultra Wide Terminaison unique SCSI-2
PM2142W     EISA    Wide Terminaison unique SCSI-2
PM2142UW    EISA    Ultra Wide Terminaison unique SCSI-2
PM2144W     PCI     Wide Terminaison unique SCSI-2
PM2144UW    PCI     Ultra Wide Terminaison unique SCSI-2
PM2322W     EISA    Wide Terminaison unique SCSI-2
PM2322UW    EISA    Ultra Wide Terminaison unique SCSI-2

La famille des DPT SmartRAID :
PM3021      ISA     Fast Terminaison unique SCSI-2
PM3021W     ISA     Wide Terminaison unique SCSI-2
PM3122      EISA    Fast Terminaison unique SCSI-2
PM3122W     EISA    Wide Terminaison unique SCSI-2
PM3222      EISA    Fast Terminaison unique SCSI-2
PM3222W     EISA    Wide Terminaison unique SCSI-2
PM3224      PCI     Fast Terminaison unique SCSI-2
PM3224W     PCI     Wide Terminaison unique SCSI-2
PM3334W     PCI     Wide Terminaison unique SCSI-2
PM3334UW    PCI     Ultra Wide Terminaison unique SCSI-2
</PRE>
</P>
<P>mais &eacute;galement les versions 'diff&eacute;rentielles' des contr&ocirc;leurs ci-dessus.</P>
<P>et quelques contr&ocirc;leurs de :</P>
<P>NEC, AT&amp;T, SNI, AST, Olivetti, Alphatronix.</P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Emplacements   : Tous
Ports          : Tous
IRQs           : Tous les niveaux sur changements d'etat (edge triggered)
Canaux DMA     : Tous les ISA, non significatifs pour les EISA/PCI
E/S            : port mappe, controle de bus
Canaux SCSI    : Tous
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
fonctionne avec toutes les configurations gerees
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>La derni&egrave;re version du pilote EATA-DMA est disponible &agrave; l'adresse :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp.i-Connect.Net:/pub/Local/EATA/
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Liste de diffusion :</P>
<P>La liste de diffusion EATA constitue un forum pour les utilisateurs Linux des pilotes EATA-DMA et EATA-PIO pour les discussions et les annonces des nouvelles versions et autres annonces.
Pour vous abonner &agrave; la liste, envoyez un message &agrave; "linux-eata-request@i-connect.net" avec la ligne "subscribe" dans le corps du message.</P>
<P>Support du r&eacute;pertoire <CODE>/proc/scsi</CODE> :</P>
<P>Pour avoir acc&egrave;s &agrave; des statistiques plus pouss&eacute;es, entrez les commandes suivantes :</P>
<P><CODE><B>echo "eata_dma latency" &gt;/proc/scsi/eata_dma/&lt;no_driver&gt;</B></CODE></P>
<P>Pour ensuite d&eacute;sactiver les statistiques, faites :</P>
<P><CODE><B>echo "eata_dma nolatency" &gt;/proc/scsi/eata_dma/&lt;no_driver&gt;</B></CODE></P>
<P>Probl&egrave;mes habituels :</P>
<P>
<OL>
<LI> La Slackware ne trouve pas le contr&ocirc;leur.
<P>Solution : utilisez une des disquettes de boot ascsi*.</P>
</LI>
<LI> Le pilote IDE arrive &agrave; d&eacute;tecter l'interface ST-506 de la carte EATA dans les anciens noyaux (&lt;v1.3).

<OL>
<LI> Cela  ressemble &agrave; l'un des 2 exemples suivants :

<BLOCKQUOTE><CODE>
<PRE>
hd.c: ST-506 interface disk with more than 16 heads detected,
  probably due to non-standard sector translation.  Giving up.
  (disk %d: cyl=%d, sect=63, head=64)
</PRE>
</CODE></BLOCKQUOTE>


<BLOCKQUOTE><CODE>
<PRE>
hdc: probing with STATUS instead of ALTSTATUS
hdc: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
hdc: cannot handle disk with 0 physical heads
hdd: probing with STATUS instead of ALTSTATUS
hdd: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0
hdd: cannot handle disk with 0 physical heads
</PRE>
</CODE></BLOCKQUOTE>


Si le pilote IDE a des probl&egrave;mes &agrave; cause de cela (vous ne pouvez pas acc&eacute;der &agrave; vos v&eacute;ritables p&eacute;riph&eacute;riques IDE par exemple), changez le port d'E/S et/ou les IRQ de la carte EATA.
</LI>
<LI> Si le pilote IDE trouve des &eacute;quipements qu'il sait traiter, par exemple des disques durs d'une capacit&eacute; &lt;=504MB, il va allouer le port d'E/S et l'IRQ de mani&egrave;re &agrave; ce que le pilote eata ne puisse pas les utiliser. Dans ce cas, changez aussi le port d'E/S et le niveau d'interruption (IRQ != 14, 15).</LI>
</OL>

</LI>
<LI> Le firmware de certaines vieilles cartes SK2011 est d&eacute;fectueux. Contactez le support client de DPT pour une mise &agrave; jour.</LI>
</OL>
</P>
<P>Remarques :
<OL>
<LI> <B>CONFIG_PCI</B> doit &ecirc;tre positionn&eacute;e si vous utilisez une carte PCI.</LI>
</OL>
</P>
<P></P>

<H2>5.11 <A NAME="ss5.11"></A> Future Domain 16x0 with TMC-1800, TMC-18C30, TMC-18C50 ou composant TMC-36C70</H2>

<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
BIOS           : 2.0, 3.0, 3.2, 3.4, 3.5
Adresses BIOS  : 0xc8000, 0xca000, 0xce000, 0xde000
Ports          : 0x140, 0x150, 0x160, 0x170
IRQs           : 3, 5, 10, 11, 12, 14, 15
DMA            : non utilise
E/S            : port mappe
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
fonctionne avec toutes les configurations gerees. Requiert un BIOS active
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :
<BLOCKQUOTE><CODE>
<PRE>
aucune
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;gl&eacute;s par une mise &agrave; jour :</P>
<P>
<OL>
<LI> Les vieilles versions ne g&egrave;rent pas le composant TMC-18C50 et se plantent avec les nouvelles cartes.</LI>
<LI> Les routines d'auto-d&eacute;tection des vieilles versions n'ont pas les plus r&eacute;centes signatures des BIOS.</LI>
<LI> Les versions avant celle incluse dans Linux 1.0.9 et 1.1.6 ne g&egrave;rent pas le nouveau composant SCSI ou le BIOS 3.4.</LI>
</OL>
</P>
<P>Remarque :
<OL>
<LI> Le BIOS des Future Domain scrute souvent les p&eacute;riph&eacute;riques SCSI de l'identificateur le plus &eacute;lev&eacute; jusqu'&agrave; l'ID 0, dans l'ordre inverse des autres BIOS SCSI. <CODE>sda</CODE> va alors correspondre au dernier p&eacute;riph&eacute;rique (par analogie avec le DOS, D: au lieu de C:). Vous aurez certainement besoin d'utiliser l'option de surcharge 'disktab' avec LILO.</LI>
</OL>
</P>
<P></P>

<H2>5.12 <A NAME="ss5.12"></A> NCR5380 g&eacute;n&eacute;rique / T130B (standard)</H2>

<P></P>
<P>Configurations support&eacute;es et non support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : Tous
IRQs           : Tous
canaux DMA     : le DMA n'est pas utilise
E/S            : port mappe
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
aucune
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>A la compilation :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
definissez GENERIC_NCR5380_OVERRIDE. Ce doit etre un tableau de
nuplets de la forme {'port', 'irq', 'dma', 'type de carte'}. Par exemple :
#define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}}

pour une carte NCR5380 de port 0x330 et d'IRQ 5.

#define GENERIC_NCR5380_OVERRIDE {{0x350, 5, DMA_NONE, BOARD_NCR53C400}}

pour une carte T130B sur le port 0x350.

Les vieilles versions du code suppriment l'entree BOARD_*.

Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent etre employees pour le
champ IRQ.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ncr5380=port,irq
ncr5380=port,irq,dma
ncr53c400=port,irq

255 peut etre utilise pour 'pas d'irq' et 254 pour 'auto-detection de l'irq'.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> Utilisation d'une carte T130B avec le vieux pilote NCR5380 g&eacute;n&eacute;rique (version 6 pr&eacute;-publique) qui ne g&eacute;rait pas la ligne de commande pour le ncr53c400.
<P>Les registres des cartes compatibles NCR5380 ont un d&eacute;placement de 8 par rapport &agrave; l'adresse de base. Ainsi, si votre adresse est 0x350, utilisez :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ncr5380=0x358,254
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>sur la ligne de commande du noyau.</P>
</LI>
</OL>
</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;gl&eacute;s par une mise &agrave; jour :
<OL>
<LI> Le noyau se bloque lors d'acc&egrave;s disques avec une carte T130B ou d'autres cartes NCR53c400.
<P>Les versions 6 pr&eacute;-publiques du pilote g&eacute;n&eacute;rique NCR5380 ne g&eacute;raient pas les interruptions sur ces cartes.
Mettez &agrave; jour votre pilote.</P>
</LI>
</OL>
</P>
<P>Remarques :
<OL>
<LI> Le pilote g&eacute;n&eacute;rique ne g&egrave;re pas le DMA actuellement et le pseudo-DMA n'est pas mieux support&eacute; par le pilote g&eacute;n&eacute;rique.</LI>
</OL>
</P>
<P></P>

<H2>5.13 <A NAME="ss5.13"></A> NCR53c8xx (standard)</H2>

<P></P>
<P>Configurations support&eacute;es et non support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Adresses de base : Toutes
IRQs             : Toutes
Canaux DMA       : non significatif (PCI)
E/S              : port mappe, controle de bus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
requiert un BIOS PCI, utilise les routines du BIOS PCI pour rechercher les
controleurs et pour lire les donnees de configuration
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Le pilote utilise les valeurs pr&eacute;-programm&eacute;es dans certains regsitres pour son initialisation, aussi un BIOS doit-il &ecirc;tre activ&eacute;.</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;gl&eacute;s par une mise &agrave; jour :</P>
<P>
<OL>
<LI> D'anciennes versions de Linux avaient un probl&egrave;me avec la pagination (swapping). Reportez-vous au chapitre 
<A HREF="SCSI-HOWTO-6.html#SystemHangs">Le syst&egrave;me se fige en swappant</A>
</LI>
<LI> Les noyaux des distributions incluent la version 4 ou 5 du pilote, qui ne g&egrave;re pas certaines fonctionnalit&eacute;s bien utiles comme la d&eacute;connexion / reconnexion (l'effet le plus manifeste en est le blocage complet des p&eacute;riph&eacute;riques SCSI lors du rembobinage d'une bande), contr&ocirc;leurs multiples et op&eacute;rations sans BIOS.
<P>La derni&egrave;re version du pilote est disponible &agrave; l'adresse :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/ncr53c810
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>La versions courante est pour la 1.2.10 (et les derniers patches), bien que la prochaine version soit destin&eacute;e exclusivement aux noyaux 1.3.x. Ces patches ne sont pas totalement propres, &agrave; cause de patches pour le format ELF (et d'autres) qui se trouvaient dans mon arborescence de travail. Si vous ne pouvez pas corriger vous-m&ecirc;mes les (quatre) probl&egrave;mes d'application des patches, ne les utilisez surtout pas. Seul le dernier patch est n&eacute;cessaire ; ce ne sont pas des versions incr&eacute;mentales.</P>
<P>Si vous ne pouvez pas attendre et d&eacute;sirez utiliser le dernier pilote NCR avec un noyau 1.3.x, Harald Evensen &lt;Harald.Evensen@pvv.unit.no&gt; a adapt&eacute; les patches pour les noyaux 1.3.x</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp://ftp.pvv.unit.no/pub/Linux/ALPHA/ncr
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ces patches devraient s'appliquer sans probl&egrave;mes.</P>
<P>S'il vous pla&icirc;t, lisez tous les fichiers README dans ces r&eacute;pertoires. Vous devriez &eacute;galement rejoindre la liste de diffusion NCR si vous &ecirc;tes int&eacute;ress&eacute; &agrave; avoir les derni&egrave;res versions du pilote. Les corrections de bugs interm&eacute;diaires et les annonces sont faites sur cette liste.</P>
<P>Pour vous inscrire, envoyez un courrier &agrave; <CODE>majordomo@colorado.edu</CODE> avec</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
subscribe ncr53c810
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>dans le corps du message. Pour vous retirer de la liste, envoyez &agrave; la m&ecirc;me adresse un message contenant</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
unsubscribe ncr53c810
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>
</LI>
</OL>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> De nombreuses personnes ont rencontr&eacute; des probl&egrave;mes de composants fonctionnant bien sous DOS mais plantant sous Linux avec un probl&egrave;me de temporisation (timeout) lors du test 1 (interruption perdue). 
<A NAME="NCRCommonProblem1"></A> 

<P>Cela est souvent d&ucirc; &agrave; un d&eacute;saccord entre la valeur s&eacute;lectionn&eacute;e par le cavalier r&eacute;glant le niveau d'interruption (IRQ) pour un emplacement ou un p&eacute;riph&eacute;rique de la carte m&egrave;re et la valeur fix&eacute;e dans la CMOS. VERIFIEZ TOUJOURS QUE :
<UL>
<LI> L'IRQ que vous employez est utilis&eacute;e uniquement par le composant NCR de votre carte ou par l'emplacement dans lequel la carte NCR est install&eacute;e</LI>
<LI> Les cavaliers de s&eacute;lection des IRQ pour le composant de la carte ou pour son emplacement correspondent &agrave; la configuration de la CMOS</LI>
<LI> Certaines cartes m&egrave;res PCI savent faire une affectation "automatique" des  IRQ. Cela ne fonctionnera pas.</LI>
</UL>
</P>
<P>Cela peut &eacute;galement &ecirc;tre d&ucirc; aux INTB, INTC ou INTD PCI s&eacute;lectionn&eacute;es sur une carte PCI dans un syst&egrave;me qui ne g&egrave;re que l'INTA PCI. Si vous utilisez une carte NCR qui vous permet de choisir par cavalier la ligne d'interruption PCI utilis&eacute;e, assurez-vous que vous avez configur&eacute; l'INTA.</P>
<P>Enfin, le PCI doit utiliser des interruptions sur niveau (level-sensitive) plut&ocirc;t que sur front (edge triggered). V&eacute;rifiez que votre carte est positionn&eacute;e pour g&eacute;n&eacute;rer des interruptions sur niveau. Si cela ne marche toujours pas, essayez les interruptions sur front, au cas o&ugrave; votre syst&egrave;me serait d&eacute;fectueux.</P>
<P>Ce probl&egrave;me est assez fr&eacute;quent avec quelques cartes Viglen, pour lesquelles la configuration des cavaliers d'interruptions n'est pas document&eacute;e dans le manuel. On m'a dit que ce qui devrait &ecirc;tre une IRQ5 est en fait une IRQ9. Votre cas sera peut-&ecirc;tre diff&eacute;rent.</P>
<P></P>
</LI>
<LI> Des blocages et d'autres probl&egrave;mes apparaissent lors de l'utilisation d'une carte vid&eacute;o PCI S3 928 et Tseng Lab ET4000W32.

Il y a des bugs mat&eacute;riels dans certaines versions de ces composants. Ne les utilisez pas.
</LI>
<LI> Un message au d&eacute;marrage vous indique que l'organisation (mapping) des E/S a &eacute;t&eacute; d&eacute;sactiv&eacute;e parce que les bits 0..1 de l'adresse de base 0 indiquaient un mapping non E/S. Le message exact est :
<PRE>
the I/O mapping was disabled because base address 0 bits 0..1 indicated a
non I/O mapping
</PRE>


Cela est d&ucirc; &agrave; un bug du BIOS sur certaines machines : la lecture double mots de registres de configuration retourne les mots de 16 bits de poids forts et de poids faibles invers&eacute;s.
</LI>
<LI> Certaines machines ont des probl&egrave;mes si l'&eacute;criture diff&eacute;r&eacute;e PCI ou la bufferisation CPU-&gt;PCI sont activ&eacute;es. Si vous avez des probl&egrave;mes, d&eacute;sactivez ces options.
</LI>
<LI> Certains syst&egrave;mes avec le firmware NCR SDMS dans la ROM du BIOS de la carte et dans le BIOS du syst&egrave;me ne sont pas capables de booter sous DOS.
D&eacute;sactiver l'image dans un des BIOS devrait r&eacute;soudre le probl&egrave;me.
</LI>
<LI> Si vous rencontrez le message

<BLOCKQUOTE><CODE>
<PRE>
&quot;scsi%d: IRQ0 not free, detaching&quot;
</PRE>
</CODE></BLOCKQUOTE>


ou

<BLOCKQUOTE><CODE>
<PRE>
&quot;scsi%d: IRQ255 not free, detaching&quot;
</PRE>
</CODE></BLOCKQUOTE>


le composant NCR avait tous ses bits &agrave; 0 ou &agrave; 1 dans le registre de configuration PCI. Soit vous avez des probl&egrave;mes de configuration (reportez-vous au chapitre 
<A HREF="#NCRCommonProblem1">Probl&egrave;mes fr&eacute;quents 1</A>
), soit le BIOS de votre carte m&egrave;re est d&eacute;fectueux.

Un contournement serait d'&eacute;diter le fichier <CODE>drivers/scsi/ncr53c7,8xx.c</CODE> puis de changer <CODE>pci_init()</CODE> pour mettre :

<BLOCKQUOTE><CODE>
<PRE>
irq = my_irq;
</PRE>
</CODE></BLOCKQUOTE>


avant

<BLOCKQUOTE><CODE>
<PRE>
return normal_init (tpnt, board, chip, (int) base,
    (int) io_port, (int) irq, DMA_NONE, 1, bus, device_fn,
    options);
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI> Certains syst&egrave;mes ont des composants BIOS honteusement bugg&eacute;s. Ne faites pas de rapport d'anomalie avant d'&ecirc;tre certain que vous avez re&ccedil;u les plus r&eacute;centes ROM de votre vendeur.
</LI>
<LI> Les lignes de commande <CODE>ncr53c810=xxx</CODE>, etc. ne marchent pas.

Dans les noyaux d'origine, les points d'entr&eacute;e correspondants ne sont intentionnellement pas inclus dans le fichier <CODE>init/main.c</CODE> :

Le pilote fait malgr&eacute; tout des auto-d&eacute;tections pour une carte dont des param&egrave;tres ont &eacute;t&eacute; pass&eacute;s sur la ligne de commande. Ainsi, si une ligne de commande est utilis&eacute;e alors que la carte a &eacute;t&eacute; reconnue par la routine de configuration PCI, vous allez au devant de gros probl&egrave;mes.

La seule raison pour laquelle vous pourriez avoir besoin d'une surcharge par la ligne de commande serait de contourner un bug du mat&eacute;riel PCI et du BIOS. Dans ce cas, certaines routines de correction d'erreurs ne marcheront pas, rendant la surcharge plus qu'inutile.

Enfin, pratiquement toutes les personnes qui _pensent_ avoir besoin d'une surcharge sur la ligne de commande le font parce qu'elles ont eu un message de la part du pilote. Si le pilote vous signale que vous avez une probl&egrave;me de configuration, votre syst&egrave;me est d&eacute;fectueux ou alors vous avez un probl&egrave;me de configuration et aucune ligne de commande ne pourra y rem&eacute;dier.

Si quelqu'un a ajout&eacute; les points d'entr&eacute;e ad&eacute;quats dans le fichier <CODE>init/main.c</CODE> pour les lignes de commande, elle ne sont pas g&eacute;r&eacute;es et peuvent parfaitement ne pas fonctionner.
</LI>
<LI> Certaines cartes NCR (Nexstor est la plus connue) qui n'utilisent pas un BIOS NCR sortent en timeouts. Certaines de ces ROMs g&egrave;rent les transferts synchrones et asynchrones, mais &eacute;tablissent une n&eacute;gociation de transferts synchrones au d&eacute;marrage du syst&egrave;me, ce qui laisse les disques dans un &eacute;tat non d&eacute;fini. Lorsque le pilote NCR Linux issu de la distribution essaie de dialoguer avec ces p&eacute;riph&eacute;riques, il expire en timeout et ne s'en sort pas car il ne fait ni reset du bus, ni ren&eacute;gociation.

Si vous rencontrez ce probl&egrave;me, vous pouvez d&eacute;sactiver les transferts synchrones dans le programme de configuration de la carte ou mettre &agrave; jour votre pilote NCR avec une version r&eacute;cente ALPHA qui sait traiter la n&eacute;gociation synchrone.
</LI>
<LI> Les cartes Tyan S1365 '825 ont des probl&egrave;mes de temporisation (timeouts), tout particuli&egrave;rement lorsque les d&eacute;connexions sont autoris&eacute;es. Les documentations de certaines de ces cartes inversent les positions du cavalier d'activation de la terminaison - si bien que celle-ci est activ&eacute;e alors que vous auriez voulu la d&eacute;sactiver, et inversement.

Essayez de changer la position du cavalier.</LI>
</OL>
</P>
<P>Remarques :
<OL>
<LI> <B>CONFIG_PCI</B> doit &ecirc;tre positionn&eacute;e</LI>
</OL>
</P>
<P></P>

<H2>5.14 <A NAME="ss5.14"></A> Seagate ST0x/Future Domain TMC-8xx/TMC-9xx (standard)</H2>

<P></P>
<P>Configurations support&eacute;es et non support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Adresses de base : 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
IRQs             : 3, 5
Canaux DMA       : le DMA n'est pas utilise
E/S              : mappees en memoire
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
teste uniquement les adresses, le niveau d'interruption (IRQ) etant suppose
valoir 5 ; necessite un BIOS installe.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>A la compilation :
<BLOCKQUOTE><CODE>
<PRE>
Definir OVERRIDE a la valeur de l'adresse de base, CONTROLLER a FD ou SEAGATE
en fonction de la configuration et IRQ a la valeur de niveau d'interruption
de la carte.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
st0x=adresse,irq ou tmc8xx=adresse,irq (uniquement pour les noyau 0.99.13b et
plus recents)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes pr&eacute;historiques, r&eacute;gl&eacute;s par une mise &agrave; jour :</P>
<P>
<OL>
<LI> Les versions des noyaux 0.99.12 et ant&eacute;rieurs avaient un probl&egrave;me d'acquittement (handshaking) avec certains p&eacute;riph&eacute;riques lents. Notamment, voici ce qui se passait lorsque vous &eacute;criviez des donn&eacute;es sur le bus :

<OL>
<LI> &eacute;crire l'octet dans le registre de donn&eacute;e ; le registre de donn&eacute;es est plac&eacute; sur le bus,</LI>
<LI> temps_restant = 12us,</LI>
<LI> attendre tant que temps_restant &gt; 0 et que le signal REQ n'est pas g&eacute;n&eacute;r&eacute;,</LI>
<LI> si temps_restant &gt; 0, g&eacute;n&eacute;rer le signal ACQ,</LI>
<LI> attendre tant que temps_restant &gt; 0 et le signal REQ est g&eacute;n&eacute;r&eacute;,</LI>
<LI> redescendre le signal ACQ</LI>
</OL>


Ce probl&egrave;me apparaissait sur certains p&eacute;riph&eacute;riques lents qui traitaient chaque commande apr&egrave;s l'avoir lue et pour lesquels le protocole REQ/ACQ (requ&ecirc;te / acquittement) prenait plus de 12us - REQ n'&eacute;tait pas faux au moment o&ugrave; le pilote l'attendait, si bien que le pilote finissait pas envoyer plusieurs octets de donn&eacute;es &agrave; chaque impulsion REQ.
</LI>
<LI> Avec Linux 0.99.12, j'ai introduit un bug en corrigeant le code d'arbitrage. Sur certains syst&egrave;mes, la s&eacute;lection des p&eacute;riph&eacute;riques sortait en &eacute;chec. Ce probl&egrave;me a &eacute;t&eacute; corrig&eacute; en 0.99.13.</LI>
</OL>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> Certains commandes sortent en timeouts lorsque Linux essaie de lire une table de partition ou de faire d'autres acc&egrave;s disques.
<P>La carte est fournie avec une configuration pr&eacute;vue par d&eacute;faut pour MSDOS, c'est-&agrave;-dire que les interruptions sont d&eacute;sactiv&eacute;es. Pour les r&eacute;activer sur les cartes Seagate, fermez les pattes F-G (choix de l'IRQ 5) sur le cavalier W3 (ST01) ou JP3 (ST02).</P>
<P></P>
</LI>
<LI> Le pilote ne parvient pas &agrave; g&eacute;rer certains p&eacute;riph&eacute;riques, en particulier des d&eacute;rouleurs de bandes SCSI bon march&eacute; et des lecteurs de CDROM.

La Seagate reporte le protocole REQ/ACQ du bus SCSI dans les signaux IO CHANNEL READY et, &eacute;ventuellement, OWS du bus du PC. Malheureusement, vous n'&ecirc;tes pas averti de l'expiration du timer de surveillance (watchdog timer) et vous n'avez aucun moyen de savoir avec certitude que le signal REQ est descendu ; vous risquez finalement de voir passer une seule impulsion REQ comme plusieurs impulsions REQ.
<P>Etre capable de traiter ce cas implique de mettre en oeuvre une boucle active pour surveiller la descente du signal REQ, avec un d&eacute;lai de surveillance au cas o&ugrave; vous auriez manqu&eacute; la transition &agrave; cause d'une interruption, etc. Vous observerez une d&eacute;gradation des performances ; il pourrait &ecirc;tre judicieux de ne pas appliquer cette m&eacute;thode &agrave; tous les p&eacute;riph&eacute;riques SCSI. La s&eacute;lection peut se faire p&eacute;riph&eacute;rique par p&eacute;riph&eacute;rique via le champ "broken" des entr&eacute;es du tableau <CODE>scsi_devices</CODE>. Si vous avez des probl&egrave;mes, vous pourrez tenter d'ajouter votre p&eacute;riph&eacute;rique &agrave; la liste des &eacute;quipements pour lesquels le champ "broken" n'est pas positionn&eacute; &agrave; 0 (actuellement, il n'y a que les lecteurs de CDROM TENEX).</P>
<P></P>
</LI>
<LI> Une carte Future Domain (en particulier les  840, 841, 880 et 881) ne marche pas.
<P>Quelques-unes des cartes Future Domain utilisent l'organisation (mapping) des registres des Seagate ; les bits MSG et CD du registre d'&eacute;tat sont invers&eacute;s.</P>
<P>Editez le fichier <CODE>seagate.h</CODE>, &eacute;changez les d&eacute;finitions de <B>STAT_MSG</B> et <B>STAT_CD</B> puis recompilez le noyau avec la variable <B>CONTROLLER</B> d&eacute;finie &agrave; <B>SEAGATE</B> et les variables <B>IRQ</B> et <B>OVERRIDE</B> correctement positionn&eacute;es.</P>
<P></P>
</LI>
<LI> Lors d'une tentative de partionnement de votre disque (par fdisk), vous avez un message indiquant que les ioctl HDIO_REQ ou HDIO_GETGEO ont &eacute;chou&eacute;,
ou encore

<PRE>
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
</PRE>


Reportez-vous &agrave; la section 
<A HREF="SCSI-HOWTO-6.html#DiskPartitioning">Partitionnement des disques</A>

</LI>
<LI> Apr&egrave;s avoir sp&eacute;cifi&eacute; manuellement la g&eacute;om&eacute;trie du disque, les essais de lecture de la table des partitions provoquent les messages d'erreurs "partition boundary not on a cylinder boundary", "physical and logical boundaries don't match", etc.

Reportez-vous &agrave; la section 
<A HREF="SCSI-HOWTO-6.html#DiskPartitioning">Partitionnement des disques</A>

</LI>
<LI> Sur certains syst&egrave;me qui fonctionnaient avant la version 0.99.13, les nouvelles versions de Linux &eacute;chouent. Les anciennes versions affectaient les registres CONTROL et DATA dans un ordre diff&eacute;rent de celui expliqu&eacute; dans la documentation Seagate, ce qui perturbait certains syst&egrave;mes. Les nouvelles versions se conforment au document, mais cela perturbe maintenant d'autres syst&egrave;mes.
</LI>
</OL>
</P>
<P>Le code du fichier seagate.c ressemble maintenant &agrave; :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cli();
DATA = (unsigned char) ((1 &lt;&lt; target) | (controller_type == SEAGATE ? 0x80 : 0x40));
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
            (reselect ? CMD_ATTN : 0);
sti();
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Votre probl&egrave;me peut &ecirc;tre corrig&eacute; en changeant ce code en :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cli();
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
            (reselect ? CMD_ATTN : 0);
DATA = (unsigned char) ((1 &lt;&lt; target) | (controller_type == SEAGATE ? 0x80 : 0x40));
sti();
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Constantes :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
FAST ou FAST32 pour la mise en oeuvre de transferts aveugles

ARBITRATE      va forcer le controleur a arbitrer le bus en mode de
               compatibilite SCSI-II, plutot que d'attendre le signal BUS FREE
               avant de continuer. Cela devrait nous permettre de traiter une
               commande par unite logique le jour ou j'integrerai mes
               modifications de reorganisation dans les sources de
               l'arborescence de reference.

SLOW_HANDSHAKE autorise la compatibilite avec des peripheriques deficients,
               qui n'acquittent pas suffisamment rapidement (par exemple
               certains lecteurs de CDROM) pour le code des cartes Seagate.

SLOW_RATE=x,   x etant un entier specifiant un taux de transfert par defaut
               si le protocole d'acquittement (handshaking) ne fonctionne
               pas correctement.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.15 <A NAME="ss5.15"></A> PAS16 SCSI (standard)</H2>

<P></P>
<P>Configurations support&eacute;es et non support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : 0x388, 0x384, 0x38x, 0x288
IRQs           : 10, 12, 14, 15
     IMPORTANT : les IRQ DOIVENT etre differentes des IRQ utilisees par la
                 partie de gestion du son de la carte
DMA            : n'est pas utilise par la partie SCSI de la carte
E/S            : port mappe
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
n'a pas besoin du BIOS
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
A la compilation : definissez PAS16_OVERRIDE comme un tableau de nuplets
de la forme {'port', 'irq'}. Par exemple :

#define PAS16_OVERRIDE {{0x388, 10}}

pour une carte de port 0x388, IRQ 10.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
pas16=port,irq
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Constantes :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
AUTOSENSE  - si elle est definie, la commande SCSI 'REQUEST SENSE' sera
             automatiquement emise pour les commandes qui se terminent
             avec un status 'CHECK CONDITION'.

PSEUDO_DMA - autorise le PSEUDO-DMA materiel ; devrait resulter en un
             gain de performance de l'ordre de x3 / x4 par rapport aux
             E/S scrutees (polled I/O).

PARITY     - activation du controle de parite. N'est pas gere.

SCSI2      - activation de la gestion de 'files marquees' pour le SCSI-II
             (SCSI-II tagged queuing). Non teste.

UNSAFE     - autorise les interruptions pendant les transferts
             pseudo-DMA. Vous activerez cela uniquement si vous avez
             des problemes de perte de caracteres durant les
             communications a haute vitesse. Cependant, meme dans ce cas,
             vous auriez plutot interet a jouer avec les tailles de blocs de
             transfert.

USLEEP     - autorise la gestion des peripheriques qui ne se deconnectent
             pas. Non teste.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> Commandes en timeouts, interruptions, etc.
<P>Utilisez les patches pour les NCR5380 que j'ai post&eacute;s sur le r&eacute;seau il y a quelque temps (ils devraient &ecirc;tre int&eacute;gr&eacute;s dans la prochaine version alpha). Ces patches corrigent un s&eacute;quencement critique (race condition) des pr&eacute;c&eacute;dentes versions du pilote NCR5380. Ils corrigent &eacute;galement un probl&egrave;me de gestion de plusieurs p&eacute;riph&eacute;riques pour les contr&ocirc;leurs bas&eacute;s sur le NCR5380.</P>
<P>Si cela &eacute;choue, vous devrez interdire l'option PSEUDO_DMA en changeant la ligne
<CODE>#define PSEUDO_DMA</CODE> du fichier <CODE>drivers/scsi/pas16.c</CODE> en
<CODE>#undef PSEUDO_DMA</CODE>.</P>
<P>Remarquez que cette solution doit &ecirc;tre consid&eacute;r&eacute;e uniquement en dernier recours, car elle p&eacute;nalise gravement les performances.</P>
</LI>
</OL>
</P>
<P></P>

<H2>5.16 <A NAME="ss5.16"></A> Trantor T128/T128F/T228 (standard)</H2>

<P></P>
<P>Configurations support&eacute;es et non support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Adresses de base :  0xcc000, 00xc8000, 0xdc000, 0xd8000
IRQs             : aucune, 3, 5, 7 (toutes cartes)
                   10, 12, 14, 15 (T128F uniquement)
DMA              : non utilise
E/S              : memoire mappee
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
fonctionne sur toutes les configurations supportees ; necessite un BIOS
installe.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
A la compilation : la variable T128_OVERRIDE doit etre un tableau
de nuplets de la forme {'adresse', 'irq'}. Par exemple :

#define T128_OVERRIDE {{0xcc000, 5}}

pour une carte a l'adresse 0xcc000, IRQ 5.

Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent etre employees pour le
champ IRQ.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ligne de commande du noyau :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
t128=adresse,irq
-1 peut etre utilise pour &quot;pas d'irq&quot;, -2 pour &quot;auto-detection de l'irq&quot;.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Constantes :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
AUTOSENSE  - si elle est definie, la commande SCSI 'REQUEST SENSE' sera
             automatiquement emise pour les commandes qui se terminent
             avec un status 'CHECK CONDITION'.

PSEUDO_DMA - autorise le PSEUDO-DMA materiel ; devrait resulter en un
             gain de performance de l'ordre de x3 / x4 par rapport aux
             E/S scrutees (polled I/O).

PARITY     - activation du controle de parite. N'est pas gere.

SCSI2      - activation de la gestion de 'files marquees' pour le SCSI-II
             
UNSAFE     - autorise les interruptions pendant les transferts
             pseudo-DMA. Vous activerez cela uniquement si vous avez
             des problemes de perte de caracteres durant les
             communications a haute vitesse. Cependant, meme dans ce cas,
             vous auriez tout interet a jouer avec les tailles de blocs de
             transfert.

USLEEP     - autorise la gestion des peripheriques qui ne se deconnectent
             pas. Non teste.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> Commandes en timeouts, interruptions, etc.
<P>Utilisez les patches pour les NCR5380 que j'ai post&eacute;s sur le r&eacute;seau il y quelque
temps (ils devraient &ecirc;tre int&eacute;gr&eacute;s dans la prochaine version alpha). Ces patches corrigent un s&eacute;quencement critique (race condition) des pr&eacute;c&eacute;dentes versions du pilote NCR5380. Ils corrigent &eacute;galement un probl&egrave;me de gestion de plusieurs p&eacute;riph&eacute;riques pour les contr&ocirc;leurs bas&eacute;s sur le NCR5380.</P>
<P>Si cela &eacute;choue, vous devrez interdire l'option PSEUDO_DMA en changeant la ligne
<B>#define PSEUDO_DMA</B> du fichier <CODE>drivers/scsi/pas16.c</CODE> en
<B>#undef PSEUDO_DMA</B>.</P>
<P>Remarquez que cette solution doit &ecirc;tre consid&eacute;r&eacute;e uniquement en dernier recours,
car elle p&eacute;nalise gravement les performances.</P>
</LI>
</OL>
</P>
<P></P>

<H2>5.17 <A NAME="ss5.17"></A> Ultrastor 14f (ISA), 24f (EISA), 34f (VLB) (standard)</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
IRQs           : 10, 11, 14, 15
Canaux DMA     : 5, 6, 7
E/S            : port mappe, controle de bus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ne marche pas pour les cartes sur le port 0x310. Le BIOS n'est pas necessaire.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Surcharge de l'auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
uniquement a la compilation (definissez PORT_OVERRIDE)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> L'adresse 0x310 n'est pas reconnue par le code d'auto-d&eacute;tection et peut cr&eacute;er des conflits si le r&eacute;seau est activ&eacute;.

Utilisez une adresse diff&eacute;rente.
</LI>
<LI> L'utilisation d'une carte Ultrastor &agrave; l'adresse 0x330 peut provoquer des blocages du syst&egrave;me lorsque les pilotes sons sont en phase d'auto-d&eacute;tection.

Utilisez une adresse diff&eacute;rente.
</LI>
<LI> D'autres pilotes effectuent des auto-d&eacute;tections dangereuses &agrave; diverses adresses. Si vous avez des probl&egrave;mes de d&eacute;tection ou si le syst&egrave;me se bloque au d&eacute;marrage, essayez une autre adresse.

0x340 est r&eacute;put&eacute;e &ecirc;tre une adresse qui marche.
</LI>
<LI> Linux ne d&eacute;tecte aucun p&eacute;riph&eacute;rique SCSI, mais reconna&icirc;t votre disque dur connect&eacute; &agrave; une carte SCSI Ultrastor comme un disque normal, sans que le pilote de disque arrive &agrave; le g&eacute;rer. Notez que lorsque cela se produit, vous avez probablement le message

<BLOCKQUOTE><CODE>
<PRE>
hd.c: ST-506 interface disk with more than 16 heads detected,
probably due to non-standard sector translation.  Giving up.
(disk %d: cyl=%d, sect=63, head=64)
</PRE>
</CODE></BLOCKQUOTE>


Si c'est le cas, vous utilisez la carte Ultrastor en mode &eacute;mulation WD1003. Vous devez alors :

<OL>
<LI> basculer la carte Ultrastor en mode natif. C'est ce qu'il y a de mieux &agrave; faire, &eacute;tant donn&eacute; que les disques SCSI sont sensiblement plus rapides que les disques IDE, sp&eacute;cialement avec les patches de lectures/&eacute;critures group&eacute;es. Certains ont obtenu des d&eacute;bits soutenus de plus de 2Mo/s &agrave; travers le syst&egrave;me de gestion de fichiers, apr&egrave;s application de ces patches.

Notez que cela ne sera pas n&eacute;cessaire si vous n'utilisez pas de disque dur ou si vous branchez plus de deux disques durs sur la carte Ultrastor.
</LI>
<LI> utilisez la ligne de commande du noyau

<BLOCKQUOTE><CODE>
<PRE>
hd=cylindres,tetes,secteurs
</PRE>
</CODE></BLOCKQUOTE>


pour surcharger les param&egrave;tres de configuration par d&eacute;faut, de mani&egrave;re &agrave; pouvoir d&eacute;marrer vous-m&ecirc;me, tout en vous assurant que le nombre de cylindres &lt;= 2048, le nombre de t&ecirc;tes &lt;= 16 et le nombre de secteurs &lt;= 255 soient tels que cylindres * t&ecirc;tes * secteurs soit le m&ecirc;me dans les deux repr&eacute;sentations.

Vous devez &eacute;galement pr&eacute;ciser la g&eacute;om&eacute;trie du disque au moment d'utiliser fdisk sous Linux. Si vous omettez de le faire, de mauvaises valeurs risqueraient d'&ecirc;tre &eacute;crites dans la table des partitions. Ces valeurs seront correctes pour Linux, mais provoqueront des erreurs sous MSDOS, qui se base sur les triplets &lt;t&ecirc;te/cylindre/secteur&gt; de la table des partitions.

Une fois que Linux a d&eacute;marr&eacute;, vous pouvez vous &eacute;pargner la peine de pr&eacute;ciser manuellement &agrave; chaque d&eacute;marrage la g&eacute;om&eacute;trie en modifiant comme il le faut la macro HD_TYPE du fichier <CODE>include/linux/config.h</CODE> et en recompilant le noyau.</LI>
</OL>

</LI>
</OL>
</P>
<P></P>

<H2>5.18 <A NAME="ss5.18"></A> Western Digital 7000 (standard)</H2>

<P></P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Adresses du BIOS : 0xce000
Ports            : 0x350
IRQs             : 15
Canaux DMA       : 6
E/S              : port mappe, controle de bus
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auto-d&eacute;tection :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
necessite un BIOS active.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Probl&egrave;mes fr&eacute;quents :</P>
<P>
<OL>
<LI> Il existe plusieurs versions du composant et du firmware. La version 3 de la carte est connue pour ne pas fonctionner, alors que les cartes de version 5 marchent. De m&ecirc;me, les composants sans suffixe ne fonctionnent pas, alors que ceux marqu&eacute;s d'un 'A' marchent.
</LI>
<LI> La carte g&egrave;re quelques adresses BIOS qui n'apparaissent pas dans la liste des adresses support&eacute;es. Si vous vous trouvez dans cette situation, utilisez une des adresses support&eacute;es et envoyez un rapport d'anomalie suivant la proc&eacute;dure d&eacute;crite dans le chapitre 
<A HREF="SCSI-HOWTO-3.html#BugReport">Signaler une anomalie</A>
.</LI>
</OL>
</P>
<P></P>

<H2>5.19 <A NAME="ss5.19"></A> AM53/79C974 (ALPHA)</H2>

<P></P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/AM53C974-0.3.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Configurations support&eacute;es :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Ports          : Tous
IRQs           : Tous
Canaux DMA     : 6
E/S            : port mappe, controle de bus (sans intelligence)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>5.20 <A NAME="ss5.20"></A> qlogic (standard)</H2>

<P>H&eacute;, Drew, o&ugrave; est ce chapitre (I (D.F.). Je ne l'ai vu que dans la table des mati&egrave;res ;-) ?</P>
<P></P>

<HR>
<P>
Chapitre <A HREF="SCSI-HOWTO-6.html">suivant</A>,
Chapitre <A HREF="SCSI-HOWTO-4.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="SCSI-HOWTO.html#toc5">ce chapitre</A>,
 <A HREF="SCSI-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="SCSI-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>