
                              Le SCSI HOWTO Linux

par Drew Eckhardt,<drew@PoohSticks.ORG> (transform au format linuxdoc-sgml par
Dieter Faulbaum), <faulbaum@bii.bessy.de> (Adaptation franaise : Thierry Danis
thierry.danis@hol.fr, le 28 Novembre 1997).

   Version 2.30, 30 Aot 1996

1. Introduction

   _Copyright_

   Ce document est distribu sous les contraintes de la GPL (GNU Public
   Licence). Les lignes suivantes sont le texte intgral anglais de la
   licence.

This documentation is free documentation; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This documentation is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this documentation; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

   En dehors de l'aspect GPL, j'apprcierais que les personnes
   intresses  publier ce document me demandent (<drew@PoohSticks.ORG>)
   auparavant si une version plus rcente existe. A chaque fois qu'une
   version un peu ancienne est publie, on me pose des questions qui ont
   dj leur rponse dans les derniers documents, et la rputation de
   l'diteur en fait les frais. Je prfrerais galement que toute
   rference  un site de distribution gratuit, voire  des distributeurs
   commerciaux, soit laisse intacte.

   IMPORTANT:

   LES RAPPORTS D'ANOMALIES ET AUTRES APPELS A L'AIDE QUI NE SUIVENT PAS
   LES PROCEDURES DECRITES DANS LA SECTION Signaler une anomalie SERONT
   IGNORES.

   Ce HOWTO couvre le sous-systme SCSI de Linux, tel qu'il existe dans
   le noyau version 1.2.10 et dans des codes alpha plus rcents. Les
   versions plus vieilles du code SCSI ne sont _plus supportes_ et
   peuvent diffrer sensiblement en ce qui concerne les pilotes
   implments, les performances et les options disponibles.

   Pour toute information supplmentaire, vous pouvez vous inscrire  la
   liste de diffusion linux-scsi, en envoyant un email 
   majordomo@vger.rutgers.edu contenant la ligne suivante dans le corps
   du message :

subscribe linux-scsi

   Vous pouvez vous radier de la liste en envoyant un email  la mme
   adresse contenant dans le corps du message :

unsubscribe linux-scsi

   Une fois votre inscription effective, vous pouvez envoyer des emails
   dans la liste de diffusion  l'adresse suivante :

linux-scsi@vger.rutgers.edu

   Je suis conscient que ce document n'est pas des plus conviviaux et
   qu'il comporte certainement des erreurs et des imprcisions. Si vous
   avez des remarques constructives, n'hsitez pas  me les poster.

2. Les problmes courants

   Ce chapitre recense un certain nombre de problmes habituellement
   rencontrs. S'il n'y a rien ici qui rponde  vos questions, consultez
   galement les chapitres relatifs aux cartes d'interface et aux
   priphriques.

2.1 Dysfonctionnement gnralis

   Si vous rencontrez des erreurs alatoires, il y a fort  parier que la
   cause en est un cble dfectueux ou une mauvaise terminaison.

   Certaines cartes, comme celles architectures autour du rcent
   composant NCR, effectuent un filtrage numrique et une ngociation
   active de signal et sont par le fait moins sensibles aux problmes de
   connectique.

   D'autres cartes, comme par exemple les Adaptec 154xC, 154xCF et 274x,
   sont _extrmement_ sensibles et peuvent ne plus fonctionner avec
   certains cordons qui ne perturberaient pas d'autres cartes.

   Je le rpte donc : certaines cartes sont _trs_ sensibles aux
   problmes de mauvais cbles et de terminaison, aussi est-il important
   de vrifier ces deux points avant toute chose lorsque des problmes
   apparaissent.

   Pour diminuer les risques potentiels, vous devez utiliser des cbles
   qui :
    1. se prvalent d'une compatibilit SCSI-II,
    2. ont une impdance caractristique de 132 ohms,
    3. proviennent tous d'une mme source, afin d'viter les carts
       d'impdance,
    4. sont proposes par un vendeur rput (tel qu'Amphenol).

   Un lger courant pour la terminaison doit tre fourni par chaque
   quipement prsent sur le bus SCSI, via une diode pour prvenir tout
   retour de tension. De cette manire, une tension suffisante est
   disponible en bout de chane, l o le bus en a besoin. Pour prvenir
   tout endommagement d  un court-circuit, TERMPWR doit tre contrl
   au travers d'un fusible ou de tout autre dispositif de limitation du
   courant.

   Si plusieurs quipements, des cbles externes ou un FAST SCSI 2 sont
   utiliss, une terminaison -- active ou force -- parfaite doit tre
   mise  chaque extrmit du bus.

   Reportez-vous  la FAQ Comp.Periphs.Scsi (disponible sur tsx-11 dans
   /pub/linux/ALPHA/scsi) pour plus de renseignements sur les
   terminaisons actives.

2.2 La ligne de commande du noyau

   D'autres parties du document feront plus tard rfrence  la "ligne de
   commande du noyau".

   La ligne de commande du noyau est un ensemble d'options que vous
   pouvez spcifier, soit aprs le nom de l'image  l'invite de LILO
   (LILO : ), soit dans un champ "append" du fichier de configuration de
   LILO (LILO 0.14 et suprieurs utilisent le fichier /etc/lilo.conf, les
   versions prcdentes /usr/lilo/config).

   Dmarrez votre systme avec LILO et appuyez sur une des touches ALT,
   CTRL ou SHIFT, au moment o il affiche le prompt. LILO devrait
   rpondre par :

:

   A cet instant, vous pouvez slectionner l'image du noyau sur lequel
   continuer le dmarrage (en tapant son label) ou avoir la liste des
   images, en apppuyant sur ?. Par exemple :

:?

ramdisk floppy disquedur

   Pour dmarrer (booter) le noyau avec la ligne de commande que vous
   avez choisie entrez simplement le nom du noyau, suivi d'une liste
   d'options. Chaque option est spare de la prcdente par un espace.
   L'appui sur ENTREE valide la ligne et continue le processus de
   dmarrage.

   Les options sont de la forme :

variable=liste_de_valeurs

   Ici, _liste_de_valeurs_ peut tre une simple valeur ou une liste de
   valeurs dlimites par des virgules, sans espaces. Exception faite de
   la spcification du priphrique de boot, chaque valeur doit tre
   numrique et peut tre fournie en dcimal ou en hxadcimal.

   Par exemple, pour dmarrer Linux avec une carte compatible Adaptec
   1520 non reconnue au dmarrage, vous pourriez entrer :

:floppy aha152x=0x340,11,7,1

   Si vous ne tenez pas  taper cette commande  chaque dmarrage du
   systme, il est galement possible d'utiliser l'option "append" dans
   le fichier de configuration de LILO (LILO 0.13 et plus).

   Cela donnera une ligne du genre :

append="aha152x=0x340,11,7,1"

2.3 Un priphrique apparat  toutes les adresses SCSI

   Si c'est le cas, vous avez certainement slectionn comme adresse pour
   ce priphrique la mme adresse que le contrleur (traditionnellement
   l'adresse 7, bien que quelques cartes soient configures autrement,
   comme certaines Future Domain fixes  6 par exemple).

   Changez la configuration des cavaliers.

2.4 Le mme priphrique est reconnu  chaque unit logique

   Ce priphrique a certainement un firmware bugg.

   Une solution temporaire consiste  utiliser la ligne de commande
   suivante :

max_scsi_luns=1

   Si cela marche, vous pouvez ajouter votre priphrique  la liste des
   priphriques buggs, dans les sources du noyau. La variable en
   question s'appelle _blacklist_ et se trouve dans le fichier
   drivers/scsi/scsi.c. Envoyez ensuite le patch  Linus Torvalds
   <Linus.Torvalds@cs.Helsinki.FI>.

2.5 Vous avez des 'sense errors' alors que vous savez que votre matriel n'a
pas d'erreurs

   Cela est parfois d  un mauvais cordon ou  une terminaison mal
   adapte.

   Rfrez-vous au chapitre Dysfonctionnement gnralis.

2.6 Un noyau configur avec support rseau ne marche pas

   Les routines d'auto-dtection pour la plupart des cartes rseau ne
   sont pas passives. Il se peut qu'elles entrent en conflit avec
   certaines cartes SCSI et qu'elles en perturbent le bon fonctionnement.

2.7 Des priphriques sont dtects, mais il est impossible d'y accder

   Un priphrique SCSI a t dtect par le noyau mais vous tes
   incapable d'y accder (les commandes mkfs /dev/sdc, tar xvf /dev/st2
   par exemple chouent).

   Vous n'avez pas de fichier spcial /dev/xxx pour votre priphrique.

   Sous Unix, les priphriques sont en mode bloc ou en mode caractre.
   Les priphriques en mode bloc utilisent un mcanisme de cache, alors
   que les priphriques en mode caractre ne sont pas bufferiss. Un
   priphrique est donc dfini sous Unix par son mode (bloc ou
   caractre), son numro majeur (ce numro correspond au pilote qui le
   gre -- ainsi, le majeur mode bloc 8 correspond aux disques SCSI) et
   un numro mineur (ce mineur dfinit quelle unit est accde via cette
   spcification de priphrique -- ainsi, le priphrique rfrenc par
   le majeur caractre 4 et le mineur 0 est la premire console
   virtuelle, mineur 1 est la console suivante, etc.). Cependant, accder
   aux priphriques par un espace de nommage spar romprait la
   tradition d'Unix/Linux ('tout est fichier' !). C'est pourquoi des
   fichiers spciaux sont crs sous /dev. Ces fichiers spciaux vous
   permettront d'accder directement  votre troisime disque SCSI via
   /dev/sdc, au premier port srie via /dev/ttyS0, etc.

   La meilleure mthode pour crer un fichier spcial est d'utiliser le
   script MAKEDEV :

   cd /dev

   puis

   MAKEDEV (en tant que root) pour les priphriques que vous voulez
   crer. Par exemple :

 ./MAKEDEV sdc

   Les caractres gnriques "devraient" marcher. Par exemple :

 ./MAKEDEV sd\*

   "devrait" crer les entres pour tous les disques SCSI (la commande
   prcdente devrait avoir cr /dev/sda  /dev/sdp, avec 15
   sous-partitions pour chaque disque).

 ./MAKEDEV sdc\*

   "devrait" crer les entres pour /dev/sdc et ses 15 sous-partitions
   possibles (/dev/sdc1, /dev/sdc2, etc.).

   J'ai dit "devrait" parce que c'est le comportement standard d'Unix --
   le script MAKEDEV de votre installation pourrait ne pas se conformer 
   cette faon de faire ou pourrait avoir restreint le nombre de fichiers
   spciaux qu'il peut crer, auquel cas ce qui prcde ne serait plus
   tout  fait vrai.

   Si MAKEDEV ne fait pas le travail pour vous, vous allez devoir crer
   les fichiers spciaux  la main grce  la commande _mknod_.

   Le mode (bloc ou caractre), le majeur et le mineur sont prciss pour
   les divers priphriques SCSI dans le chapitre Fichiers spciaux.

   Notez les valeurs trouves dans ce chapitre et tapez (en tant que
   root) :

mknod /dev/priphrique b|c majeur mineur

   par exemple :

mknod /dev/sdc b 8 32
mknod /dev/st0 c 9 0

2.8 Le SCSI se bloque

   Il peut y avoir de nombreuses raisons au blocage du bus.
   Eventuellement, reportez-vous au chapitre ddi  votre carte pour
   plus de dtails.

   Certains cas de blocage semblent se produire lorsque plusieurs
   priphriques sont en cours d'utilisation simultanment. Si cela vous
   arrive, essayez de contacter le fabricant des priphriques et
   regardez s'il n'existe pas des mises  jour de firmware qui
   rsoudraient le problme. A l'occasion, essayez de changer de cble ou
   branchez les priphriques sur une autre machine.

   Il se peut galement que ce soit d  des secteurs dfectueux sur un
   des disques ou encore  une mauvaise gestion du DMA (Direct Memory
   Access) par la carte mre (pour les cartes d'interface qui travaillent
   en DMA). En fait, tout un tas d'autres raisons peut expliquer un
   blocage du bus.

   De temps en temps, comme nous venons de le signaler, des cas de
   blocage apparaissent lorsque plusieurs priphriques sont utiliss en
   mme temps sur le bus. Si votre contrleur est capable de traiter
   plusieurs requtes en mme temps, essayer de rduire la taille de la
   queue  1 et regardez si la situation s'amliore. Cela tant, si vous
   utilisez des priphriques lents (lecteurs de bandes ou lecteurs de
   CDROM peu rapides), rduire ainsi la taille de la queue n'est
   certainement pas la meilleure solution.

2.9 Configurer et regnrer le noyau

   Les pilotes SCSI non utiliss consomment inutilement de prcieux
   octets et peuvent amener les systmes possdant peu de mmoire  en
   manquer (la mmoire du noyau est non paginable (swappable)). Pour
   cette raison, il est recommand de gnrer un noyau ne comportant que
   le strict ncessaire pour votre machine.

cd /usr/src/linux

   Si vous comptez utiliser une partition racine (root device) autre que
   la partition racine courante ou une rsolution autre que du VGA 80x25,
   voire si vous gnrez une disquette de dmarrage, ditez le makefile
   et assurez-vous que les lignes

ROOT_DEV =

   et

SVGA_MODE =

   sont correctement positionnes.

   Si vous avez appliqu des patches, assurez-vous que vous tous vos
   fichiers sont correctement recompils. Dans le doute, tapez :

make mrproper

   Dans tous les cas, vous devrez configurer le noyau :

make config

   Rpondez aux questions. Aprs avoir sauvegard votre configuration,
   regnrez les dpendances et recompilez le noyau :

make depend
make

   Une fois la gnration du noyau termine, n'oubliez pas de relancer
   lilo (_/sbin/lilo_). Vous pouvez galement construire une disquette de
   dmarrage :

make zdisk

2.10 Les units logiques autres que la premire ne fonctionnent pas

   De nombreux priphriques SCSI verrouillent compltement le bus ou
   ragissent bizarrement lorsque vous tentez d'accder  une unit
   logique (LUN) qui n'est pas l'unit 0. C'est pourquoi les versions
   rcentes du noyau Linux n'essaient plus par dfaut de tester les
   units logiques autres que 0. Si cela vous gne, vous pouvez
   positionner max_scsi_luns sur la ligne de commande du noyau ; vous
   pouvez aussi recompiler le noyau en positionnant l'option
   CONFIG_SCSI_MULTI_LUN au moment de la configuration.

   Il est habituel de mettre

max_scsi_luns=8

   sur la ligne de commande de LILO.

   Si, malgr tout, vos units logiques ne sont toujours pas correctement
   dtectes (cela peut arriver avec de vieux contrleurs SCSI->MFM, RLL,
   ESDI ou SMD), essayez de supprimer le petit bout de code suivant de la
   fonction scan_scsis() du fichier drivers/scsi/scsi.c :

/* Some scsi-1 peripherals do not handle lun != 0.
   I am assuming that scsi-2 peripherals do better */
if((scsi_result[2] & 0x07) == 1 &&
   (scsi_result[3] & 0x0f) == 0) break;

3. Signaler une anomalie

   Soumis  des contraintes de place, les dveloppeurs des parties SCSI
   de Linux ne maintiennent pas obligatoirement les vieilles versions du
   code. Si vous ne tournez pas avec la dernire version du noyau (la
   plupart des distributions de Linux, (MCC, SLS, Yggdrasil, etc.)
   peuvent avoir jusqu' une vingtaine de patches de retard sur le
   dernier noyau), il y a une forte probabilit pour que vous ne soyez
   pas capable de rsoudre votre problme. Avant de signaler une
   anomalie, vrifiez si elle existe encore avec la toute dernire
   version du noyau.

   Si aprs avoir mis  jour votre noyau et lu entirement ce document,
   vous pensez vraiment avoir dcouvert un problme, envoyez par email un
   rapport d'anomalie  la liste de diffusion SCSI, o il aura des
   chances d'tre lu par la plupart des personnes ayant particip au
   dveloppement des pilotes SCSI pour Linux.

   Mettez dans votre rapport d'anomalie le maximum d'information sur
   votre configuration matrielle, le texte exact des messages que Linux
   affiche au dmarrage, le moment o l'erreur se produit et  quel
   endroit dans les sources l'erreur a t leve. Rfrez-vous aux
   chapitres Capture des messages SCSI et Localisation de l'origine d'un
   panic().

   Des informations incompltes peuvent conduire  de mauvais diagnostics
   ou  un classement vertical de la part du dveloppeur du pilote, qui
   risque d'estimer qu'il a plus important  corriger.

   Retenez bien ceci : si nous ne pouvons pas reproduire le problme et
   si vous ne pouvez pas nous dire ce qui ne marche pas, l'anomalie ne
   sera jamais corrige.

3.1 Capture des messages SCSI

   Si aucun archiveur (logger) de messages ne tourne, il va falloir en
   lancer un. Vrifiez que le systme de fichiers /proc est mont :

grep proc /etc/mtab

   S'il ne l'est pas, il faut le monter :

mkdir /proc
chmod 755 /proc
mount -t proc /proc /proc

   Recopiez ensuite la version du noyau et ses messages dans un fichier
   de log :

cat /proc/version > /tmp/log
cat /proc/kmsg >> /tmp/log

   Attendez une seconde ou deux (le temps que le _cat /proc/kmsg_ se
   termine) puis tapez CTRL-C.

   Si un logger de messages tourne, vous allez devoir chercher dans le
   fichier de traces adquat (jetez un oeil  /etc/syslog.conf pour
   trouver o se cache ce fichier). Vous pouvez aussi taper la commande
   _dmesg_.

   Si Linux n'est pas lanc, formatez une disquette sous DOS. Si votre
   distribution monte la disquette en tant que racine (root) plutt qu'un
   disque RAM, vous allez devoir formater une disquette et la mettre dans
   le lecteur non utilis par la racine (si vous disposez de deux
   lecteurs). Si vous n'avez pas de second lecteur, il vous faudra
   utiliser l'option de dmarrage 'ramdisk'.

   Maintenant, dmarrez depuis la disquette de boot de votre
   distribution, de prfrence en mode utilisateur simple (single user)
   et en demandant  placer la racine (root) dans un disque RAM.

mkdir /tmp/dos

   Insrez la disquette dans un lecteur non utilis pour monter la racine
   et montez-la :

mount -t msdos /dev/fd0 /tmp/dos

   ou

mount -t msdos /dev/fd1 /tmp/dos

   Copiez-y ensuite votre fichier de traces :

cp /tmp/log /tmp/dos/log

   Dmontez votre disquette DOS

umount /tmp/dos

   et arrtez Linux.

shutdown

   Redmarrez sous DOS puis incluez le fichier de traces dans votre mail.

3.2 Localisation de l'origine d'un panic()

   Ainsi que d'autres Unix le font, Linux appelle la fonction du noyau
   panic() lorsqu'une erreur fatale est dtecte. Par contre,
   contrairement  d'autres Unix, Linux ne produit pas un fichier de dump
   dans la swap. Il ne redmarre pas non plus. Il laisse dans le fichier
   de traces des informations intressantes. Par exemple :

Unable to handle kernel NULL pointer dereference at virtual address c0000004
current->tss,cr3 = 00101000, %cr3 = 00101000
*pde = 00102027
*pte = 00000027
Oops: 0000
EIP:    0010:0019c905
EFLAGS: 00010002
eax: 0000000a   ebx: 001cd0e8   ecx: 00000006   edx: 000003d5
esi: 001cd0a8   edi: 00000000   ebp: 00000000   esp: 001a18c0
ds: 0018   es: 0018   fs: 002b   gs: 002b   ss: 0018
Process swapper (pid: 0, process nr: 0, stackpage=001a09c8)
Stack: 0019c5c6 00000000 0019c5b2 00000000 0019c5a5 001cd0a8 00000002 00000000
       001cd0e8 001cd0a8 00000000 001cdb38 001cdb00 00000000 001ce284 0019d001
       001cd004 0000e800 fbfff000 0019d051 001cd0a8 00000000 001a29f4 00800000
Call Trace: 0019c5c6 0019c5b2 0018c5a5 0019d001 0019d051 00111508 00111502
            0011e800 0011154d 00110f63 0010e2b3 0010ef55 0010ddb7
Code: 8b 57 04 52 68 d2 c5 19 00 e8 cd a0 f7 ff 83 c4 20 8b 4f 04
Aiee, killing interrupt handler
kfree of non-kmalloced memory: 001a29c0, next= 00000000, order=0
task[0] (swapper) killed: unable to recover
Kernel panic: Trying to free up swapper memory space
In swapper task - not syncing

   Prenez la valeur hexadcimale du registre EIP (le compteur de
   programme ; ici, en l'occurence, 19c905). Cherchez ensuite dans le
   fichier /usr/src/linux/zSystem.map (ou le fichier System.map
   correspondant au noyau que vous tes en train d'excuter) la plus
   grande valeur infrieure  la valeur du registre EIP. Par exemple,

0019a000 T _fix_pointers
0019c700 t _intr_scsi
0019d000 t _NCR53c7x0_intr

   indique dans quelle fonction l'erreur fatale s'est produite.
   Recompilez ce fichier en ayant autoris les options de debug (vous
   pouvez aussi les autoriser  un niveau plus global en ditant le
   fichier /usr/src/linux/Makefile et en ajoutant l'option "-g"  la
   variable CFLAGS).

#
# standard CFLAGS
#

   Par exemple :

CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe

   devient

CFLAGS = -g -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe

   Regnrez le noyau, incrmentalement ou en tapant

make clean
make

   Rendez le noyau dmarrable (bootable) en crant une entre dans le
   fichier /etc/lilo.conf :

image = /usr/src/linux/zImage
label = experimental

   N'oubliez pas de relancer LILO en tant que root (_/sbin/lilo_). Vous
   pouvez aussi crer une disquette de dmarrage :

make zImage

   Redmarrez et notez le nouvel EIP pour l'erreur.

   Si vous avez install script, lancez-le ; il va tracer toute votre
   session dans un fichier.

   Maintenant, lancez

gdb /usr/src/linux/tools/zSystem

   et tapez

info line *<votre EIP>

   Par exemple,

info line *0x19c905

   GDB devrait rpondre quelque chose du genre

(gdb) info line *0x19c905
Line 2855 of "53c7,8xx.c" starts at address 0x19c905 <intr_scsi+641&>
   and ends at 0x19c913 <intr_scsi+655>.

   Mmorisez cette information. Entrez ensuite

list <numro de ligne>

   Par exemple,

(gdb) list 2855
2850    /*      printk("scsi%d : target %d lun %d unexpected disconnect\n",
2851                host->host_no, cmd->cmd->target, cmd->cmd->lun); */
2852            printk("host : 0x%x\n", (unsigned) host);
2853            printk("host->host_no : %d\n", host->host_no);
2854            printk("cmd : 0x%x\n", (unsigned) cmd);
2855            printk("cmd->cmd : 0x%x\n", (unsigned) cmd->cmd);
2856            printk("cmd->cmd->target : %d\n", cmd->cmd->target);
2857            if (cmd) {;
2858                abnormal_finished(cmd, DID_ERROR << 16);
2859            }
2860            hostdata->dsp = hostdata->script + hostdata->E_schedule /
2861                sizeof(long);
2862            hostdata->dsp_changed = 1;
2863        /* SCSI PARITY error */
2864        }
2865
2866        if (sstat0_sist0 & SSTAT0_PAR) {
2867            fatal = 1;
2868            if (cmd && cmd->cmd) {
2869                printk("scsi%d : target %d lun %d parity error.\n",

   quit vous permet de sortir de GDB.

   Sauvegardez galement cette information, car elle permettra de fournir
   le contexte dans lequel l'erreur s'est produite, pour le cas o les
   dveloppeurs n'auraient pas exactement la mme arborescence.

4. Les modules

   Ce chapitre fournit des dtails spcifiques sur le support des modules
   chargeables et sur la manire dont ces modules sont utiliss avec le
   SCSI.

4.1 Informations gnrales

   Les modules chargeables permettent  l'utilisateur ou 
   l'administrateur du systme d'tendre les fonctionnalits du noyau en
   y chargeant des fichiers objet. L'utilisation la plus courante des
   modules est l'ajout de pilotes pour de nouveaux priphriques ou la
   prise en compte de diffrents types de systmes de fichiers.

   L'utilisation des modules pour le SCSI prsente plusieurs avantages.
   Un de ceux-ci est que le responsable d'un parc important de machines
   n'a  grer qu'un seul noyau pour tout le parc et n'a plus qu'
   charger les modules ncessaires machine par machine.

   Pour ceux qui ont l'intention de crer une nouvelle distribution, il
   est possible de lancer un script depuis la disquette de dmarrage qui
   va demander  l'utilisateur quels modules sont  charger. Cela permet
   de gagner de la mmoire (qui serait gaspille si le noyau contenait
   tous les pilotes) et cela rduit le risque que l'auto-dtection d'une
   carte vienne perturber le fonctionnement d'autres cartes.

   Les modules sont parfaits pour les portables, qui ont tendance  tre
   moins fournis que leurs grands frres de bureaux. Dans ce cas, un
   noyau aussi rduit que possible avec chargement des modules  la
   demande est l'idal. De plus, les modules sont bien adapts au
   mcanisme des cartes PCMCIA, puisqu'ils peuvent tre chargs puis
   dchargs au gr des insertions/retraits des cartes PCMCIA. (Note :
   actuellement, les pilotes qlogic et 152x supportent le PCMCIA).

   Un dernier avantage des modules est que les dveloppeurs de pilotes
   ont plus de facilit  mettre au point et tester leurs pilotes si
   ceux-ci sont sous forme de modules (il n'est plus ncessaire de
   redmarrer la machine  chaque essai,  condition bien sr que le
   pilote ne soit pas bugg au point qu'il ait mis en rideau le PC).

   Mais, il y a toujours un mais, les modules ont aussi leurs
   limitations. Si votre partition racine (root) est sur un priphrique
   SCSI, vous ne serez pas capable d'utiliser les versions 'modularises'
   des pilotes SCSI ncessaires  l'accs  votre disque. Cela est d au
   fait que le noyau doit tre capable de monter la partition racine
   avant de pouvoir charger le moindre module depuis le disque. Cela
   tant, des rflexions sont en cours pour modifier le chargeur et le
   noyau de manire  ce que celui-ci soit capable de prcharger des
   modules avant d'essayer de monter la partition racine. Il est fort
   probable qu' l'avenir la limitation actuelle ne soit plus de mise.

4.2 Le support des modules dans les noyaux 1.2.N

   Les modules noyau pour le SCSI sont partiellement supports dans la
   srie 1.2.N du noyau. Alors qu'aucun des pilotes de haut niveau
   (disque, bande, etc.) ne peut tre modularis, la plupart des pilotes
   de bas niveau peuvent tre chargs et dchargs  la demande (par
   exemple les 1542 et 1522). Chaque fois qu'un pilote de bas niveau est
   charg, il commence par rechercher les cartes qu'il peut grer.
   Ensuite, pour chaque carte dtecte, le bus SCSI est scrut et des
   structures de donnes internes sont renseignes, si bien qu'il sera
   possible d'utiliser tous les priphriques attachs aux cartes
   reconnues.

   Lorsque vous en avez termin avec un pilote de bas niveau, celui-ci
   peut tre dcharg. Gardez  l'esprit que l'utilisation d'un pilote se
   fait au travers des montages, des fichiers ouverts, etc. Si vous
   essayez de dcharger un module en cours d'utilisation (utilitaire
   _rmmod_), le noyau va refuser le retrait du pilote. Lorsqu'un pilote
   est dcharg, toutes ses structures internes sont libres, si bien
   que le systme retourne dans l'tat o il se trouvait avant
   l'insertion du module. Vous pourrez recharger le pilote plus tard si
   vous le dsirez.

4.3 Le support des modules dans les noyaux 1.3.N

   Le code SCSI a t compltement modularis dans les noyaux 1.3.N. Vous
   pouvez donc dmarrer avec un noyau n'ayant aucun support SCSI, les
   modules se chargeant par la suite, jusqu' ce que tous les
   priphriques SCSI possibles soient accessibles.

   Si vous le voulez, vous pouvez intgrer dans le noyau une certaine
   partie du code SCSI et charger le reste plus tard sous forme de
   modules. Tout cela dpend entirement de vous.

   Si vous dmarrez avec un noyau qui n'a aucun support SCSI, vous devrez
   commencer par charger la base SCSI. La base se trouve dans un module
   nomm "scsi_mod" ; elle est indispensable  la gestion du SCSI. Elle
   ne contient par contre aucun pilote spcifique de bas niveau et de ce
   fait ne scrutera ni carte, ni priphrique. Cette base n'activera pas
   non plus de pilotes de disques SCSI, de lecteurs de bandes, etc. Si
   vous avez rpondu 'Y'  la question _CONFIG_SCSI_ au moment de
   construire le noyau, vous n'aurez pas besoin de charger ce module.

   Maintenant que "scsi_mod" est prsent dans le noyau, vous pouvez
   ajouter les modules plus ou moins dans n'importe quel ordre pour
   ouvrir l'accs  vos priphriques. Des compteurs d'utilisation sont
   prsents pour viter de retirer un pilote occup. Si vous utilisez
   rmmod, vous en serez averti par un message d'erreur.

   Les pilotes de haut niveau pour les disques, les lecteurs de CDROM,
   les lecteurs de bandes et le support SCSI gnrique se trouvent
   respectivement dans les modules "sd_mod", "sr_mod", "st" et "sg".
   Lorsque vous chargez un pilote de haut niveau, tous les priphriques
   dtects (par les pilotes de bas niveau) et grs par ce pilote sont
   automatiquement activs.

   L'utilisation des modules avec des pilotes de bas niveau a t dcrite
   dans le chapitre Le support des modules dans les noyaux 1.2.N.
   Lorsqu'un pilote de bas niveau est charg, le bus est scrut et chaque
   priphrique reconnu est ensuite ventuellement pris en charge par un
   pilote de plus haut niveau (voir paragraphe prcdent).

5. Cartes d'interface

   Ce chapitre donne des informations spcifiques sur les diverses cartes
   d'interface SCSI qui sont supportes d'une manire ou d'une autre par
   Linux.

5.1 Matriel support et non support

   Les pilotes de la distribution du noyau :

   Adaptec 152x, Adaptec 154x (les cartes DTC 329x fonctionnent
   thoriquement, mais ne sont pas explicitement gres), Adaptec 174x,
   Adaptec 274x/284x (le support pour la 294x ncessite une version plus
   rcente 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&T, SNI,
   AST, Olivetti et Alphatronix), Future Domain 850, 885, 950 et d'autres
   cartes de cette srie (sauf les cartes 840, 841, 880 et 881  moins
   que vous n'appliquiez le patch adquat), 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.

   MCA :

   Les cartes MCA compatibles avec une des cartes prcdemment cites
   fonctionnent.

   Les pilotes alpha :

   Plusieurs pilotes ALPHA sont disponibles 

ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi

   Certains pilotes fonctionnent aprs quelques modifications :

   NCR53c8x0/7x0:

Un pilote NCR53c8xx a t dvelopp mais il ne marche toujours pas avec les
composants NCR53c700, NCR53c700-66, NCR53c710 et NCR53c720. Une liste des
modifications ncessaires pour le faire marcher sur chacun de ces composants
est fournie ci-aprs, accompagne d'un rsum de la difficult de chaque patch.

NCR53c720 (facile) - modifications dans la dtection 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 dtection 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'muler (Note aux relecteurs ( supprimer dans la version
dfinitive) je ne suis pas sr 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 (trs compliqu) - modifications dans la dtection
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.

   Les cartes SCSI qui ne marcheront pas :

   Tous les adapteurs parallle->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 supportes.

   Les cartes SCSI qui ne marcheront JAMAIS :

   Les cartes non compatibles Adaptec, les cartes non NCR53c8xx DTC (y
   compris les 3270 et les 3280).

   Les cartes CMD SCSI.

   L'obtention d'informations techniques sur ces cartes ncessite la
   signature d'un accord de confidentialit (NDA : non-disclosure
   agreement) avec DTC/CMD. En consquence, distribuer un pilote pour
   Linux est impossible car se conformer  cet accord signifie qu'il
   n'est pas possible de fournir les sources, ce qui est en violation de
   la GPL. Inversement, se conformer  la GPL signifie que les sources
   doivent tre rendus publics, ce qui est en conflit avec la NDA.

   Si vous voulez utiliser Linux sur du matriel non support, deux
   options s'offrent  vous :
    1. crire vous-mme le pilote (Eric Youngdale et moi-mme rpondons
       volontiers aux questions techniques sur les pilotes SCSI pour
       Linux),
    2. faire dvelopper le pilote (les tarifs habituels des
       sous-traitants rendent cette solution non viable pour une
       utilisation personnelle),

  Cartes contrleur multiples

   Avec certaines cartes (voir Guide de l'acheteur : comparaison des
   fonctionnalits), vous pouvez utiliser plusieurs contrleurs du mme
   type sur la mme machine. Dans ce cas, la plus petite adresse SCSI va
   tre rfrence par le noyau comme scsi0, la suivante comme scsi1,
   etc.

   Dans tous les cas, il est possible d'utiliser des contrleurs de types
   diffrents, sous rserve que leurs adresses n'entrent pas en conflit.
   Les cartes contrleur sont scrutes dans l'ordre suivant (dfini dans
   le tableau builtin_scsi_hosts[] du fichier drivers/scsi/hosts.c) :

     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.

   Dans la plupart des cas (c'est--dire si vous n'utilisez pas en mme
   temps une BusLogic et une Adaptec), le tableau prcdent peut tre
   chang pour dfinir un ordre qui vous convient mieux (de manire 
   garder le mme ordre pour les priphriques de votre ancienne carte
   lorsque vous ajoutez une nouvelle carte dans votre systme); il vous
   suffit de dplacer les entres du tableau.

5.2 Problmes habituels

  Timeouts SCSI

   Vrifiez que les interruptions sont bien autorises et qu'il n'y a pas
   de conflits d'IRQ, de DMA ou d'adresses avec d'autres cartes.

  Echec de l'auto-dtection des cartes qui s'appuient sur le BIOS

   Si votre contrleur SCSI est un des suivants :

     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

   et qu'il n'est pas dtect au dmarrage (vous avez eu par exemple :

scsi : 0 hosts

   ou encore

scsi%d : type

   au dmarrage), vous avez certainement un problme avec la routine
   d'auto-dtection qui ne reconnat pas votre carte contrleur.

   L'auto-dtection choue pour les pilotes qui s'appuient sur le BIOS si
   celui-ci est dsactiv. Vrifiez plutt deux fois qu'une que votre
   BIOS est activ et qu'il n'entre pas en conflit avec celui d'un autre
   priphrique.

   L'auto-dtection peut galement chouer si la "signature" de la carte
   et son adresse de BIOS ne font pas partie de la liste des cartes
   connues.

   Si le BIOS est install, redmarrez sous DOS et utilisez DEBUG pour
   trouver la signature de votre carte.

   Par exemple, si votre carte se trouve  l'adresse 0xc8000, redmarrez
   sous DOS puis tapez :

debug
d c800:0
q

   Envoyez ensuite un message  la liste de diffusion SCSI avec le
   message ASCII obtenu, sa longueur et son dplacement par rapport 
   l'adresse de base (par exemple 0xc8000). Attention : le texte exact
   est ncessaire et vous aurez certainement  fournir une version ASCII
   et une autre binaire du message.

   Si aucun BIOS n'est install et si vous utilisez une Adaptec 152x, une
   Trantor T128 ou un contrleur Seagate, vous pouvez utiliser la ligne
   de commande (LILO) ou bien surcharger des variables au moment de la
   compilation de manire  ce que l'auto-dtection fonctionne malgr
   tout.

   Reportez-vous  la section approprie de votre carte SCSI, ainsi qu'au
   chapitre Dysfonctionnement gnralis.

  Pannes de contrleurs utilisant des E/S mappes en mmoire

   (Les cartes Trantor T128 et Seagate sont de telles cartes. Les cartes
   Adaptec, Generic NCR5380, PAS16 et Ultrastor n'en sont pas)

   Les pannes sont souvent dues  un 'cache' des ports d'entres/sorties
   incorrect. L'espace d'adressage de la carte doit tre indiqu comme
   'non cachable' dans les paramtres de la XCMOS. Si ce n'est pas
   possible, il vous faudra compltement interdire le 'cache'.

   Si vous avez manuellement spcifi l'adresse de la carte,
   souvenez-vous que Linux a besoin de la vritable adresse de la carte
   et non pas de l'adresse segmente (par segments de 16 octets) 
   laquelle la documentation pourrait faire rfrence.

   Ainsi, 0xc8000 est une adresse valide, tandis que 0xc800 ne marche pas
   et risque de causer des problmes d'intgrit de la mmoire du noyau.

  "kernel panic : cannot mount root device" au dmarrage avec une disquette de
  dmarrage comportant un pilote ALPHA

   Vous allez devoir diter l'image binaire du noyau (avant ou aprs
   l'avoir crite sur la disquette) pour modifier quelques champs de deux
   octets (en petit indien -- little endian), afin de garantir qu'il
   fonctionnera sur votre systme.

    1. le priphrique de pagination (swap) par dfaut. Il se trouve 
       l'offset 502 et doit valoir 0x00 0x00
    2. la taille du disque mmoire (RAM disk) se trouve  l'offset 504.
       Elle doit valoir la taille de la disquette de dmarrage, en Ko.
       Par exemple, pour une disquette 5,25", on trouvera 1200. Pour une
       disquette 3,5", on aura 1440.

C'est  dire que les octets doivent tre

3,5" : 0xA0 0x05
5,25" : 0xB0 0x04

    3. l'identificateur du priphrique de la racine (root device) se
       trouve  la position 508 et doit valoir 0x00 0x00 (qui reprsente
       le priphrique de dmarrage).

   Recopiez le fichier sur la disquette par _dd_ ou _rawrite_. Insrez
   ensuite la disquette dans un lecteur puis relancez. Attendez qu'il
   vous soit demand d'insrer la disquette racine (root disk) puis
   mettez celle fournie avec votre distribution.

  Installation d'un pilote non inclus dans le noyau de la distribution

   Vous devez commencer avec la version du noyau utilise par le
   dveloppeur du pilote. Il arrive qu'on trouve la version en question
   dans la documentation incluse avec le pilote.

   Des versions rcentes du noyau sont prsentes  l'adresse

nic.funet.fi:/pub/OS/Linux/PEOPLE/Linus

   dans les fichiers linux-version.tar.gz

   On peut galement les trouver sur divers sites et autres miroirs (dont
   tsx-11.mit.edu).

cd /usr/src

   Supprimez l'ancienne arborescence des sources de Linux ou faites-en
   une copie :

mv linux linux-old

   Dsarchivez le fichier

gunzip < linux-0.99.12.tar.gz | tar xvfp -

   (pour la version 0.99.12 ici). Appliquez les patches. Habituellement,
   les patches sont relatifs  un des rpertoires de l'arborescence. En
   recherchant la chane '---' dans le fichier de patch, vous pouvez
   savoir  partir d'o l'appliquer. Ainsi, des lignes

--- ./kernel/blk_drv/scsi/Makefile

--- ./config.in Wed Sep  1 16:19:33 1993

   vous pouvez dduire que les fichiers  modifier sont relatifs 
   /usr/src/linux.

   Dsarchivez les sources du pilote  l'endroit appropri :

tar tfv patches.tar

   vous fournira d'abord une liste des fichiers. Dplacez quelques
   fichiers si ncessaire (les sources des pilotes SCSI doivent se
   trouver dans le rpertoire /usr/src/linux/kernel/drivers/scsi).

   Vous pouvez ensuite aller dans le rpertoire racine du patch et taper
   :

patch -p0 < patch_file

   Vous pouvez galement demander  'patch' d'liminer les chemins
   initiaux des noms des fichiers  modifier. Ainsi, si les fichiers
   commencent par

--- linux-new/kernel/blk_drv/scsi/Makefile

   et que vous voulez appliquer le patch directement depuis
   /usr/src/linux, vous pouvez faire les oprations suivantes :

cd /usr/src/linux
patch -p1 < patches

   pour supprimer le "linux-new" des noms des fichiers.

   Une fois les patches appliqus, vrifiez qu'il n'y a pas eu de rejets
   (un fichier de rejet a la mme nom que le fichier  modifier, un
   suffixe # y tant ajout).

find /usr/src/linux/ -name "*#" -print

   Si vous trouvez des fichiers de rejet, ditez-les. Parfois, seules les
   chanes d'identification RCS seront diffrentes. Cela ne posera alors
   pas de problme. Dans d'autres cas, il vous faudra appliquer
   d'importantes parties du patch  la main. Il n'est pas dans l'optique
   de ce document de dcrire les fichiers de diffrences ou l'utilisation
   de patch.

   Rfrez-vous galement  la section Configurer et regnrer le noyau.

  Installation d'un pilote qui n'a pas de patches

   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.

    1. copiez les .c et les .h dans /usr/src/linux/drivers/scsi
    2. ajoutez l'option de configuration Editez /usr/src/linux/config.in
       puis ajoutez une ligne (une variable de configuration boolenne
       pour votre pilote) dans le chapitre

*
* SCSI low-level drivers
*

       Par exemple

bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y

    3. ajoutez les entres dans le Makefile Editez
       /usr/src/linux/drivers/scsi/Makefile et ajoutez une entre
       similaire 

ifdef CONFIG_SCSI_IN2000
SCSI_OBS := $(SCSI_OBJS) in2000.o
SCSI_SRCS := $(SCSI_SRCS) in2000.c
endif

       juste avant la ligne

scsi.a: $(SCSI_OBJS)

       du makefile. Ici, le fichier .c est votre fichier source et le .o
       est le fichier objet gnr  partir de votre fichier source (le
       .c est remplac par le .o).
    4. ajoutez les points d'entre Editez
       /usr/src/linux/drivers/scsi/hosts.c puis ajoutez un #include pour
       le fichier d'entte, mis en conditionnel par la constante que vous
       venez de dfinir dans le fichier de configuration. Par exemple,
       aprs

#ifdef CONFIG_SCSI_GENERIC_NCR5380
#include "g_NCR5380.h"
#endif

       vous pouvez ajouter

#ifdef CONFIG_SCSI_IN2000
#include "in2000.h"
#endif

       Vous devez galement ajouter l'entre pour le Scsi_Host_Template
       dans le tableau scsi_hosts[]. Jetez un oeil dans le fichier .h et
       vous devriez y trouver un #define qui ressemble  :

#define IN2000 {"Always IN2000", in2000_detect, \
    in2000_info, in2000_command,    \
    in2000_queuecommand,            \
    in2000_abort,                   \
    in2000_reset,                   \
    NULL,                           \
    in2000_biosparam,               \
    1, 7, IN2000_SG, 1, 0, 0}

       Ajoutez la constante IN2000 dans le tableau scsi_hosts[], rendue
       conditionnelle par le symbole que vous venez de dfinir dans le
       fichier de configuration. Par exemple, aprs

#ifdef CONFIG_SCSI_GENERIC_NCR5380
        GENERIC_NCR5380,
#endif

       vous pouvez ajouter

#ifdef CONFIG_SCSI_IN2000
        IN2000,
#endif

       Rfrez-vous au chapitre Configurer et regnrer le noyau.

  Panne d'une carte PCI dans un systme Compaq

   Un certain nombre de machines Compaq logent les extensions 32-bit du
   BIOS permettant de tester les contrleurs PCI dans une zone mmoire
   inaccessible au noyau Linux (cela est d  l'organisation de la
   mmoire). Si Linux est incapable de dtecter une carte PCI SCSI connue
   comme tant supporte et si le noyau affiche un message du genre

pcibios_init: entry in high memory, unable to access

   allez chercher

ftp://ftp.compaq.com/pub/softpaq/Software-Solutions/sp0921.zip

   C'est un programme auto-extractible qui vous permettra de reloger le
   code du BIOS32.

  Un systme SCSI avec des contrleurs PCI se bloque aprs le message %d Hosts

   Certains systmes PCI ont un BIOS dfectueux qui masque les
   interruptions et qui n'arrive pas  les dmasquer avant de rendre la
   main  l'appelant. Le patch suivant corrige ce problme :

--- bios32.c.orig       Mon Nov 13 22:35:31 1995
+++ bios32.c    Thu Jan 18 00:15:09 1996
@@ -56,6 +56,7 @@
 #include <linux/pci.h>

 #include <asm/segment.h>
+#include <asm/system.h>

 #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__("lcall (%%edi)"
                : "=a" (return_code),
                  "=b" (address),
@@ -134,6 +137,7 @@
                : "0" (service),
                  "1" (0),
                  "D" (&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__("lcall (%%edi)\n\t"
                        "jc 1f\n\t"
                        "xor %%ah, %%ah\n"
@@ -176,6 +182,7 @@
                        : "1" (PCIBIOS_PCI_BIOS_PRESENT),
                          "D" (&pci_indirect)
                        : "bx", "cx");
+               restore_flags(flags);

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

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

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

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

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

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

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

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

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

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

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

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

5.3 Adaptec 152x, 151x, 1505, 282x, Sound Blaster 16 SCSI, SCSI Pro, Gigabyte
et autres produits bass sur l'AIC 6260/6360 (standard)

   Configurations supportes :

adresses du BIOS : 0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000,
                   0xe0000, 0xe4000.
Ports            : 0x140, 0x340
IRQs             : 9, 10, 11, 12
DMA              : non utilis
E/S              : port mapp

   Auto-dtection :

Cela marche avec de nombreuses cartes qui ont un BIOS install. Toutes les autr
es cartes,
y compris les Adaptec 1510 et les Sound Blaster 16 SCSI, ncessitent d'utiliser
 une ligne
de commande du noyau ou une surcharge au moment de la compilation.

   Surcharge de l'auto-dtection :

   Au moment de la compilation :

Dfinissez PORTBASE, IRQ, SCSI_ID, RECONNECT, PARITE de manire adquate (voir
Dfinitions)

   Ligne de commande du noyau :

aha152x=<PORTBASE>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITE>]]]]

   Le champ SCSI-ID est l'identificateur SCSI de la carte contrleur.
   Aucun autre priphrique connect sur ce bus SCSI ne doit avoir ce
   numro. Habituellement, il est fix  7.

   Pour forcer l'auto-dtection  l'adresse 0x340, l'IRQ 11, SCSI-ID 7 et
   autoriser la connexion/dconnexion, vous devez utiliser la ligne de
   commande suivante :

aha152x=0x340,11,7,1

   Problmes prhistoriques, rsolus en mettant  jour le noyau :

    1. le pilote n'arrive pas  grer les cartes VLB. Il y avait un
       problme de temporisation avec les noyaux antrieurs  la version
       1.0.5.

   Les constantes :

AUTOCONF       : utiliser la configuration reporte par le contrleur (uniqueme
nt pour les 152x)
IRQ            : surcharge du niveau d'interruption (9,10,11 ou 12) (11 par df
aut)
SCSI_ID        : surcharge du SCSI ID de l'AIC-6260 (0-7) (7 par dfaut)
RECONNECT      : surcharge l'indicateur de dconnexion/reslection (une valeur
non nulle
                 signifie 'autoriser', une valeur nulle signifie 'interdire')
DONT_SNARF     : n'enregistre pas les ports (pl12 et infrieurs)
SKIP_BIOSTEST  : ne teste pas la signature du BIOS (pour la AHA-1510 ou en cas
de BIOS dbray)
PORTBASE       : force le port de base. Il ne faut pas essayer l'auto-dtection

5.4 Adaptec 154x, AMI FastDisk VLB, DTC 329x (standard)

   Configurations supportes :

Ports          : 0x330 et 0x334
IRQs           : 9, 10, 11, 12, 14, 15
Canaux DMA     : 5, 6, 7
E/S            : port mapp, contrle de bus (bus master)

   Auto-dtection :

dtecte uniquement les cartes en 0x330 et 0x334.

   Surcharge de l'auto-dtection :

aha1542=<PORTBASE>[,<BUSON>,<BUSOFF>[,<VITESSEDMA>]]

   Notes :

    1. BusLogic produit une srie de cartes logiciellement compatibles
       avec les Adaptec 1542. Ces cartes existent en ISA, VLB, EISA et
       plusieurs varits en PCI.
    2. Des cartes sans suffixe et les premires cartes  suffixe 'A'
       n'acceptent pas le 'dcoupage' / 'rassemblage' (scatter/gather),
       et, de ce fait, ne fonctionnent pas. Moyennant une redfinition du
       mot 'fonctionnement', on peut les faire marcher  condition de
       mettre _AHA1542_SCATTER_  0 dans le fichier
       drivers/scsi/aha1542.h.

   Problmes prhistoriques, rsolus en mettant  jour le noyau :

    1. Les versions du noyau antrieures  la version 0.99.10 ne grent
       pas la version 'C' des contrleurs.
    2. Les versions du noyau antrieures  la version 0.99.14k ne grent
       pas les options suivantes pour les cartes version 'C' :
          + support du BIOS pour le mapping tendu des disques > 1G
          + support du BIOS pour plus de 2 disques
          + support du BIOS pour la scrutation automatique du bus SCSI
    3. Les versions du noyau antrieures  la version 0.99.15e ne grent
       pas les versions 'C' avec support du BIOS pour plus de 2 disques
       activ et le support du BIOS pour le mapping tendu des disques >
       1G dsactiv
    4. Les versions du noyau antrieures  la version 0.99.14u ne
       supportent les versions 'CF' de ce type de cartes
    5. Il existait un squencement critique (race condition) dans les
       versions du noyau antrieures  la version 1.0.5 lorsque plusieurs
       priphriques taient accds simultanment.

   Problmes frquents :

    1. erreurs 'non attendues' avec des cartes 154xC ou 154xCF. Certaines
       cartes 154xC parmi les premiers exemplaires gnraient un signal 
       haute frquence sur un des signaux SCSI, provoquant des rflexions
       dans des cbles de mauvaise impdance.
       Les nouvelles cartes ne sont pas vraiment meilleures et sont
       pointilleuses sur la qualit des cbles et sur la sensibilit des
       terminaisons.
       Rfrez-vous aux chapitres Problmes frquents #2 et #3, Problmes
       habituels, ou Dysfonctionnement gnralis.
    2. erreurs 'non attendues' avec des cartes 154xC ou 154x lorsqu' la
       fois des priphriques internes et externes sont connects. C'est
       probablement un problme de terminaison. Afin de pouvoir utiliser
       l'option logicielle permettant de dsactiver la terminaison
       interne de la carte, vous devez positionner le cavalier 1 sur OFF.
       Rfrez-vous aux chapitres Problmes frquents #1 et #3, Problmes
       habituels, ou Dysfonctionnement gnralis.
    3. le sous-systme SCSI se bloque compltement. Dans certains cas, le
       blocage semble se produire lors de l'utilisation simultane de
       plusieurs priphriques. Si cela arrive, contactez le fabricant de
       ces priphriques et voyez si une ventuelle mise  jour du
       firmware rsoudrait le problme. En dernier recours, vous pouvez
       modifier _AHA1542_MAILBOX_  1 dans le fichier aha1542.h. Cela va
       limiter le nombre de commandes prsentes sur le bus SCSI  1  la
       fois. Il se peut que a rsolve le problme. Par contre, une fois
       encore, si vous avez des priphriques lents (lecteur de bandes,
       lecteur de CDROM), ce contournement risque de ne pas tre une
       solution utilisable. Reportez-vous aux chapitres Problmes
       frquents #1 et #2, Problmes habituels ou Le SCSI se bloque.
    4. Le message "Interrupt received, but no mail" est affich au
       dmarrage et vos priphriques SCSI ne sont pas dtects.
       Dsactivez les options du BIOS pour la gestion du mapping tendu
       pour les disques > 1G, pour la gestion de plus de 2 priphriques
       et pour la scrutation automatique du bus (autoscanning). Ou alors,
       passez  une version de Linux 0.99.14k (ou plus rcente).
    5. Si des erreurs de temporisation infinie apparaissent sur des
       cartes version 'C', entrez dans le programme de configuration
       Adaptec puis autorisez la ngociation synchrone.
    6. Linux 1.2.x affiche le message "Unable to determine Adaptec DMA
       priority. Disabling board." Cela est d  un conflit sur certains
       systmes avec un pilote BusLogic obsolte. Vous pouvez soit
       regnrer 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 contrleur. Par exemple, si votre carte
       Adaptec rpond  l'adresse 0x334 et qu'il n'y a aucune autre carte
       en 0x330, utilisez la ligne de commande suivante :

buslogic=0x330

    7. Le systme se bloque lors d'accs simultans  plusieurs
       priphriques sur des cartes 1542C ou 1540C avec la dconnexion
       active. Quelques versions du firmware des Adaptec avaient des
       erreurs. Une mise  jour avec la version du BIOS v2.11 est cense
       corriger ce problme.

5.5 Adaptec 174x

   Configurations supportes :

Emplacements   : 1-8
Ports          : non significatif (carte EISA)
IRQs           : 9, 10, 11, 12, 14, 15
Canaux DMA     : non significatif (carte EISA)
E/S            : port mapp, contrle de bus

   Auto-dtection :

fonctionne avec toutes les configurations gres

   Surcharge de l'auto-dtection :

aucune

   Remarque :
    1. Cette carte n'est plus fabrique par Adaptec.

   Problmes courants :
    1. Si le pilote de l'Adaptec 1740 affiche le message "aha1740: Board
       detected, but EBCNTRL = %x, so disabled it."
       votre carte a t dsactive parce qu'elle ne tournait pas en mode
       tendu (enhanced mode). Les cartes qui fonctionnent en mode 1542
       standard ne sont pas gres.

5.6 Adaptec 274x, 284x (standard) 294x (ALPHA)

   Une nouvelle version qui gre galement les cartes Adaptec 294x est
   disponible  l'adresse

ftp://ftp.ims.com/pub/Linux/aic7xxx

   Configurations supportes :

                    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 mapp, contrle de bus

   Surcharge de l'auto-dtection :

   Ligne de commande du noyau :

aha274x=extended
(pour forcer le mapping tendu)

   Remarques :
    1. Le BIOS doit tre activ
    2. Le canal B des cartes 2742AT est ignor
    3. CONFIG_PCI (lors de la gnration du noyau) doit tre positionne
       si vous utilisez une carte PCI.

5.7 Always IN2000 (standard)

   Configurations supportes :

Ports          : 0x100, 0x110, 0x200, 0x220
IRQs           : 10, 11, 14, 15
DMA            : non utilis
E/S            : port mapp

   Auto-dtection :

le BIOS n'est pas ncessaire

   Surcharge de l'auto-dtection :

aucune

   Problmes courants :

    1. un problme connu concerne les systmes avec des disques IDE et la
       pagination (swapping).

5.8 Cartes contrleurs multi-matres BusLogic

   (cette section est Copyright 1995 par Leonard N. Zubkoff
   <lnz@dandelion.com>) (le fichier README.BusLogic constitue une
   documentation plus complte du pilote BusLogic ; lisez-le)

                  Pilote SCSI BusLogic Multi-Matres 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.  conoit  et  fabrique  un  ensemble de  contrleurs SCSI de hau
tes
performances,  qui partagent une interface de  programmation commune pour diver
ses
architectures  de bus, par le biais de leur technologie ASIC Multi-Matres (Mul
ti-
Master ASIC). Ce pilote gre tous les contrleurs BusLogic Multi-Matres actuel
s,
et devrait grer toutes les cartes Multi-Matres  venir avec peu (voire aucune
) de
modifications.  Les contrleurs  bass sur la  nouvelle architecture FlashPoint
 ne
sont pas grs par ce pilote ; reportez-vous au fichier  README.FlashPoint pour
 la
marche  suivre pour passer d'une carte FlashPoint LT non gre  une carte BT-
948
supporte.

Mes buts principaux lorsque j'ai crit ce pilote BusLogic compltement nouveau
pour
Linux  taient d'exploiter les performances maximales que les contrleurs SCSI
Bus-
Logic  et les priphriques SCSI  modernes sont capables d'atteindre  et de fou
rnir
un pilote extrmement fiable sur lequel des applications critiques puissent s'a
ppu-
yer. Tout  peut tre configur sur la ligne de  commande du noyau, des performa
nces
jusqu'aux dtections d'erreurs. Cela permet  chaque installation d'ajuster les
 pa-
ramtres de performance et de gestion des erreurs aux besoins locaux.

BusLogic  est une  compagnie avec laquelle il a t trs agrable de travailler
, et
je  recommande chaleureusement leurs produits  la communaut Linuxienne. En No
vem-
bre 1995, j'ai eu l'opportunit de devenir site bta testeur pour leur dernier
pro-
duit Multi-Matres - le contrleur SCSI BT-948 PCI Ultra -, puis de nouveau pou
r le
contrleur BT-958 PCI Wide Ultra en Janvier 1996. Cela a t un bnfice rcipr
oque,
car  nous avons apport  BusLogic un environnement de test que leurs propres 
qui-
pes ne pouvaient pas avoir  et la communaut Linuxienne a dispos de contrleur
s de
hautes  performances  qui avaient  correctement t tests sur Linux avant mme
 que
les  produits ne soient  commercialiss. Cette  relation avec BusLogic m'a en o
utre
donn  l'occasion d'interagir  directement avec leur  quipe technique  et ains
i de
leur  donner connaissance des besoins et des potentialits du monde Linux. Leur
 in-
trt et leur support sont trs apprcis.

Contrairement   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 r
tor-
quer que votre utilisation de leur produit n'est pas supporte. Leurs dernires
 pu-
blications commerciales mentionnent mme "Les contrleurs SCSI BusLogic sont co
mpa-
tibles avec tous les systmes d'exploitation importants, incluant : ... Linux .
..".

BusLogic, Inc. se trouve  4151  Burton Drive, Santa Clara, California, 95054,
USA,
et vous pouvez les contacter par  tlphone 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 tre joint par  courrier lectronique  l'adresse techsup@buslogic.
com,
par  tlphone au 408/654-0760 ou par fax au  408/492-1542. Des  renseignements
 sur
leurs rprsentants en Europe et au Japon sont disponibles sur leur site Web.

                        LES CONTROLEURS GERES

La  liste  suivante comporte les  contrleurs  SCSI BusLogic  grs  la date d
e ce
document.  Il est  recommand qu'une  personne se  portant  acqureur  d'une  c
arte
BusLogic  non liste  dans la table  suivante contacte l'auteur de ce document
pour
vrifier si elle est supporte ou si elle le sera un jour.

Les sries "W" :

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

Les sries "C" :

BT-946C     PCI     Fast Terminaison unique SCSI-2
BT-956C     PCI     Fast Wide Terminaison unique SCSI-2
BT-956CD    PCI     Fast Wide Diffrentielle 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 Diffrentielle SCSI-2
BT-545C     ISA     Fast Terminaison unique SCSI-2
BT-540CF    ISA     Fast Terminaison unique SCSI-2

Les sries "S":

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

Les sries "A" :

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

Les contrleurs AMI FastDisk, vritables clones BusLogic, sont grs par ce pil
ote.

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

Les  contrleurs SCSI BT-948/958/958D PCI Ultra ont des fonctionnalits qui peu
vent
ncessiter une certaine attention lors de l'installation de Linux.

o Affectation des ports d'entre/sortie PCI

  Lorsqu'elles  sont  configures avec les valeurs par dfaut usine, les cartes
 BT-
  948/958/958D vont  uniquement reconnatre les affectations des ports d'E/S fa
ites
  par le BIOS  PCI de la  carte mre. Les  BT-948/958/958D ne  rpondront  plus
 aux
  ports d'E/S compatibles ISA auxquels les contrleurs SCSI BusLogic prcdents
 r-
  pondaient. Le pilote gre les affectations des ports d'E/S PCI. C'est la conf
igu-
  ration  privilgier. Toutefois, si le pilote BusLogic obsolete doit tre uti
lis
  pour une raison quelconque, comme par exemple une distribution Linux qui n'ut
ili-
  serait pas encore le nouveau pilote dans son noyau de dmarrage, BusLogic a f
ourni
  une option de configuration AutoSCSI qui autorise les ports d'E/S compatibles
 ISA.

  Pour  activer  cette  option de  compatibilit  ascendante, appelez  l'utilit
aire
  AutoSCSI  par  CTRL-B au dmarrage du systme  et  choisissez "Adapter Config
ura-
  tion",  "View/Modify Configuration", puis  changez les paramtres "ISA Compat
ible
  Port"  de "Disable"   "Primary"  ou "Alternate". Une  fois que  ce  pilote a
 t
  install, l'option "ISA Compatible Port" doit tre remise  "Disable" pour v
iter
  tout conflit de futurs ports  d'E/S. Les anciennes  cartes BT-946C/956C/956CD
 ont
  galement cette option de configuration, mais le dfaut usine est "Primary".

o L'ordre de scrutation des emplacements PCI

  Dans les  systmes  comportant  plusieurs  contrleurs PCI BusLogic, l'ordre
dans
  lequel les  emplacements PCI sont scruts peut apparatre invers pour les ca
rtes
  BT-948/958/958D par rapport aux cartes  BT-946C/956C/956CD. Pour dmarrer  de
puis
  un disque SCSI, il est  ncessaire que le  BIOS du contrleur et  le noyau so
ient
  d'accord  sur quel  disque est le disque de  dmarrage (boot disk). Cela impl
ique
  qu'ils reconnaissent les  contrleurs PCI dans  le mme ordre. Le  BIOS PCI d
e la
  carte mre fournit un moyen standard d'numrer les contrleurs PCI. Ce moyen
 est
  utilis par le noyau Linux. Certaines  implmentations du BIOS PCI  numrent
 les
  emplacements PCI par ordre croissant des numros de bus et des numros de con
tr-
  leurs, alors que d'autres le font dans le sens contraire.

  Malheureusement,  Microsoft  a  dcid  que Windows 95  numrerait  toujours
 les
  emplacements  PCI  dans l'ordre  croissant des  numros  de bus et des numro
s de
  contrleurs indpendamment de l'numration du BIOS PCI  et ils ont exig que
 leur
  faon de faire soit  supporte par le  BIOS des  contrleurs pour  tre  cert
ifi
  Windows 95. En  consquence, les dfauts usine des cartes BT-948/958/ 958D n
um-
  rent les contrleurs par numros croissants. Pour  dsactiver ce  fonctionnem
ent,
  appelez l'utilitaire AutoSCSI par CTRL-B au dmarrage du systme, puis choisi
ssez
  "Adapter Configuration",  "View/Modify Configuration",  appuyez sur  CTRL-F10
 et
  changez l'option "Use Bus And Device # For PCI Scanning Seq."  0FF.

  Ce pilote va interroger la valeur de l'option de  Squence De Scrutation PCI,
  de
  manire   reconnatre les contrleurs dans le mme ordre qu'ils ont t num
rs
  par le BIOS du contrleur.

                        LA LISTE DE DIFFUSION DES ANNONCES BUSLOGIC

La  liste de diffusion des  annonces BusLogic constitue un forum d'information
pour
les  utilisateurs Linux des  nouveauts (nouvelles  versions du  pilote  et  au
tres
annonces  concernant le  support pour  Linux des  contrleurs  BusLogic). Pour
vous
inscrire  la liste, envoyez un message  l'adresse suivante :
"BusLogic-announce-request@dandelion.com", avec la ligne  "subscribe" dans le c
orps
du message.

5.9 Les contrleurs BusLogic FlashPoint

   (cette section est Copyright 1995 par Leonard N. Zubkoff
   <lnz@dandelion.com>)

Il  n'y a pas de pilote Linux pour les cartes FlashPoint LT/DL/LW (BT-930/932/9
50),
et quand il va y en avoir ou s'il y en aura n'est pas trs clair. Les cartes Fl
ash-
Point  ont une  architecture diffrente des  cartes Multi-Matres  et  n'ont pa
s de
processeurs  sur la carte ; elles disposent d'un simple squenceur SCSI. Elles
sont
conues pour les ordinateurs  de bureau  et ne sont pas  spcialement conues
pour
des systmes d'exploitation multitches performants comme Linux.

Les  cartes Multi-Matres BT-948/958 ont  un processeur  embarqu et l'interfac
e de
programmation  par "bote  lettres"  permet de faire du paralllisme et du pip
eli-
ning  entre le contrleur et le systme d'exploitation, alors que les cartes Fl
ash-
Point ncessitent de frquentes interventions du processeur principal. Etant  d
onn
que les  dlais de  prise en  compte des  interruptions  augmentent sur  un sys
tme
charg, les BT-948/958 continuent d'avoir d'excellentes  performances au  contr
aire
des FlashPoint, qui  s'croulent  rapidement. De plus, le  firmware des  BT-948
/958
possde la  connaissance  de bas niveau pour une  interaction  efficace avec le
 bus
SCSI. Avec un  squenceur  SCSI comme dans les  FlashPoint, le  noyau Linux doi
t en
revanche contenir  lui-mme  toutes ces  informations de  bas niveau,  et il es
t en
gnral long d'arriver  faire marcher tout cela proprement. Etant  donn le fa
ible
cart de prix entre  ces deux  modles, les  cartes BT-948 et  BT-958 sont de t
oute
vidence le meilleur choix pour Linux.

<dbut de citation>

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

Depuis  leur  apparition en Octobre 1995, les  BusLogic  FlashPoint  LT  ont  p
os
des  problmes  sous  Linux, si  bien  qu'aucun  pilote  n'est  encore  disponi
ble
pour  cette  nouvelle  carte  Ultra SCSI. Bien que le produit  soit officiellem
ent
dclar  comme  une carte pour machine de bureau  et ne  soit pas particulirem
ent
efficace  dans  des environnements  multitches  performants  tels  que  Linux,
 la
FlashPoint LT  a t annonce  comme tant le dernier cri, le  nec plus ultra,
par
les vendeurs d'ordinateurs  et elle s'est retrouve sur certains de leurs syst
mes
haut de gamme,  l'exclusion  de ceux quips  des anciennes cartes Multi-Matr
es.
Cela  a  caus du tort  de  nombreuses personnes  qui  ont  par mgarde achet
 un
systme en s'attendant  ce que tous les produits BusLogic soient grs par Lin
ux,
et qui  ont finalement  dcouvert que la FlashPoint n'tait pas supporte et ne
 le
serait pas avant longtemps, si elle devait l'tre un jour.

Aprs  que  ce  problme a  t  identifi, BusLogic  est entre  en contact  a
vec
ses  principaux clients  OEM pour  annoncer que les cartes  Multi-Matres BT-94
6C/
956C seraient  toujours disponibles,  et  que les  utilisateurs  Linux qui avai
ent
par  mgarde  command des systmes  base  de FlashPoint pourraient mettre  j
our
leur  machine avec une BT-946C. Si cela a aid de nouveaux acheteurs, cela n't
ait
qu'une solution partielle au problme plus gnral du support de la FlashPoint
pour
les  utilisateurs  de  Linux. Cette  annonce n'apportait  aucun soutien  ceux
qui
avaient  initialement achet une FlashPoint pour  un systme d'exploitation qui
 la
grait  et qui dcidaient plus tard de passer  Linux ou  ceux qui avaient ache
t
une  FlashPoint,  croyant  qu'elle tait  gre  et  qui taient  incapables de
 la
retourner.

Mi-Dcembre,  j'ai demand   rencontrer le  responsable de la gestion de BusLo
gic
pour  discuter  du support pour le  logiciel libre (free software)  et pour  Li
nux
de la FlashPoint. Des  bruits plus ou moins  exacts avaient  circul  publiquem
ent
sur l'attitude  de BusLogic  envers Linux  et  j'avais le sentiment  que le  mi
eux
tait d'en  discuter  directement. J'envoyai  un message par  email un  soir  
 11
heures  et  la  runion  eut lieu  le lendemain  aprs-midi. Malheureusement,
les
rouages  administratifs tournent lentement, particulirement  lorsqu'une compag
nie
est en cours d'acquisition, c'est pourquoi il a fallu attendre jusqu'  mainten
ant
que tous les dtails soient parfaitement clairs et qu'une annonce publique  pui
sse
tre faite.

BusLogic  n'est  pas  prte  aujourd'hui   publier  les  informations ncessai
res
 ce  que des parties  tierces puissent  crire des pilotes  pour  la  FlashPoi
nt.
Les  seuls pilotes  existants pour  la FlashPoint  ont  t  crits  par  l'qu
ipe
technique de BusLogic  et il n'existe pas de documentation suffisamment  dtail
le
pour permettre  un dveloppeur extrieur d'crire un pilote sans aide consque
nte.
Alors  qu'il y a des gens  chez BusLogic  qui ne veulent  pas entendre  parler
 de
divulgation  de dtails  sur l'architecture  de la  FlashPoint, le dbat n'est
pas
entirement  clos. Dans tous les cas, mme  si la documentation  tait  disponi
ble
aujourd'hui, il faudrait certainement pas mal de temps pour qu'un pilote relle
ment
utilisable soit crit, surtout que je ne suis pas convaincu que l'effort en vai
lle
la peine.

De toute faon, BusLogic continue  fournir une solution SCSI de hautes perform
an-
ces pour Linux  et ils ne dsirent pas voir quelqu'un incapable de travailler s
ous
Linux  sous prtexte qu'il a une FlashPoint LT. En consquence, BusLogic  a mis
 en
place un programme de mise  jour permettant  n'importe quel utilisateur de Li
nux
dans le monde de changer sa FlashPoint LT pour une nouvelle carte BT-948 Multi-
Ma-
tres  PCI Ultra SCSI. La BT-948  est  la successeur  Ultra SCSI de  la BT-946C,
 et
possde  toutes les  fonctionnalits des contrleurs BT-946C et  FlashPoint  LT
, y
compris une terminaison adaptative (smart termination) et une PROM  flashable p
our
faciliter les mises  jour du firmware. Elle est bien sr compatible avec le pi
lote
actuel de Linux. Le prix pour cette mise  jour a t fix  45 dollars amrica
ins,
et  le programme de mise  jour est  ralis par le Support Technique de BusLog
ic,
qui peut tre contact par courrier lectronique  l'adresse techsup@BusLogic.c
om,
par tlphone au +1 408 654-0760 ou par fax au +1 408 492-1542.

J'ai un site en bta test pour le contrleur BT-948 et les versions 1.2.1  et 1
.3.1
de mon pilote BusLogic contiennent dj le support pour les BT-948. Une gestion
 sup-
plmentaire (non indispensable) pour les cartes Multi-Matres Ultra SCSI sera a
jou-
te dans une future version. En rsultat de ce mcanisme de test 'coopratif',
plu-
sieurs  problmes du firmware  ont t dcels et  corrigs (assurez-vous que v
ous
avez  la version 5.05R ou plus). Mon systme de test Linux trs charg a fourni
 un
environnement de test idal pour tester le mcanisme de dtection et de correct
ion
d'erreurs  SCSI, qui  est bien moins  souvent mis en vidence sur les  machines
 de
production,  mais qui est crucial pour la  stabilit gnrale du systme. Il a
t
trs pratique de pouvoir travailler directement avec leur ingnieur responsable
 du
firmware en reproduisant les problmes sous le contrle de l'environnement de d
ebug
du firmware. Il est certain que les  techniques ont  normment volu  depuis
 le
temps o je  travaillais sur un  firmware pour du  matriel embarqu. Je travai
lle
actuellement sur des  mesures de performances  et j'espre avoir prochainement
des
chiffres et des statistiques.

BusLogic  m'a demand d'envoyer cette  annonce puisqu'un important pourcentage
des
questions  relatives au  support de la  FlashPoint m'a  directement t envoy
par
email ou a t post dans les groupes de news de Linux auxquels je participe. P
our
rsumer, BusLogic offre aux  utilisateurs Linux de mettre  jour leur carte Fla
sh-
Point LT (BT-930) non gre par une carte gre BT-948 pour une somme de 45 dol
lars
amricains.

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

                Leonard N. Zubkoff
                lnz@dandelion.com
<fin de citation>

5.10 EATA: DPT SmartCache, SmartCache Plus, SmartCache III, SmartCache IV et
SmartRAID (standard)

   Cartes gres : toutes, du moment qu'elles supportent le protocole
   EATA-DMA.

   Parmi ces cartes, on trouve :

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

   mais galement les versions 'diffrentielles' des contrleurs
   ci-dessus.

   et quelques contrleurs de :

   NEC, AT&T, SNI, AST, Olivetti, Alphatronix.

   Configurations supportes :

Emplacements   : Tous
Ports          : Tous
IRQs           : Tous les niveaux sur changements d'tat (edge triggered)
Canaux DMA     : Tous les ISA, non significatifs pour les EISA/PCI
E/S            : port mapp, contrle de bus
Canaux SCSI    : Tous

   Auto-dtection :

fonctionne avec toutes les configurations gres

   La dernire version du pilote EATA-DMA est disponible  l'adresse :

ftp.i-Connect.Net:/pub/Local/EATA/

   Liste de diffusion :

   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
    la liste, envoyez un message  "linux-eata-request@i-connect.net"
   avec la ligne "subscribe" dans le corps du message.

   Support du rpertoire /proc/scsi :

   Pour avoir accs  des statistiques plus pousses, entrez les
   commandes suivantes :

   _echo "eata_dma latency" >/proc/scsi/eata_dma/<no_driver>_

   Pour ensuite dsactiver les statistiques, faites :

   _echo "eata_dma nolatency" >/proc/scsi/eata_dma/<no_driver>_

   Problmes habituels :

    1. La Slackware ne trouve pas le contrleur.
       Solution : utilisez une des disquettes de boot ascsi*.
    2. Le pilote IDE arrive  dtecter l'interface ST-506 de la carte
       EATA dans les anciens noyaux (<v1.3).
         1. Cela ressemble  l'un des 2 exemples suivants :

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)

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

            Si le pilote IDE a des problmes  cause de cela (vous ne
            pouvez pas accder  vos vritables priphriques IDE par
            exemple), changez le port d'E/S et/ou les IRQ de la carte
            EATA.
         2. Si le pilote IDE trouve des quipements qu'il sait traiter,
            par exemple des disques durs d'une capacit <=504MB, il va
            allouer le port d'E/S et l'IRQ de manire  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).
    3. Le firmware de certaines vieilles cartes SK2011 est dfectueux.
       Contactez le support client de DPT pour une mise  jour.

   Remarques :
    1. _CONFIG_PCI_ doit tre positionne si vous utilisez une carte PCI.

5.11 Future Domain 16x0 with TMC-1800, TMC-18C30, TMC-18C50 ou composant
TMC-36C70

   Configurations supportes :

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 utilis
E/S            : port mapp

   Auto-dtection :

fonctionne avec toutes les configurations gres. Requiert un BIOS activ

   Surcharge de l'auto-dtection :

aucune

   Problmes prhistoriques, rgls par une mise  jour :

    1. Les vieilles versions ne grent pas le composant TMC-18C50 et se
       plantent avec les nouvelles cartes.
    2. Les routines d'auto-dtection des vieilles versions n'ont pas les
       plus rcentes signatures des BIOS.
    3. Les versions avant celle incluse dans Linux 1.0.9 et 1.1.6 ne
       grent pas le nouveau composant SCSI ou le BIOS 3.4.

   Remarque :
    1. Le BIOS des Future Domain scrute souvent les priphriques SCSI de
       l'identificateur le plus lev jusqu' l'ID 0, dans l'ordre
       inverse des autres BIOS SCSI. sda va alors correspondre au dernier
       priphrique (par analogie avec le DOS, D: au lieu de C:). Vous
       aurez certainement besoin d'utiliser l'option de surcharge
       'disktab' avec LILO.

5.12 NCR5380 gnrique / T130B (standard)

   Configurations supportes et non supportes :

Ports          : Tous
IRQs           : Tous
canaux DMA     : le DMA n'est pas utilis
E/S            : port mapp

   Auto-dtection :

aucune

   Surcharge de l'auto-dtection :

   A la compilation :

dfinissez GENERIC_NCR5380_OVERRIDE. Ce doit tre 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'entre BOARD_*.

Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent tre employes pour le
champ IRQ.

   Ligne de commande du noyau :

ncr5380=port,irq
ncr5380=port,irq,dma
ncr53c400=port,irq

255 peut tre utilis pour 'pas d'irq' et 254 pour 'auto-dtection de l'irq'.

   Problmes frquents :

    1. Utilisation d'une carte T130B avec le vieux pilote NCR5380
       gnrique (version 6 pr-publique) qui ne grait pas la ligne de
       commande pour le ncr53c400.
       Les registres des cartes compatibles NCR5380 ont un dplacement de
       8 par rapport  l'adresse de base. Ainsi, si votre adresse est
       0x350, utilisez :

ncr5380=0x358,254

       sur la ligne de commande du noyau.

   Problmes prhistoriques, rgls par une mise  jour :
    1. Le noyau se bloque lors d'accs disques avec une carte T130B ou
       d'autres cartes NCR53c400.
       Les versions 6 pr-publiques du pilote gnrique NCR5380 ne
       graient pas les interruptions sur ces cartes. Mettez  jour votre
       pilote.

   Remarques :
    1. Le pilote gnrique ne gre pas le DMA actuellement et le
       pseudo-DMA n'est pas mieux support par le pilote gnrique.

5.13 NCR53c8xx (standard)

   Configurations supportes et non supportes :

Adresses de base : Toutes
IRQs             : Toutes
Canaux DMA       : non significatif (PCI)
E/S              : port mapp, contrle de bus

   Auto-dtection :

requiert un BIOS PCI, utilise les routines du BIOS PCI pour rechercher les
contrleurs et pour lire les donnes de configuration

   Le pilote utilise les valeurs pr-programmes dans certains regsitres
   pour son initialisation, aussi un BIOS doit-il tre activ.

   Problmes prhistoriques, rgls par une mise  jour :

    1. D'anciennes versions de Linux avaient un problme avec la
       pagination (swapping). Reportez-vous au chapitre Le systme se
       fige en swappant
    2. Les noyaux des distributions incluent la version 4 ou 5 du pilote,
       qui ne gre pas certaines fonctionnalits bien utiles comme la
       dconnexion / reconnexion (l'effet le plus manifeste en est le
       blocage complet des priphriques SCSI lors du rembobinage d'une
       bande), contrleurs multiples et oprations sans BIOS.
       La dernire version du pilote est disponible  l'adresse :

ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/ncr53c810

       La versions courante est pour la 1.2.10 (et les derniers patches),
       bien que la prochaine version soit destine exclusivement aux
       noyaux 1.3.x. Ces patches ne sont pas totalement propres,  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-mmes les (quatre) problmes d'application des patches, ne
       les utilisez surtout pas. Seul le dernier patch est ncessaire ;
       ce ne sont pas des versions incrmentales.
       Si vous ne pouvez pas attendre et dsirez utiliser le dernier
       pilote NCR avec un noyau 1.3.x, Harald Evensen
       <Harald.Evensen@pvv.unit.no> a adapt les patches pour les noyaux
       1.3.x

ftp://ftp.pvv.unit.no/pub/Linux/ALPHA/ncr

       Ces patches devraient s'appliquer sans problmes.
       S'il vous plat, lisez tous les fichiers README dans ces
       rpertoires. Vous devriez galement rejoindre la liste de
       diffusion NCR si vous tes intress  avoir les dernires
       versions du pilote. Les corrections de bugs intermdiaires et les
       annonces sont faites sur cette liste.
       Pour vous inscrire, envoyez un courrier  majordomo@colorado.edu
       avec

subscribe ncr53c810

       dans le corps du message. Pour vous retirer de la liste, envoyez 
       la mme adresse un message contenant

unsubscribe ncr53c810

   Problmes frquents :

    1. De nombreuses personnes ont rencontr des problmes de composants
       fonctionnant bien sous DOS mais plantant sous Linux avec un
       problme de temporisation (timeout) lors du test 1 (interruption
       perdue).
       Cela est souvent d  un dsaccord entre la valeur slectionne
       par le cavalier rglant le niveau d'interruption (IRQ) pour un
       emplacement ou un priphrique de la carte mre et la valeur fixe
       dans la CMOS. VERIFIEZ TOUJOURS QUE :
          + L'IRQ que vous employez est utilise uniquement par le
            composant NCR de votre carte ou par l'emplacement dans lequel
            la carte NCR est installe
          + Les cavaliers de slection des IRQ pour le composant de la
            carte ou pour son emplacement correspondent  la
            configuration de la CMOS
          + Certaines cartes mres PCI savent faire une affectation
            "automatique" des IRQ. Cela ne fonctionnera pas.
       Cela peut galement tre d aux INTB, INTC ou INTD PCI
       slectionnes sur une carte PCI dans un systme qui ne gre que
       l'INTA PCI. Si vous utilisez une carte NCR qui vous permet de
       choisir par cavalier la ligne d'interruption PCI utilise,
       assurez-vous que vous avez configur l'INTA.
       Enfin, le PCI doit utiliser des interruptions sur niveau
       (level-sensitive) plutt que sur front (edge triggered). Vrifiez
       que votre carte est positionne pour gnrer des interruptions sur
       niveau. Si cela ne marche toujours pas, essayez les interruptions
       sur front, au cas o votre systme serait dfectueux.
       Ce problme est assez frquent avec quelques cartes Viglen, pour
       lesquelles la configuration des cavaliers d'interruptions n'est
       pas documente dans le manuel. On m'a dit que ce qui devrait tre
       une IRQ5 est en fait une IRQ9. Votre cas sera peut-tre diffrent.
    2. Des blocages et d'autres problmes apparaissent lors de
       l'utilisation d'une carte vido PCI S3 928 et Tseng Lab ET4000W32.
       Il y a des bugs matriels dans certaines versions de ces
       composants. Ne les utilisez pas.
    3. Un message au dmarrage vous indique que l'organisation (mapping)
       des E/S a t dsactive parce que les bits 0..1 de l'adresse de
       base 0 indiquaient un mapping non E/S. Le message exact est :
the I/O mapping was disabled because base address 0 bits 0..1 indicated a
non I/O mapping
       Cela est d  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 inverss.
    4. Certaines machines ont des problmes si l'criture diffre PCI ou
       la bufferisation CPU->PCI sont actives. Si vous avez des
       problmes, dsactivez ces options.
    5. Certains systmes avec le firmware NCR SDMS dans la ROM du BIOS de
       la carte et dans le BIOS du systme ne sont pas capables de booter
       sous DOS. Dsactiver l'image dans un des BIOS devrait rsoudre le
       problme.
    6. Si vous rencontrez le message

"scsi%d: IRQ0 not free, detaching"

       ou

"scsi%d: IRQ255 not free, detaching"

       le composant NCR avait tous ses bits  0 ou  1 dans le registre
       de configuration PCI. Soit vous avez des problmes de
       configuration (reportez-vous au chapitre Problmes frquents 1),
       soit le BIOS de votre carte mre est dfectueux. Un contournement
       serait d'diter le fichier drivers/scsi/ncr53c7,8xx.c puis de
       changer pci_init() pour mettre :

irq = my_irq;

       avant

return normal_init (tpnt, board, chip, (int) base,
    (int) io_port, (int) irq, DMA_NONE, 1, bus, device_fn,
    options);

    7. Certains systmes ont des composants BIOS honteusement buggs. Ne
       faites pas de rapport d'anomalie avant d'tre certain que vous
       avez reu les plus rcentes ROM de votre vendeur.
    8. Les lignes de commande ncr53c810=xxx, etc. ne marchent pas. Dans
       les noyaux d'origine, les points d'entre correspondants ne sont
       intentionnellement pas inclus dans le fichier init/main.c : Le
       pilote fait malgr tout des auto-dtections pour une carte dont
       des paramtres ont t passs sur la ligne de commande. Ainsi, si
       une ligne de commande est utilise alors que la carte a t
       reconnue par la routine de configuration PCI, vous allez au devant
       de gros problmes. La seule raison pour laquelle vous pourriez
       avoir besoin d'une surcharge par la ligne de commande serait de
       contourner un bug du matriel 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
       problme de configuration, votre systme est dfectueux ou alors
       vous avez un problme de configuration et aucune ligne de commande
       ne pourra y remdier. Si quelqu'un a ajout les points d'entre
       adquats dans le fichier init/main.c pour les lignes de commande,
       elle ne sont pas gres et peuvent parfaitement ne pas
       fonctionner.
    9. Certaines cartes NCR (Nexstor est la plus connue) qui n'utilisent
       pas un BIOS NCR sortent en timeouts. Certaines de ces ROMs grent
       les transferts synchrones et asynchrones, mais tablissent une
       ngociation de transferts synchrones au dmarrage du systme, ce
       qui laisse les disques dans un tat non dfini. Lorsque le pilote
       NCR Linux issu de la distribution essaie de dialoguer avec ces
       priphriques, il expire en timeout et ne s'en sort pas car il ne
       fait ni reset du bus, ni rengociation. Si vous rencontrez ce
       problme, vous pouvez dsactiver les transferts synchrones dans le
       programme de configuration de la carte ou mettre  jour votre
       pilote NCR avec une version rcente ALPHA qui sait traiter la
       ngociation synchrone.
   10. Les cartes Tyan S1365 '825 ont des problmes de temporisation
       (timeouts), tout particulirement lorsque les dconnexions sont
       autorises. Les documentations de certaines de ces cartes
       inversent les positions du cavalier d'activation de la terminaison
       - si bien que celle-ci est active alors que vous auriez voulu la
       dsactiver, et inversement. Essayez de changer la position du
       cavalier.

   Remarques :
    1. _CONFIG_PCI_ doit tre positionne

5.14 Seagate ST0x/Future Domain TMC-8xx/TMC-9xx (standard)

   Configurations supportes et non supportes :

Adresses de base : 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
IRQs             : 3, 5
Canaux DMA       : le DMA n'est pas utilis
E/S              : mappes en mmoire

   Auto-dtection :

teste uniquement les adresses, le niveau d'interruption (IRQ) tant suppos
valoir 5 ; ncessite un BIOS install.

   Surcharge de l'auto-dtection :

   A la compilation :

Dfinir OVERRIDE  la valeur de l'adresse de base, CONTROLLER  FD ou SEAGATE
en fonction de la configuration et IRQ  la valeur de niveau d'interruption
de la carte.

   Ligne de commande du noyau :

st0x=adresse,irq ou tmc8xx=adresse,irq (uniquement pour les noyau 0.99.13b et
plus rcents)

   Problmes prhistoriques, rgls par une mise  jour :

    1. Les versions des noyaux 0.99.12 et antrieurs avaient un problme
       d'acquittement (handshaking) avec certains priphriques lents.
       Notamment, voici ce qui se passait lorsque vous criviez des
       donnes sur le bus :
         1. crire l'octet dans le registre de donne ; le registre de
            donnes est plac sur le bus,
         2. temps_restant = 12us,
         3. attendre tant que temps_restant > 0 et que le signal REQ
            n'est pas gnr,
         4. si temps_restant > 0, gnrer le signal ACQ,
         5. attendre tant que temps_restant > 0 et le signal REQ est
            gnr,
         6. redescendre le signal ACQ
       Ce problme apparaissait sur certains priphriques lents qui
       traitaient chaque commande aprs l'avoir lue et pour lesquels le
       protocole REQ/ACQ (requte / acquittement) prenait plus de 12us -
       REQ n'tait pas faux au moment o le pilote l'attendait, si bien
       que le pilote finissait pas envoyer plusieurs octets de donnes 
       chaque impulsion REQ.
    2. Avec Linux 0.99.12, j'ai introduit un bug en corrigeant le code
       d'arbitrage. Sur certains systmes, la slection des priphriques
       sortait en chec. Ce problme a t corrig en 0.99.13.

   Problmes frquents :

    1. Certains commandes sortent en timeouts lorsque Linux essaie de
       lire une table de partition ou de faire d'autres accs disques.
       La carte est fournie avec une configuration prvue par dfaut pour
       MSDOS, c'est--dire que les interruptions sont dsactives. Pour
       les ractiver sur les cartes Seagate, fermez les pattes F-G (choix
       de l'IRQ 5) sur le cavalier W3 (ST01) ou JP3 (ST02).
    2. Le pilote ne parvient pas  grer certains priphriques, en
       particulier des drouleurs de bandes SCSI bon march et des
       lecteurs de CDROM. La Seagate reporte le protocole REQ/ACQ du bus
       SCSI dans les signaux IO CHANNEL READY et, ventuellement, OWS du
       bus du PC. Malheureusement, vous n'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.
       Etre capable de traiter ce cas implique de mettre en oeuvre une
       boucle active pour surveiller la descente du signal REQ, avec un
       dlai de surveillance au cas o vous auriez manqu la transition 
       cause d'une interruption, etc. Vous observerez une dgradation des
       performances ; il pourrait tre judicieux de ne pas appliquer
       cette mthode  tous les priphriques SCSI. La slection peut se
       faire priphrique par priphrique via le champ "broken" des
       entres du tableau scsi_devices. Si vous avez des problmes, vous
       pourrez tenter d'ajouter votre priphrique  la liste des
       quipements pour lesquels le champ "broken" n'est pas positionn 
       0 (actuellement, il n'y a que les lecteurs de CDROM TENEX).
    3. Une carte Future Domain (en particulier les 840, 841, 880 et 881)
       ne marche pas.
       Quelques-unes des cartes Future Domain utilisent l'organisation
       (mapping) des registres des Seagate ; les bits MSG et CD du
       registre d'tat sont inverss.
       Editez le fichier seagate.h, changez les dfinitions de _STAT_MSG_
       et _STAT_CD_ puis recompilez le noyau avec la variable _CONTROLLER_
       dfinie  _SEAGATE_ et les variables _IRQ_ et _OVERRIDE_
       correctement positionnes.
    4. 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 chou, ou encore
You must set heads sectors and cylinders.
You can do this from the extra functions menu.
       Reportez-vous  la section Partitionnement des disques
    5. Aprs avoir spcifi manuellement la gomtrie 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  la section Partitionnement des disques
    6. Sur certains systme qui fonctionnaient avant la version 0.99.13,
       les nouvelles versions de Linux chouent. Les anciennes versions
       affectaient les registres CONTROL et DATA dans un ordre diffrent
       de celui expliqu dans la documentation Seagate, ce qui perturbait
       certains systmes. Les nouvelles versions se conforment au
       document, mais cela perturbe maintenant d'autres systmes.

   Le code du fichier seagate.c ressemble maintenant  :

cli();
DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x
40));
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
            (reselect ? CMD_ATTN : 0);
sti();

   Votre problme peut tre corrig en changeant ce code en :

cli();
CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
            (reselect ? CMD_ATTN : 0);
DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x80 : 0x
40));
sti();

   Constantes :

FAST ou FAST32 pour la mise en oeuvre de transferts aveugles

ARBITRATE      va forcer le contrleur  arbitrer le bus en mode de
               compatibilit SCSI-II, plutt que d'attendre le signal BUS FREE
               avant de continuer. Cela devrait nous permettre de traiter une
               commande par unit logique le jour o j'intgrerai mes
               modifications de rorganisation dans les sources de
               l'arborescence de rfrence.

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

SLOW_RATE=x,   x tant un entier spcifiant un taux de transfert par dfaut
               si le protocole d'acquittement (handshaking) ne fonctionne
               pas correctement.

5.15 PAS16 SCSI (standard)

   Configurations supportes et non supportes :

Ports          : 0x388, 0x384, 0x38x, 0x288
IRQs           : 10, 12, 14, 15
     IMPORTANT : les IRQ DOIVENT tre diffrentes des IRQ utilises par la
                 partie de gestion du son de la carte
DMA            : n'est pas utilis par la partie SCSI de la carte
E/S            : port mapp

   Auto-dtection :

n'a pas besoin du BIOS

   Surcharge de l'auto-dtection :

A la compilation : dfinissez 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.

   Ligne de commande du noyau :

pas16=port,irq

   Constantes :

AUTOSENSE  - si elle est dfinie, la commande SCSI 'REQUEST SENSE' sera
             automatiquement mise pour les commandes qui se terminent
             avec un status 'CHECK CONDITION'.

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

PARITY     - activation du contrle de parit. N'est pas gr.

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

UNSAFE     - autorise les interruptions pendant les transferts
             pseudo-DMA. Vous activerez cela uniquement si vous avez
             des problmes de perte de caractres durant les
             communications  haute vitesse. Cependant, mme dans ce cas,
             vous auriez plutt intrt  jouer avec les tailles de blocs de
             transfert.

USLEEP     - autorise la gestion des priphriques qui ne se dconnectent
             pas. Non test.

   Problmes frquents :

    1. Commandes en timeouts, interruptions, etc.
       Utilisez les patches pour les NCR5380 que j'ai posts sur le
       rseau il y a quelque temps (ils devraient tre intgrs dans la
       prochaine version alpha). Ces patches corrigent un squencement
       critique (race condition) des prcdentes versions du pilote
       NCR5380. Ils corrigent galement un problme de gestion de
       plusieurs priphriques pour les contrleurs bass sur le NCR5380.
       Si cela choue, vous devrez interdire l'option PSEUDO_DMA en
       changeant la ligne #define PSEUDO_DMA du fichier
       drivers/scsi/pas16.c en #undef PSEUDO_DMA.
       Remarquez que cette solution doit tre considre uniquement en
       dernier recours, car elle pnalise gravement les performances.

5.16 Trantor T128/T128F/T228 (standard)

   Configurations supportes et non supportes :

Adresses de base :  0xcc000, 00xc8000, 0xdc000, 0xd8000
IRQs             : aucune, 3, 5, 7 (toutes cartes)
                   10, 12, 14, 15 (T128F uniquement)
DMA              : non utilis
E/S              : mmoire mappe

   Auto-dtection :

fonctionne sur toutes les configurations supportes ; ncessite un BIOS
install.

   Surcharge de l'auto-dtection :

A la compilation : la variable T128_OVERRIDE doit tre un tableau
de nuplets de la forme {'adresse', 'irq'}. Par exemple :

#define T128_OVERRIDE {{0xcc000, 5}}

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

Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent tre employes pour le
champ IRQ.

   Ligne de commande du noyau :

t128=adresse,irq
-1 peut tre utilis pour "pas d'irq", -2 pour "auto-dtection de l'irq".

   Constantes :

AUTOSENSE  - si elle est dfinie, la commande SCSI 'REQUEST SENSE' sera
             automatiquement mise pour les commandes qui se terminent
             avec un status 'CHECK CONDITION'.

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

PARITY     - activation du contrle de parit. N'est pas gr.

SCSI2      - activation de la gestion de 'files marques' pour le SCSI-II

UNSAFE     - autorise les interruptions pendant les transferts
             pseudo-DMA. Vous activerez cela uniquement si vous avez
             des problmes de perte de caractres durant les
             communications  haute vitesse. Cependant, mme dans ce cas,
             vous auriez tout intrt  jouer avec les tailles de blocs de
             transfert.

USLEEP     - autorise la gestion des priphriques qui ne se dconnectent
             pas. Non test.

   Problmes frquents :

    1. Commandes en timeouts, interruptions, etc.
       Utilisez les patches pour les NCR5380 que j'ai posts sur le
       rseau il y quelque temps (ils devraient tre intgrs dans la
       prochaine version alpha). Ces patches corrigent un squencement
       critique (race condition) des prcdentes versions du pilote
       NCR5380. Ils corrigent galement un problme de gestion de
       plusieurs priphriques pour les contrleurs bass sur le NCR5380.
       Si cela choue, vous devrez interdire l'option PSEUDO_DMA en
       changeant la ligne _#define PSEUDO_DMA_ du fichier
       drivers/scsi/pas16.c en _#undef PSEUDO_DMA_.
       Remarquez que cette solution doit tre considre uniquement en
       dernier recours, car elle pnalise gravement les performances.

5.17 Ultrastor 14f (ISA), 24f (EISA), 34f (VLB) (standard)

   Configurations supportes :

Ports          : 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340
IRQs           : 10, 11, 14, 15
Canaux DMA     : 5, 6, 7
E/S            : port mapp, contrle de bus

   Auto-dtection :

ne marche pas pour les cartes sur le port 0x310. Le BIOS n'est pas ncessaire.

   Surcharge de l'auto-dtection :

uniquement  la compilation (dfinissez PORT_OVERRIDE)

   Problmes frquents :

    1. L'adresse 0x310 n'est pas reconnue par le code d'auto-dtection et
       peut crer des conflits si le rseau est activ. Utilisez une
       adresse diffrente.
    2. L'utilisation d'une carte Ultrastor  l'adresse 0x330 peut
       provoquer des blocages du systme lorsque les pilotes sons sont en
       phase d'auto-dtection. Utilisez une adresse diffrente.
    3. D'autres pilotes effectuent des auto-dtections dangereuses 
       diverses adresses. Si vous avez des problmes de dtection ou si
       le systme se bloque au dmarrage, essayez une autre adresse.
       0x340 est rpute tre une adresse qui marche.
    4. Linux ne dtecte aucun priphrique SCSI, mais reconnat votre
       disque dur connect  une carte SCSI Ultrastor comme un disque
       normal, sans que le pilote de disque arrive  le grer. Notez que
       lorsque cela se produit, vous avez probablement le message

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)

       Si c'est le cas, vous utilisez la carte Ultrastor en mode
       mulation WD1003. Vous devez alors :
         1. basculer la carte Ultrastor en mode natif. C'est ce qu'il y a
            de mieux  faire, tant donn que les disques SCSI sont
            sensiblement plus rapides que les disques IDE, spcialement
            avec les patches de lectures/critures groupes. Certains ont
            obtenu des dbits soutenus de plus de 2Mo/s  travers le
            systme de gestion de fichiers, aprs application de ces
            patches. Notez que cela ne sera pas ncessaire si vous
            n'utilisez pas de disque dur ou si vous branchez plus de deux
            disques durs sur la carte Ultrastor.
         2. utilisez la ligne de commande du noyau

hd=cylindres,ttes,secteurs

            pour surcharger les paramtres de configuration par dfaut,
            de manire  pouvoir dmarrer vous-mme, tout en vous
            assurant que le nombre de cylindres <= 2048, le nombre de
            ttes <= 16 et le nombre de secteurs <= 255 soient tels que
            cylindres * ttes * secteurs soit le mme dans les deux
            reprsentations. Vous devez galement prciser la gomtrie
            du disque au moment d'utiliser fdisk sous Linux. Si vous
            omettez de le faire, de mauvaises valeurs risqueraient d'tre
            crites dans la table des partitions. Ces valeurs seront
            correctes pour Linux, mais provoqueront des erreurs sous
            MSDOS, qui se base sur les triplets <tte/cylindre/secteur>
            de la table des partitions. Une fois que Linux a dmarr,
            vous pouvez vous pargner la peine de prciser manuellement 
            chaque dmarrage la gomtrie en modifiant comme il le faut
            la macro HD_TYPE du fichier include/linux/config.h et en
            recompilant le noyau.

5.18 Western Digital 7000 (standard)

   Configurations supportes :

Adresses du BIOS : 0xce000
Ports            : 0x350
IRQs             : 15
Canaux DMA       : 6
E/S              : port mapp, contrle de bus

   Auto-dtection :

ncessite un BIOS activ.

   Problmes frquents :

    1. 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 mme, les composants sans
       suffixe ne fonctionnent pas, alors que ceux marqus d'un 'A'
       marchent.
    2. La carte gre quelques adresses BIOS qui n'apparaissent pas dans
       la liste des adresses supportes. Si vous vous trouvez dans cette
       situation, utilisez une des adresses supportes et envoyez un
       rapport d'anomalie suivant la procdure dcrite dans le chapitre
       Signaler une anomalie.

5.19 AM53/79C974 (ALPHA)

ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/AM53C974-0.3.tar.gz

   Configurations supportes :

Ports          : Tous
IRQs           : Tous
Canaux DMA     : 6
E/S            : port mapp, contrle de bus (sans intelligence)

5.20 qlogic (standard)

   H, Drew, o est ce chapitre (I (D.F.). Je ne l'ai vu que dans la
   table des matires ;-) ?

6. Disques

   Les informations contenues dans ce chapitre concernent les disques.

6.1 Matriel support et non support

   Tous les priphriques SCSI  accs direct, d'une taille de bloc de
   256, 512 ou 1024 octets devraient fonctionner. Les autres tailles de
   bloc ne marchent pas (notez que cela peut souvent tre corrig en
   modifiant la taille des blocs et/ou des secteurs en utilisant la
   commande SCSI MODE SELECT).

   La taille des secteurs fait rfrence au nombre d'octets de donnes
   prsents par secteur sur un priphrique (les lecteurs de CDROM
   utilisent par exemple une taille de secteur de 2048 octets).

   La taille des blocs fait rfrence  la taille des blocs logiques
   utiliss pour s'interfacer avec le priphrique. Bien que cette valeur
   soit habituellement identique  la taille des secteurs, certains
   priphriques regroupent plusieurs secteurs physiques plus petits (par
   exemple 256 octets dans le cas des priphriques Syquest de 55 Mo) en
   un seul bloc logique plus important ou l'inverse (des blocs de 512
   octets sur les lecteurs de CDROM compatibles SUN, par exemple).

   Les priphriques amovibles incluent les disques Bernouilis, les
   disques flopticals, les disques magnto-optiques et les Syquest.

   En thorie, les priphriques d'une taille infrieure  1 To
   (tra-octets) devraient marcher. Il n'y a en particulier aucun
   problme avec les minuscules disques de 9 Go.

6.2 Problmes frquents

  Message 'Cylindre suprieur  1024'

   Au moment du partitionnement, un message d'avertissement "cylinder >
   1024" s'affiche ou bien vous tes incapable de dmarrer depuis une
   partition possdant des cylindres au-del du cylindre 1024.

   C'est une limitation du BIOS.

   Reportez-vous aux chapitres Gomtrie et Partitionnement pour des
   explications plus dtailles.

  Vous tes incapable de partitionner "/dev/hd*"

   Les /dev/hd* font rfrence  des priphriques IDE. Utilisez /dev/sd*
   pour vos disques SCSI.

   Reportez-vous aux chapitres Fichiers spciaux, Gomtrie et
   Partitionnement pour les noms de fichiers corrects et la marche 
   suivre pour le partionnement.

  Impossibilit d'jecter le mdia d'un priphrique amovible

   Linux tente de verrouiller la porte du lecteur lorsqu'un mdia est
   mont, afin d'viter les endommagements du systme de fichiers
   rsultants d'un changement de support.

   Dmontez vos disques amovibles avant de les jecter.

  Impossibilit de dmarrer depuis un disque SCSI en utilisant LILO

   Dans certaines conditions, le pilote SCSI et le BIOS ne sont pas
   d'accord sur le mapping du BIOS correct  utiliser. Le rsultat est
   que LILO se bloque aprs avoir affich les lettres 'LI' au moment du
   boot.

   Comme contournement, trouvez quelle gomtrie est utilise sous DOS
   puis crez une entre pour votre disque dans le fichier
   /etc/lilo/disktab.

   Vous pouvez ventuellement galement utiliser l'option "linear" pour
   LILO.

  Fdisk rpond par

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

   et la gomtrie du disque n'est pas mmorise lorsque fdisk est
   rexcut.

   Reportez-vous au chapitre Partitionnement.

  Un seul priphrique est dtect sur une carte pont (bridge board) avec
  plusieurs priphriques

   Linux ne recherche pas les units logiques (LUNs) suprieures  0 sur
   les priphriques SCSI qui retournent une version ANSI SCSI 1. Si vous
   voulez que toutes les units logiques soient reconnues, allez modifier
   la fonction scan_scsis() du fichier drivers/scsi/scsi.c.

  Le systme se fige en swappant

   La version 1.1.38 devrait avoir corrig le problme. Essayez de faire
   une mise  jour de votre pilote.

  Les disques Conner CFP1060S sont endommags

   Cela est d  un erreur du microcode dans les fonctions de lecture
   anticipe et dans le cache.

   >D'aprs Soenke Behrens, du support technique de Conner :

Ces dernires semaines, nous avons reu des appels de plusieurs clients
qui nous affirmaient avoir de srieux problmes avec les disques SCSI
Conner CFP1060x de 1Go en utilisant le systme d'exploitation Linux.
Des erreurs taient dtectes par e2fsck  chaque dmarrage du systme
(inodes abms) entre autres.

Une correction est maintenant disponible pour les clients possdant
des CFP1060x (versions de microcode 9WA1.62/1.66/1.68) sous Linux. Pour
appliquer la mise  jour, vous aurez besoin d'une disquette bootable DOS,
et des pilotes ASPI qui permettent l'accs au disque dur. La mise  jour
tlcharge un nouveau code de gestion de files (mise en file et lecture)
dans la mmoire SCSI non-volatile du disque.

Si vous avez des problmes avec des disques dont le microcode est  la
version 9WA1.60, contactez votre centre Conner le plus proche pour une
mise  jour. La version du microcode peut tre trouve sur l'tiquette
du disque ou, sur sa face infrieure, sur l'tiquette d'un des circuits
intgrs.

Si vous vous sentez assez sr de vous pour faire vous-mme la mise  jour,
appelez le support technique de Conner, aprs avoir not la version de
votre microcode. Le support technique de Conner en Europe peut tre joint
 au +44-1294-315333. Le support amricain peut tre joint au 1-800-4CONNER.

Salutations,
Soenke Behrens
Support Technique Europe

6.3 Fichiers spciaux

   Les disques SCSI utilisent le majeur bloc 8. Il n'y a pas d'accs en
   mode "raw", comme sous BSD.

   16 mineurs sont attribus pour chaque disque SCSI, mineur % 16 == 0
   reprsentant le disque entier, 1 <= (mineur % 16) <= 4 les 4
   partitions principales et 5 <= (mineur % 16) <= 15 les partitions
   tendues.

   Exemple de configuration avec un seul contrleur :

Priphrique                 Adresse  Unit logique     disque SCSI
Seagate 84M                  0        0                 /dev/sda
Disque 0 SCSI->SMD bridge    3        0                 /dev/sdb
Disque 1 SCSI->SMD bridge    3        1                 /dev/sdc
Drouleur de bande Wangtek   4        0                 aucun
Maxtor 213M                  6        0                 /dev/sdd

   etc.

   La convention de nommage standard est

   /dev/sd{lettre} pour le disque entier ((mineur % 16) == 0)

   /dev/sd{lettre}{partition} pour les partitions de ce disque (1 <=
   (mineur % 16) <= 15)

   Par exemple :

/dev/sda        priphrique mode bloc de majeur 8 et de mineur 0
/dev/sda1       priphrique mode bloc de majeur 8 et de mineur 1
/dev/sda2       priphrique mode bloc de majeur 8 et de mineur 2
/dev/sdb        priphrique mode bloc de majeur 8 et de mineur 16

   etc.

6.4 Partitionnement

   Vous pouvez partitionner vos disques SCSI en utilisant l'outil de
   votre choix, sous DOS, OS/2, Linux ou n'importe quel autre systme
   d'exploitation supportant le schma de partionnement standard.

   Le meilleur moyen d'utiliser le programme fdisk de Linux est de
   spcifier le priphrique sur la ligne de commande. Par exemple, pour
   partitionner le premier disque SCSI, tapez :

fdisk /dev/sda

   Si vous ne prcisez pas explicitement le priphrique, le programme de
   partionnement pourrait prendre par dfaut /dev/hda, qui n'est pas un
   disque SCSI.

   Il peut arriver que fdisk affiche

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

Command (m for help):

   ou qu'il sorte un message comme quoi "HDIO_REQ ou HDIO_GETGEO ioctl" a
   chou. Dans ce cas, spcifiez manuellement la gomtrie du disque (
   Gomtrie) au moment de lancer fdisk ou entrez-la dans /etc/disktab si
   vous avez l'intention de booter sur ce disque en utilisant LILO.

   Si vous avez manuellement prcis la gomtrie du disque, les
   utilisations ultrieures de fdisk vous donneront le mme message
   d'erreur. C'est normal, puisque les PC ne stockent pas les
   informations de gomtrie dans la table des partitions. Cela ne cause
   AUCUN PROBLEME et vous n'aurez pas de soucis  accder aux partitions
   cres par Linux. Certains programmes mal crits peuvent en tre gns
   ; contactez votre revendeur et insistez pour qu'il corrige son code si
   cela arrivait.

   Un message d'avertissement vous signale parfois que votre partition se
   termine au-del du cylindre 1024. Si vous crez une telle partition,
   vous ne serez pas capable de dmarrer dessus avec LILO. Cela tant,
   rien n'empche de crer une partition racine (root) partiellement ou
   entirement situe au-del de ce cylindre 1024. Il est en effet
   toujours possible de crer une petite partition /boot sous la barrire
   des 1024 ou de dmarrer le noyau directement depuis une autre
   partition.

6.5 Gomtrie

   Sous Linux, chaque disque est vu tel que le contrleur SCSI le voit :
   N blocs, numrots de 0  N - 1, sans erreurs, l o le DOS / BIOS
   considrent avoir affaire  des disques intelligents et appliquent une
   transformation arbitraire <tte/cylindre/secteur>  cet adressage
   linaire.

   Cela peut poser un problme lorsque vous partitionnez votre disque
   sous Linux, puisqu'il n'y a pas de moyen portable de rcuprer la
   gomtrie estime par le DOS/BIOS. Dans la plupart des cas, un ioctl()
   HDIO_GETGEO peut tre implment pour obtenir ce mapping.
   Malheureusement, lorsque le vendeur (au hasard Seagate) choisit un
   mapping retors, non standard et non document, cela n'est plus
   possible et il est ncessaire de prciser manuellement la gomtrie.

   Si vous en arrivez l, plusieurs options sont possibles :

    1. Si cela ne vous gne pas d'utiliser DOS ou de dmarrer depuis le
       disque avec LILO, crez une traduction telle que tte * cylindre *
       secteur * 512 < taille de votre disque en octets (un mgaoctet est
       dfini par 2^20 octets).
1 <= tte <= 256
1 <= cylindre <= 1024
1 <= secteur <= 63
    2. Utilisez le mapping du BIOS. Dans certains cas, cela implique
       qu'il faudra reconfigurer le disque de manire  ce qu'il soit 
       l'adresse SCSI 0 et qu'il faudra dsactiver le second disque IDE
       (si vous en avez un).

   Sous DOS, vous pouvez utiliser un programme tel que NU (Norton
   Utilities). Vous pouvez aussi lancer le programme suivant :

begin 664 dparam.com
MBAZ``##_B+^!`+N!`(H'0SP@=/D\,'5:@#]X=`6`/UAU4(!_`3AU2H!_`P!U
M1(I7`H#J,(#Z`7<Y@,*`M`C-$PCD=3-14HC()#\PY.@R`.@J`%J(\/[`,.3H
M)0#H'0!8AL2Q!M+L0.@7`+K"`;0)S2'#NIP!ZR"ZQ0'K&[K5`>L6N]T!,=*Y
M"@#W\8#",$N(%PG`=>^)VK0)S2'#=7-A9V4Z(&1P87)A;2`P>#@P#0H@("!O
L<B`@9'!A<F%M(#!X.#$-"B1);G9A;&ED(&1R:79E#0HD("`D```````D``!O
`
end

   Lorsque vous le lancerez, il affichera le nombre de secteurs, de
   cylindres et de ttes du disque dont l'adresse BIOS a t fournie sur
   la ligne de commande (0x80 pour le premier disque, 0x81 pour le second
   disque, etc.).

   Par exemple, dparam 0x80
60      17      1007

   signifie que C: a 60 secteurs, 17 ttes et 1007 cylindres.

7. Les lecteurs de CDROM

   Ce chapitre contient des informations spcifiques aux lecteurs de
   CDROM.

7.1 Matriel support et non support

   Les lecteurs de CDROM SCSI avec une taille de bloc de 512 ou 2048
   octets doivent marcher. D'autres tailles de bloc ne fonctionneront
   pas.

7.2 Problmes frquents

  Impossibilit de monter le CDROM

   La syntaxe correcte pour monter un CDROM ISO-9660 est la suivante :

mount -t iso9660 /dev/sr0 /point_de_montage -o ro

   Il est vident que pour que cela fonctionne, il faut avoir intgr
   dans le noyau (ou en module) le support SCSI pour votre contrleur,
   pour le pilote SCSI et le systme de fichiers iso9660.

   Notez aussi que dans les noyaux 1.1.32, les priphriques en lecture
   seule tels que les CDROM ne peuvent pas tre monts avec les options
   par dfaut (lecture/criture (read/write)).

  Impossibilit d'jecter le CDROM

   Linux tente de verrouiller la porte du lecteur lorsqu'un mdia est
   mont, afin d'viter les endommagements du systme de fichiers
   rsultants d'un changement de support.

  Impossibilit d'couter des CD audio

   Essayez donc workman ou xcdplayer.

  Workman ou xcdplayer ne marchent pas

   Les fonctions de contrle des fonctionnalits audio font partie de
   l'ensemble des commandes de la norme SCSI-II. Les lecteurs qui ne sont
   pas SCSI-II n'ont donc que peu de chances de marcher. De plus,
   quelques lecteurs de CDROM SCSI-I et SCSI-II utilisent un ensemble de
   commandes propritaires au lieu des commandes de la norme SCSI-II. Il
   existe une version de xcdplayer pour les lecteurs NEC - jetez un oeil
   sur tsx-11.mit.edu au rpertoire /pub/linux/BETA/cdrom.

   Ces programmes peuvent galement marcher avec quelques lecteurs de
   CDROM non SCSI, si leurs pilotes implmentent les mmes ioctls que les
   pilotes SCSI.

  Les disques supplmentaires sur les chargeurs SCSI ne marchent pas

   La plupart des chargeurs de CDROM attribuent une unit logique 
   chaque disque. Vrifiez que vous avez bien un fichier spcial
   (/dev/...) pour chaque plateau de votre chargeur (reportez-vous aux
   chapitres Fichiers spciaux et Les units logiques autres que la
   premire ne fonctionnent pas.

7.3 Fichiers spciaux

   Les CDROM SCSI utilisent le majeur 11.

   Les mineurs sont attribus dynamiquement (reportez-vous aux chapitres
   Disques, Fichiers spciaux pour des exemples) le premier CDROM trouv
   ayant le mineur 0, le deuxime le mineur 1, etc.

   La convention standard de nommage est la suivante :

   /dev/sr{chiffre}, bien que certaines distributions aient utilis
   /dev/scd{chiffre}. Par exemple :

/dev/sr0        /dev/scd0
/dev/sr1        /dev/scd1

8. Les lecteurs de bandes

   Les informations de ce chapitre concernent les lecteurs de bandes.

8.1 Matriel support et non support

   Les priphriques utilisant des tailles de blocs fixes ou variables
   plus petites que la taille du buffer du pilote SCSI (32Ko dans les
   sources de la distribution du noyau) sont grs.

   Les paramtres (taille de bloc, buffrisation, densit) sont rgls
   via des ioctls (habituellement par le programme _mt_) ; ils restent
   actifs mme si le priphrique est ferm puis rouvert (ici,
   priphrique est  prendre au sens : fichier spcial reprsentant ce
   priphrique).

   Thoriquement, tous les lecteurs doivent marcher, y compris :

     * Lecteurs Archive Viper QIC (dont les modles 150Mo et 525Mo)
     * Lecteurs Exabyte 8mm
     * Lecteurs Wangtek 5150S
     * Lecteurs Wangdat DAT

8.2 Problmes frquents

  Le lecteur de bande n'est pas reconnu au dmarrage

   Essayez de dmarrer avec une bande dans le lecteur.

  Impossibilit de lire correctement des bandes comportant plusieurs fichiers

   En lisant des bandes avec plusieurs fichiers, le premier tar est
   correct, mais le suivant choue sans remonte d'erreurs. Un second
   essai de tar russit.

   Les programmes utilisateur, tels que tar, ne savent pas interprter
   les marques de fichiers. Le premier tar lit la bande jusqu' la fin du
   fichier. Le second tar essaie de lire la marque de fichier (file mark)
   et n'obtient aucune donne. Par contre, la bande a dpass la marque
   de fichier, si bien que la troisime lecture lit le deuxime fichier
   de la bande.

   Utilisez _mt_ sur le fichier spcial attaquant le lecteur en mode
   'non-rembobinage' (no-rewind) pour avancer jusqu'au fichier suivant.

  La dcompression choue

   Les programmes de dcompression ne sont pas capables de grer les
   zros qui comblent le dernier bloc du fichier.

   Pour liminer les avertissements et les erreurs, mettez vos fichiers
   compresss dans un fichier tar. Plutt que de faire :

tar cfvz /dev/nst0 fichier.1 fichier.2 ...

   faites :

tar cfvz tmp.tar.z fichier.1 fichier.2 ...

tar cf /dev/nst0 tmp.tar.z

  Problmes de lecture de bandes faites sur d'autres systmes

   Vous n'arrivez pas  relire une bande faite sur un autre systme
   d'exploitation ou bien un autre systme d'exploitation n'arrive pas 
   relire les bandes faites sous Linux.

   Les diffrents systmes utilisent souvent des tailles de blocs
   diffrentes. Sur un lecteur de bande utilisant une taille fixe, vous
   allez avoir des erreurs en essayant de lire des blocs inscrits avec
   une autre taille.

   Pour lire ces bandes, vous devez ajuster la taille des blocs de votre
   pilote de bandes  la taille avec laquelle la bande a t crite. Vous
   pouvez aussi essayer de le configurer pour qu'il utilise une taille
   variable.

   REMARQUE : cette taille est une taille physique de bloc et n'est pas
   le facteur de blocage utilis par tar, dump et consors.

   Vous pouvez le faire par la commande _mt_ :

mt setblk <taille>

   ou

mt setblk 0

   pour indiquer au pilote d'utiliser une taille de bloc variable.

   Notez que ces options de _mt_ ne sont pas supportes par la version
   GNU de mt qui est incluse dans certaines distributions de Linux.
   Utilisez plutt la version mt drive de BSD. Les sources devraient
   tre disponibles  l'adresse

tsx-11.mit.edu:/pub/linux/ALPHA/scsi

   _ST_BUFFER_BLOCKS_ (dfinie dans le fichier
   /usr/src/linux/drivers/scsi/st_options.h dans les noyaux rcents et
   /usr/src/linux/drivers/scsi/st.c dans les anciens noyaux) est
   initialise de manire  autoriser une taille maximale des buffers de
   32Ko. Editez le fichier prcdent pour augmenter cette limite.

  Message d'erreur "No such device"

   Tous les essais pour accder  la bande se terminent par un message du
   genre

   "No such device".

   Vrifiez le type du fichier spcial reprsentant votre lecteur. Ce
   doit tre un fichier en mode caractre, les majeur et mineur devant
   tre en concordance avec les valeurs dfinies dans le chapitre
   Fichiers spciaux.

  Les lectures de bandes  une certaine densit marchent, mais les critures
  chouent

   Plusieurs lecteurs de bandes acceptent les lectures  une densit
   infrieure pour compatibilit avec des matriels plus anciens, mais
   ils n'crivent pas  ces mmes densits.

   C'est le cas en particulier des lecteurs QIC, qui peuvent relire des
   vieilles cassettes de 60Mo, mais qui ne savent plus crire que des
   bandes de 120, 150, 250 ou 525Mo.

  Le repositionnement de la bande bloque le bus SCSI

   Cela est frquent avec les quipements SCSI qui ne grent qu'une
   commande en attente  la fois (reportez-vous au chapitre Priphriques
   multiples pour une explication plus dtaille, et Guide de l'acheteur
   : comparaison des fonctionnalits pour voir quels lecteurs souffrent
   de cette limitation), bien que cela puisse galement tre d  un
   lecteur de bandes refusant les dconnexions.

   Dans tous les cas, vous pouvez contourner ce problme en ditant le
   fichier drivers/scsi/sr.c et en ajoutant une ligne

#define ST_NOWAIT

   au dbut. Regnrez ensuite le noyau.

   Cela va avoir pour effet de retarder les ventuelles erreurs jusqu'
   la prochaine commande SCSI excute. Il est pour cela prfrable de
   faire

mt status

   aprs qu'une commande de repositionnement a t demande par _mt_.
   Cela vous vitera d'craser des fichiers sur la bande si le
   positionnement a chou.

   Vous pouvez aussi envisager de changer votre contrleur pour un modle
   mieux support ou de vous quiper d'un lecteur de bande plus rcent,
   si vous avez besoin d'utiliser ce contournement et que vous dsiriez
   crire plusieurs fichiers sur une mme bande.

8.3 Fichiers spciaux

   Les lecteurs de bandes SCSI utilisent le majeur 9.

   Linux utilise le type dev_t sur 16 bits, dont 8 bits sont rservs
   pour le mineur. Pour cette raison, les mineurs pour les bandes SCSI
   sont affects dynamiquement et commencent au plus petit numro
   d'adapteur SCSI, priphrique ou unit logique.

   Les mineurs des fichiers spciaux rembobinant les bandes commencent 
   0, 0 tant le premier lecteur de bande SCSI (/dev/st0 cr par _mknod
   /dev/st0 c 9 0_), le deuxime lecteur tant /dev/st1 (_mknod /dev/st1
   c 9 1_), etc.

   Les mineurs des fichiers spciaux ne rembobinant pas les bandes ont le
   bit de poids fort  1, c'est--dire que /dev/nst0 a t cr par :
   _mknod /dev/nst0 c 9 128_.

   La convention standard de nommage est

/dev/nst{chiffre} pour les oprations sans rembobinage
/dev/st{chiffre}  pour les oprations avec rembobinage

9. Pilote gnrique

   Les informations contenues dans ce chapitre sont spcifiques au pilote
   SCSI gnrique.

9.1 Matriel support

   Le pilote SCSI gnrique fournit une interface normalise permettant
   d'envoyer des commandes SCSI  tous les priphriques SCSI - disques,
   bandes, CDROM, chargeurs multi-disques, etc.

   Tout quipement lectriquement compatible avec votre carte SCSI doit
   fonctionner.

9.2 Problmes frquents

   Aucun :-)

9.3 Fichiers spciaux

   Les fichiers spciaux du pilote SCSI gnrique utilisent le mode
   caractre, de majeur 21. A cause des mmes contraintes que
   prcdemment, les mineurs sont attribus dynamiquement  partir de 0,
   un par priphrique,

/dev/sg0

   correspondant au plus petit priphrique ou unit logique sur le
   premier contrleur.

10. Guide de l'acheteur

   Une question frquente est :

   "Linux gre un nombre plutt lev de contrleurs diffrents. Quel
   contrleur dois-je acheter ?"

   La rponse dpend des performances que vous esprez ou dont vous avez
   besoin, de la carte mre et des priphriques que vous avez
   l'intention de connecter  votre machine.

10.1 Types de transfert

   Le facteur le plus important affectant les performances (en terme de
   dbit et de temps de rponse lors des E/S SCSI) est le type de
   transfert utilis. La table ci-dessous liste les divers types de
   transfert, les effets de chacun sur les performances et quelques
   recommandations sur leur emploi.

   _Type de transfert_
          Description / Performance / Recommandations

   _Scrutation pure (Pure Polled)_
          Une carte d'E/S scrute conduit le processeur central  faire
          tout le traitement SCSI, y compris le protocole REQ/ACQ.

          Mme un processeur rapide va tre plus lent  grer les
          squences REQ/ACQ qu'une simple machine  tats finis. Le dbit
          peut descendre  150Ko/s sur une machine rapide et parfois
          60Ko/s sur une machine lente ( travers le systme de
          fichiers).

          Le pilote doit galement se mettre en boucle (tight loop) tant
          que le bus SCSI est occup, ce qui conduit  une utilisation de
          100% du processeur et  des temps de rponse dplorables lors
          des E/S SCSI. Les lecteurs de CDROM lents qui ne se
          dconnectent/reconnectent pas vont compltement crouler le
          systme avec de telles cartes.

          Non recommandes.

   _Scrutation inter-verrouille (Interlocked Polled)_
          Les cartes utilisant des E/S  scrutation inter-verrouille
          sont principalement les mmes que les cartes prcdentes, le
          protocole REQ/ACQ tant effectu conjointement avec les signaux
          de protocole du bus PC. Tous les traitements SCSI hors
          protocole REQ/ACQ sont grs par le processeur.

          Avec de telles cartes, des pointes de 500-600Ko/s peuvent tre
          mesures  travers le systme de fichiers.

          De mme qu'avec les cartes  scrutation pure, le pilote doit se
          mettre en boucle tant que le bus SCSI est occup, ce qui rend
          l'utilisation du processeur dpendante des taux de transfert
          des priphriques et des dconnexions/reconnexions.
          L'utilisation du processeur peut varier de 25% pour des
          lecteurs de CDROM simple vitesse qui grent proprement les
          dconnexions/reconnexions,  100% pour les priphriques
          rapides ou les lecteurs de CDROM dficients qui n'arrivent pas
           se dconnecter/reconnecter.

          Sur mon 486-66, avec une carte T128, j'utilise 90% du
          processeur pour un dbit soutenu de 547Ko/s avec un disque dont
          le dbit maximum est de 1080Ko/s.

          Ces cartes sont parfois acceptables pour des priphriques
          lents (bandes, CDROM) lorsque le prix est le principal critre.

   _Scrutation par FIFO (FIFO Polled)_
          Les cartes implmentant une scrutation par FIFO utilisent un
          tampon de taille rduite (typiquement 8Ko) entre le processeur
          et le bus SCSI et possdent quelque intelligence. Le processeur
          principal n'est plus mis  contribution que lors des transferts
          de donnes  pleine vitesse avec la FIFO ou lorsqu'il termine
          le traitement des interruptions FIFO pour les conditions vides,
          les dconnexions/reconnexions, etc.

          Les taux de transfert maximums devraient tre suffisants pour
          traiter la plupart des priphriques SCSI et peuvent atteindre
          4Mo/s sur un Seagate Baracuda rapide avec une Adaptec 1520 en
          utilisant des commandes SCSI directes de lecture de blocs de
          64Ko.

          L'utilisation du processeur central dpend des taux de
          transfert des priphriques, les plus rapides gnrant le plus
          d'interruptions et demandant donc plus de temps processeur.
          Bien que le taux d'utilisation du processeur puisse tre
          important avec des priphriques rapides (jusqu' 75%), le
          systme reste utilisable. Ces cartes offrent une excellente
          rponse interactive avec des priphriques dfectueux qui ne se
          dconnectent/reconnectent pas (typiquement, des lecteurs CDROM
          bon march).

          Recommandes pour un usage personnel, pour un budget
          raisonnable.

   _DMA esclave_
          Les pilotes pour les cartes mettant en oeuvre du DMA esclave
          programment le contrleur DMA du PC pour un canal lorsqu'elles
          font un transfert de donnes et rendent le contrle au
          processeur principal.

          Les taux de transfert sont habituellement pnaliss par les
          mauvaises performances des contrleurs DMA utiliss sur les PC,
          une telle carte 8-bits ne pouvant pas dpasser les 140-150Ko/s.

          La consommation du processeur est trs raisonnable, lgrement
          moins qu'avec les cartes  scrutation par FIFO. Ces cartes
          tolrent parfaitement les priphriques dfectueux qui ne se
          dconnectent/reconnectent pas (typiquement, des lecteurs CDROM
          bon march).

          Acceptables pour les lecteurs CDROM lents, les lecteurs de
          bandes, etc.

   _DMA  contrle de bus (Busmastering DMA)_
          Ces cartes sont intelligentes. Les pilotes pour ces contrleurs
          envoient dans une structure d'E/S une commande SCSI,
          l'identificateur de la destination et de son unit logique,
          ainsi que l'adresse de fin des donnes, puis ils avertissent la
          carte qu'ils ont une commande pour elle. Le pilote rend la main
          au systme et la carte rpond plus tard pour signaler qu'elle a
          termin l'E/S.

          Puisque l'intelligence est dans le firmware du contrleur et
          non dans le pilote, les pilotes pour ces cartes supportent
          classiquement plus de fonctionnalits - transferts synchrones,
          files marques (tagged queuing), etc.

          Avec les patches de lectures/critures groupes, des taux de
          transferts  travers le systme de fichiers atteignent
          pratiquement 100% des performances maximales en criture et 75%
          en lecture.

          L'utilisation du processeur est rduite  son minimum, quelle
          que soit la charge des E/S, avec 5% d'utilisation sur des accs
           un CDROM double vitesse via une Adaptec 1540 et 20% lors d'un
          transfert soutenu  1,2Mo/s sur un disque SCSI.

          Recommandes dans tous les cas o le prix n'est pas la
          priorit, o la carte mre n'est pas dfectueuse (certaines de
          ces cartes ne fonctionnent pas avec le contrle de bus) et o
          des applications pour lesquelles le temps d'obtention des
          donnes est plus important que le dbit (le supplment
          (overhead) d  l'utilisation d'un contrleur de bus est de
          3-4ms par commande) ne seront pas utilises.

10.2 Dcoupage/Rassemblage (Scatter/gather)

   Le second point le plus important pour les performances est la gestion
   des E/S par dcoupage/rassemblage. Le supplment d'excution d'une
   commande SCSI est non ngligeable (de l'ordre de plusieurs
   millisecondes). Les contrleurs de bus intelligents tels que l'Adaptec
   1540 peuvent prendre 3-4ms pour traiter une commande SCSI avant mme
   que la cible ne la reoive. Sur les priphriques non bufferiss, ce
   supplment est toujours suffisant pour manquer un tour de galette, ce
   qui conduit  des taux de transfert de 60Ko/s (sur un lecteur  3.600
   tours/minute) par bloc transfr. Ainsi, pour maximiser les
   performances, il est ncessaire de minimiser le nombre de commandes
   SCSI envoyes pour transfrer une certaine quantit de donnes en
   augmentant le nombre d'octets transfrs pour chaque commande. La
   conception du cache des tampons de Linux fait que les blocs disque
   contigus ne sont pas contigus en mmoire. Avec les patches de
   lectures/critures groupes, 4Ko utiles de donnes sont! ! ! contigus.
   La taille totale des blocs transfrs en une seule commande SCSI est
   donc de 1Ko * nombre de rgions de dcoupage/rassemblage sans le
   patch et de 4Ko * nombre de rgions avec. Nous avons dtermin
   exprimentalement que 64Ko est une valeur raisonnable pour une seule
   commande SCSI - c'est--dire 64 buffers de dcoupage/rassemblage sans
   le patch, 16 avec. Suite au changement de 16Ko  64Ko des transferts,
   nous avons observ une amlioration de 50% du dbit maximal,  travers
   le systme de fichiers, pour les critures et les lectures,  100%
   pour les premires et 75% pour les secondes, avec une carte Adaptec
   1540.

10.3 BAL contre non-BAL (Mailbox vs. non-mailbox)

   Certains contrleurs intelligents, comme les cartes Ultrastor, WD7000,
   Adaptec 1540, 1740 et BusLogic ont utilis une interface de type bote
   aux lettres, dans laquelle les commandes SCSI sont excutes
   simplement en plaant une structure SCSI  une adresse mmoire donne
   (BAL), en le signalant  la carte (c'est--dire en positionnant un
   indicateur d'mission pour la BAL), puis en attendant une rponse
   (courrier entrant). Grce  cette interface de programmation de haut
   niveau, les utilisateurs peuvent souvent mettre  jour leur carte pour
   bnficier des avantages des nouvelles fonctionnalits, telles que le
   FAST ou le WIDE SCSI, sans modifications du logiciel. Les pilotes ont
   tendance  tre plus simples,  offrir plus de fonctionnalits et 
   tre plus stables.

   D'autres contrleurs intelligents, comme la famille des NCR53c7/8xx ou
   les composants Adaptec AIC-7770/7870 (comprenant les cartes 274x, 284x
   et 2940) utilisent une interface de programmation de moins haut
   niveau. Leurs performances peuvent tre meilleures, puisque la charge
   de travail peut tre rpartie entre le processeur de la carte et le
   processeur (plus rapide) principal de la machine. Ils offrent
   galement une plus grande souplesse pour la ralisation de certaines
   fonctionnalits (le mode cible (target mode) pour certains
   priphriques par exemple). De plus, ces cartes peuvent tre plus
   conomiques  la production (dans certains cas, cette conomie se
   retrouve au niveau du consommateur - voir les NCR). En contrepartie,
   les pilotes sont plus compliqus (comprenez : sont plus sujets  avoir
   des erreurs) et ils doivent tre modifis pour prendre en compte les
   fonctionnalits prsentes sur les composants plus rcents.

10.4 Les types de bus

   Le type du bus est le prochain choix  considrer (ISA, EISA, VESA et
   PCI). Les personnes charges du marketing clament souvent des dbits
   maximums (bandwidth) absurdes, bass sur des taux de transfert en
   rafale (burst) qui relvent presque de la fiction et qui ne servent de
   toute faon  rien. Par opposition, j'ai choisi de parler de valeurs
   ralistes, quotidiennes, bases sur les performances mesures avec
   divers priphriques.

   _Bus_
          Dbit maximum / description,

   _ISA_
          Le dbit maximum est lgrement meilleur que 5Mo/s pour des
          cartes  contrle de bus. Avec un bus ISA, l'arbitrage des
          contrleurs de bus est ralis par un vnrable DMA 8237 ; les
          temps d'acquisition du bus sont relativement mdiocres. Les
          pilotes d'interruptions sont  trois tats (tri-state) ou sur
          changement d'tat (edge triggered). Cela signifie que les
          interruptions ne peuvent pas tre partages. Gnralement,
          l'ISA n'est pas bufferis et le bus mmoire de la machine hte
          est occup  chaque transfert. Aucun mcanisme n'existe pour
          empcher une saturation du bus.

   _VESA_
          Le dbit maximum se situe aux alentours de 30Mo/s. Certains
          systmes VESA exploitent le bus en dehors de ses
          spcifications, ce qui les rend incompatibles avec certaines
          cartes. Tenez-en compte au moment d'acheter votre matriel s'il
          ne bnficie pas d'une garantie. Gnralement, le VESA est non
          bufferis ; le bus mmoire de la machine hte est occup 
          chaque transfert.

   _EISA_
          Le dbit maximum se situe aux alentours de 30Mo/s, les
          oprations de contrle de bus tant gnralement plus rapides
          que pour le VESA. Certains systmes EISA bufferisent le bus, ce
          qui permet d'observer des transferts en rafale vers le bus
          mmoire de la machine hte, plus rapide, et de minimiser
          l'impact sur les performances du processeur central. Les
          gestionnaires d'interruptions EISA peuvent tre  trois tats
          (tri-state), sur changement d'tat (edge triggered) ou actifs
          sur collecteur ouvert (open collector level-active) ; cela
          permet le partage des interruptions avec les autres
          gestionnaires qui le grent. Puisque l'EISA alloue un espace
          d'adressage spar pour chaque carte, il est habituellement
          moins sujet aux conflits de ressources que l'ISA ou le VESA.

   _PCI_
          Le dbit maximum se situe aux alentours de 60Mo/s. La plupart
          des systmes PCI utilisent des tampons d'criture diffre
          (write posting buffers) sur la carte, ce qui permet de
          minimiser l'effet des transferts rapides de part et d'autre sur
          les performances du bus et du processeur central. Les
          gestionnaires d'interruptions PCI sont actifs sur collecteur
          ouvert ; cela permet le partage des interruptions avec les
          autres gestionnaires qui le grent. Des mcanismes sont prvus
          pour viter la saturation du bus et pour permettre  l'esclave
          et au matre de suspendre une opration de contrle de bus.

          Puisque le PCI offre un mcanisme plug-n-play via des registres
          de configuration rinscriptibles sur chaque carte, dans un
          espace d'adressage spar, un systme qui implmente
          correctement la gestion PCI est plug-and play.

          Le PCI est trs svre sur la longueur des pistes, la charge,
          les spcifications mcaniques, etc. et devrait finalement tre
          plus fiable que le VESA ou l'ISA.

          Pour rsumer, le PCI est le meilleur bus pour PC ; il a
          cependant des inconvnients. Le PCI en est encore  ses
          balbutiements et, bien que les constructeurs aient corrig les
          problmes, il circule toujours quelques vieilles cartes au
          composant PCI ou au BIOS dfectueux. Je recommanderais pour
          cette raison que vous vous assuriez de pouvoir retourner le
          matriel en cas de dfaut. Si les plus rcentes cartes PCI sont
          vritablement plug-and-play, les anciennes cartes ncssitaient
          une intervention de la part de l'utilisateur pour positionner
          correctement les cavaliers et configurer le logiciel
          (l'affectation des interruptions par exemple). Bien que la
          plupart des utilisateurs aient rsolu leurs problmes PCI, cela
          a demand du temps et je dconseillerais l'achat d'une carte
          PCI si la disponibilit du systme est trs critique.

   Pour de nombreux priphriques SCSI lents (disques  2Mo/s ou moins,
   lecteurs de CDROM, lecteurs de bandes), il n'y a pas de grandes
   variations de dbit en fonction de l'interface avec le bus du PC. Pour
   les disques SCSI actuels (typiquement, les derniers disques haut de
   gamme de plusieurs giga-octets ont un taux par tte de 4  5Mo/s et
   plusieurs compagnies exprimentent des disques  14Mo/s par tte), le
   dbit sera nettement meilleur avec des contrleurs sur des bus plus
   rapides ; certains ont mme relev un facteur d'amlioration de 2,5 en
   passant d'une carte ISA Adaptec 1542  une carte PCI NCR53c810.

   A l'exception des cas o un mcanisme d'criture diffre ou de
   bufferisation des critures est mis en oeuvre, lorsqu'un des bus de
   votre systme est occup, tous les autres bus sont inutilisables.
   Ainsi, bien qu'une saturation du bus n'affecte pas les performances
   SCSI, elle peut avoir un effet ngatif sur la rponse interactive du
   systme. Par exemple, si vous avez un disque SCSI  4Mo/s en ISA, vous
   perdrez 80% de votre bande passante. Dans un systme ISA/VESA, vous
   n'obtiendrez pas mieux que 6Mo/s. La plupart du temps, l'impact sur
   les tches en arrire plan est galement trs sensible.

   Notez bien qu'avoir plus de 16Mo de mmoire n'implique pas
   l'utilisation d'une carte SCSI  contrle de bus ISA. Contrairement 
   certains autres systmes d'exploitation, Linux effectue une double
   bufferisation lors des transferts  accs direct mmoire (DMA) sur un
   contrleur ISA  destination d'une zone au-del des 16Mo. De tels
   transferts ne sont pnaliss que de 1,5%, ce qui est trs raisonnable.

   Pour terminer, la diffrence de prix pour des cartes  contrle de bus
   pour chacune de ces interfaces de bus est souvent minime.

   Avec tout cela  l'esprit, en fonction de vos priorits, vos
   prfrences iront vers

Stabilit, installations critiques,
et pas de garantie                      EISA ISA VESA PCI

Performances et installations personnelles
                                        PCI EISA VESA ISA

   Comme je l'ai dj mentionn plus haut, le contrle de bus (bus
   mastering) plus que tout autre mode de transfert aura un impact
   bnfique sur les performances de tout le systme et il doit tre plus
   important dans votre choix que le type de bus au moment de votre achat
   d'une carte SCSI.

10.5 Priphriques multiples

   Si vous envisagez d'utiliser plusieurs priphriques sur votre bus
   SCSI, assurez-vous que votre contrleur est capable de supporter
   plusieurs commandes en attente  un instant donn. C'est essentiel
   pour les lecteurs de bandes et souhaitable si vous comptez mlanger
   des priphriques de vitesses diffrentes (un lecteur de CDROM et un
   disque dur, par exemple). Si le pilote Linux ne gre qu'une seule
   commande  la fois, vous risquez de bloquer vos entres/sorties avec
   vos disques durs pendant que le lecteur de bandes rembobine ou va  la
   fin de la cassette (cela peut durer une demi-heure). Avec deux
   disques, le problme n'est pas aussi sensible, bien que le dbit
   atteigne la moyenne des deux transferts, plutt que leur somme.

10.6 Les options SCSI-I, SCSI-II, SCSI-III FAST et WIDE, etc.

   Au fil des ans, le SCSI a volu, les nouvelles versions de la norme
   apportant de meilleures performances, des mthodes pour augmenter les
   dbits, des commandes normalises pour les nouveaux priphriques et
   de nouvelles commandes pour les priphriques dj supports.

   En tant que telles, les volutions de la version ne signifient rien.
   Exception faite de quelques dtails mineurs (du genre : le SCSI-II
   n'autorise pas l'option "initiateur unique" du SCSI-I), les versions
   sont compatibles ascendantes, les nouvelles fonctionnalits tant
   intgres en tant qu'options et n'tant pas obligatoires. La dcision
   d'appeler un priphrique SCSI SCSI-I, SCSI-II ou SCSI-III est donc
   entirement un choix de vente.

10.7 Comparaison des pilotes

   Comparaison des pilotes (les chips supports sont lists entre
   parenthses)

                                        Nombre de
                                        commandes       SG              > 1
Pilote          Mode de transfert       simultanes     limite          cartes

                                        total/LUN

AM53C974        Contrle de bus, DMA    12s/1s          255s            O
aha152x         Scrutation par FIFO(8k) 7s/1s           255s            N
    (AIC6260,
    AIC6360)
aha1542         Contrle de bus, DMA    8s/1s           16              O
aha1740         Contrle de bus, DMA    32s             16              N
aha274x         Contrle de bus, DMA    4s/1s           255s            O
BusLogic        Contrle de bus, DMA    192/31          128s, 8192h     O
(ces valeurs sont valables pour les BT-948/958/958D, les cartes plus
                             anciennes supportant moins de commandes)

eata_dma        Contrle de bus, DMA    64s-8192h/2-64  512s, 8192h     O
fdomain         Scrutation par FIFO(8k) 1s              64s             N
    (TMC1800,   sauf le TMC18c30
    TMC18c30,   avec une FIFO de 2k
    TMC18c50,
    TMC36c70)

in2000*         Scrutation par FIFO(2k) 1s              255s            N
g_NCR5380       Scrutation pure         16s/2s          255s            O
    (NCR5380,
    NCR53c80,
    NCR5381,
    NCR53c400)
gsi8*           DMA esclave             16s/2s          255s
    (NCR5380)
PAS16           Scrutation pure         16s/2s          255s            O
    (NCR5380)   ou Scrutation inter-verrouille
                (quelques checs sur certains systmes !)
seagate         Scrutation inter-verrouille
                                        1s/1s           255s            N
wd7000          Contrle de bus, DMA    16s/1s          16              O
t128            Scrutation inter-verrouille
                                        16s             255s            O
    (NCR5380)
qlogic          Scrutation inter-verrouille
                                        1s/1s           255s            N
ultrastor       Contrle de bus, DMA    16s/2s          32              O
53c7,8xx        Contrle de bus, DMA
    (NCR53c810,
     NCR53c815,
     NCR53c820,
     NCR53c825)
    rel5                                1s/1s           127s            N
    rel10                               8s/1s           127s            O

   Remarques :
    1. Les pilotes marqus d'un astrisque (*) ne sont pas inclus dans la
       distribution du noyau et des images de dmarrage binaires peuvent
       ne pas tre disponibles.
    2. Les nombres suffixs par un 's' reprsentent des limites
       arbitraires dans le logiciel, qui peuvent tre changes par un
       #define au moment de la compilation.
    3. Les limitations matrielles sont indiques par le suffixe 'h' et
       peuvent diffrer des limites logicielles actuellement imposes par
       les pilotes de Linux.
    4. Des nombres sans suffixe peuvent indiquer soit des limitations
       matrielles, soit des limitations logicielles.
    5. La version 5 du pilote NCR53c810 est incluse dans les noyaux
       standard 1.2.x et 1.3.x ; la version 10 peut tre tlcharge par
       FTP anonyme.
    6. A l'exception de la AM53C974, les cartes  contrle de bus DMA
       sont intelligentes ; les NCR excutent du microcode depuis la
       mmoire principale, les AIC7770 excutent leur microcode depuis de
       la mmoire embarque sur le composant, toutes les autres utilisent
       une interface du style BAL (mailbox).

10.8 Comparaison des contrleurs

Carte                   Pilote          Bus     Prix    Remarques

Adaptec AIC-6260        aha152x         ISA             composant,
                                                        pas une carte
Adaptec AIC-6360        aha152x         VLB             composant,
                                                        pas une carte
    (utilis dans la plupart des cartes multi-E/S
     VESA/ISA avec des cartes principales Zenon)
Adaptec 1520            aha152x         ISA
Adaptec 1522            aha152x         ISA     $80     1520 avec CdD
                                                        (Contrleur de Disquet-
                                                         tes)
Adaptec 1510            aha152x         ISA             1520 sans ROM de boot,
                                                        auto-dtection chouent
.
Adaptec 1540C           aha1542         ISA
Adaptec 1542C           aha1542         ISA             1540C avec CdD
Adaptec 1540CF          aha1542         ISA             FAST SCSI-II
Adaptec 1542CF          aha1542         ISA     $200    1540CF avec CdD
Adaptec 1640            aha1542         MCA

Adaptec 1740            aha1740         EISA            n'est plus fabrique
Adaptec 1742            aha1740         EISA            n'est plus fabrique
                                                        1740
                                                        avec CdD
Adaptec 2740            aha274x         EISA
Adaptec 2742            aha274x         EISA            avec CdD
Adaptec 2840            aha274x         VLB
Adaptec 2842            aha274x         VLB             avec CdD
Adaptec 2940            aha274x         PCI
Always IN2000           in2000          ISA
BusLogic BT-948         BusLogic        PCI     $180    Ultra SCSI
BusLogic BT-958         BusLogic        PCI     $230    Wide Ultra SCSI

   (reportez-vous au chapitre Cartes contrleurs multi-matres BusLogic
   pour des dtails sur d'autres cartes BusLogic)
DPT     PM2011          eata_dma        ISA             FAST SCSI-II
        PM2012A         eata_dma        EISA            FAST SCSI-II
        PM2012B         eata_dma        EISA            FAST SCSI-II
        PM2021          eata_dma        ISA             FAST SCSI-II
        PM2022          eata_dma        EISA            FAST SCSI-II
        PM2024          eata_dma        PCI             FAST SCSI-II
        PM2122          eata_dma        EISA            FAST SCSI-II
        PM2322          eata_dma        EISA            FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2124          eata_dma        PCI             FAST SCSI-II
        PM2041W         eata_dma        ISA             Wide
                                                        Terminaison unique
                                                                (Single-ended)
                                                        SCSI-II
        PM2041UW        eata_dma        ISA             Ultra Wide
                                                        Terminaison unique
        PM2042W         eata_dma        EISA            Wide
                                                        Terminaison unique
        PM2042UW        eata_dma        EISA            Ultra Wide
                                                        Terminaison unique
        PM2044W         eata_dma        PCI             Wide
                                                        Terminaison unique
        PM2044UW        eata_dma        PCI             Ultra Wide
                                                        Terminaison unique
        PM2142W         eata_dma        EISA            Wide
                                                        Terminaison unique
        PM2142UW        eata_dma        EISA            Ultra Wide
                                                        Terminaison unique
        PM2144W         eata_dma        PCI             Wide
                                                        Terminaison unique
        PM2144UW        eata_dma        PCI             Ultra Wide
                                                        Terminaison unique
        PM3021          eata_dma        ISA             multi-canaux
                                                        raid/emplacements simm
        PM3122          eata_dma        EISA            multi-canaux/raid
        PM3222          eata_dma        EISA            multi-canaux
                                                        raid/emplacements simm
        PM3224          eata_dma        PCI             multi-canaux
                                                        raid/emplacements simm
        PM3334          eata_dma        PCI             Wide Ultra SCSI
                                                        multi-canaux
                                                        raid/emplacements simm

DTC 3290                aha1542         EISA            bien qu'ils devraient
                                                        marcher, les matriels
                                                        DTC ne sont pas grs,
                                                         cause de la politique
                                                        de diffusion des docu-
                                                        mentations
DTC 3130                53c7,8xx        PCI             '810
DTC 3130B               53c7,8xx        PCI             '815
DTC 3292                aha1542         EISA            3290 avec CdD
DTC 3292                aha1542         EISA            3290 avec CdD
Future Domain 1680      fdomain         ISA             CdD
Future Domain 3260      fdomain         PCI
NCR53c810 (cartes       53c7,8xx        PCI     $60     composant, pas une
    vendues                                     (carte) carte. Les cartes ne
    par FIC, Chaintech,                                 possdent pas de BIOS,
    Nextor, Gigabyte, etc.                              bien que la plupart des
    Cartes avec composant vendues                       cartes non quipes de
    par AMI, ASUS, J-Bond,                              NCR aient le BIOS SDMS
    etc. Frquentes dans les
    systmes PCI DEC)
NCR53c815 (            53c7,8xx         PCI     $100    NCR53c810 + BIOS
    Intel PCISCSIKIT,
    NCR8150S, etc.)
NCR53c825              53c7,8xx         PCI     $120    Variante "WIDE" du
                                                        NCR53c815.  Notez que
                                                        le pilote actuel de
                                                        Linux ne ngocie pas de
                                                        transferts "WIDE".
Pro Audio Spectrum 16   pas16           ISA             Carte son avec SCSI
Seagate ST01            seagate         ISA     $20     Le BIOS ne marche qu'a-
                                                        vec certains lecteurs
Seagate ST02            seagate         ISA     $40     ST01 avec CdD
Sound Blaster 16 SCSI   aha152x         ISA             Carte son avec SCSI
Western Digital 7000    wd7000          ISA             avec CdD
Trantor T128            t128            ISA
Trantor T128F           t128            ISA             T128 avec CdD et sup-
                                                        port pour des IRQs le-
                                                        ves
Trantor T130B           g_NCR5380       ISA
Ultrastor 14F           ultrastor       ISA             avec CdD
Ultrastor 24F           ultrastor       EISA            avec CdD
Ultrastor 34F           ultrastor       VLB

   Remarques :
    1. Trantor a t rcemment rachete par Adaptec et certains de leurs
       produits sont maintenant vendus sous le nom d'Adaptec.
    2. Suite  un dpt de bilan, il n'existe plus aucun support
       technique  cette heure pour les cartes Ultrastor.
    3. Le prix des cartes  contrle de bus NCR53c810 n'est pas une
       erreur de frappe ; il inclut le paquetage standard des pilotes
       ASPI/CAM pour DOS, OS/2 et Windows (accs 32 bits) et d'autres
       pilotes peuvent tre tlchargs gratuitement. Certains n'ont pas
       eu  se plaindre de la compagnie

SW (swt@netcom.com) (214) 907-0871 fax (214) 907-9339

       Au 23 dcembre 1995, leur prix tait de $53 pour les cartes '810.
    4. Les derniers composants SCSI d'Adaptec font montre d'une
       sensibilit inhabituelle aux problmes de cblage et de
       terminaison. C'est pourquoi je ne recommanderais pas les cartes
       Adaptec 154x C et CF, pas plus que la srie 2xxx. A remarquer que
       ces problmes de fiabilit ne sont pas constats sur les vieilles
       cartes 154x B et 174x A ou encore, d'aprs ce que j'en sais, sur
       les cartes  base des composants AIC-6360/AIC-6260 (1505, 1510,
       1520, etc.). La qualit de leur support technique a galement
       baiss, les dlais se sont frquemment allongs et les employs
       sont incomptents (arguant par exemple de certaines clauses de
       confidentialit sur des documents, alors qu'il n'y en avait pas),
       parfois hostiles (refusant de passer les questions  d'autres
       techniciens lorsqu'ils sont incapables d'y rpondre eux-mmes).
    5. Si des utilisateurs dsirent une collaboration ou veulent tablir
       des relations 'politiques' avec Adaptec, les remarques prcdentes
       doivent tres prises en considration. Cela tant, les Adaptec
       152x/1510/1505 sont meilleures que les autres cartes ISA dans la
       mme gamme de prix et il y a des affaires  faire avec des cartes
       usages ou des surplus de 154x B et 1742, ce qui,  mon avis, doit
       faire oublier le problme du support.
    6. Toutes les cartes DPT peuvent tre mises  jour avec des modules
       mmoire (cache) et raid. Toutes les cartes sont galement
       disponibles en versions "Wide" et/ou diffrentielles.
    7. Les cartes NCR ne sont pas toutes quivalentes. Ainsi, alors que
       l'ASUS SC200 utilise une terminaison active, la plupart des autres
       cartes NCR53c810 utilisent une terminaison passive. Presque toutes
       les cartes '825 ont une terminaison active, mais certaines ont une
       ROM pour le BIOS tandis que d'autres ont une ROM Flash. La plupart
       des cartes '825 ont un large connecteur externe, un large
       connecteur interne et un connecteur interne fin, bien que
       quelques-unes n'aient pas ce dernier (les cartes bon march de
       CSC).

10.9 Pour rsumer

   La majorit des utilisateurs de cartes ISA, EISA, VESA et PCI seront
   probablement mieux servis par les cartes multi-matres BusLogic, de
   par leur performance, leurs fonctionnalits (comme la terminaison
   active) et leur compatibilit avec les Adaptec 1540. Un certain nombre
   de modles est disponible avec des interfaces EISA, ISA, PCI et VESA,
   en terminaison simple ou diffrentielle, en 8 ou 16 bits. Les tous
   rcents modles Ultra SCSI PCI, les BT-948/958/958D, incluent
   galement une ROM Flash pour faciliter les mises  jour du firmware et
   une terminaison automatique "adaptative" (smart termination).

   Les personnes dsirant tirer les meilleures performances d'E/S peuvent
   envisager l'acquisition de cartes de chez DPT, qui sont les seules 
   grer le RAID, le cache et plusieurs canaux SCSI.

   Les personnes avec des systmes PCI pourront regarder du ct des
   cartes bases sur le composant NCR53c8xx. Ce sont des cartes 
   contrle de bus ; on peut trouver des '810  $53 l'unit (c'est--dire
   moins chres que les Adaptec 1520). Le magazine C't a valu certaines
   de ces cartes. Il ressort des tests qu'elles sont plus rapides que les
   Adaptec 2940 et les BusLogic BT-946C (sous DOS) et qu'elles s'en
   tirent honorablement sous Linux (jusqu' 6Mo/s  travers le systme de
   fichiers). Les inconvnients de ces cartes compares aux BusLogic est
   qu'elles ne sont pas compatibles avec les Adaptec 1540, qu'elles
   peuvent tre livres avec ou sans terminaison active et que vous allez
   devoir rcuprer les dernires versions des pilotes (standard dans les
   noyaux 1.3.5x et disponibles par FTP pour les noyaux 1.2.x) pour
   exploiter pleinement le matriel, et qu'enfin vous aurez peut-tre
   plus de problmes qu'avec des interfaces de type BAL (mailbox) comme
   sur les BusLogic ou les DPT.

   S'il est important que tout marche du premier coup, une carte
   multi-matres BusLogic ou DPT est probablement le meilleur choix, la
   simplicit des interfaces de type BAL compare  la complexit des
   interfaces des NCR53c8xx et des Adaptec AIC7xxx faisant la diffrence.

   Ceux qui veulent des cartes non PCI pour un petit budget seront
   certainement heureux de trouver leur bonheur dans les surplus de
   cartes Adaptec 154x B ou 174x A, voire avec des clones d'Adaptec 1520
   (aux alentours de $80) pour des cartes neuves. Ces cartes ont des
   dbits et une rponse interactive acceptables pour un prix modique.

11. Affectation des numros de mineur

   Suite  l'utilisation par Linux du type dev_t sur 16 bits, 8 bits
   tant rservs pour le mineur, les disques SCSI, les lecteurs de
   bandes ou de CDROM et les fichiers spciaux gnriques ont des mineurs
   attribus dynamiquement, suivant l'algorithme suivant :

Pour tous les contrleurs SCSI, de scsi0 jusqu' scsiN
        Pour tous les identificateurs SCSI sur le bus, de 0  7, sauf pour
        l'identificateur du contrleur courant
                Pour toutes les units logiques, de 0  max_scsi_luns
                - test de la combinaison <bus, cible, unit logique> en
                  envoyant une commande TEST UNIT READY. Si une unit logique
                  est suppose absente, ne plus continuer les tests pour le
                  couple <bus, cible>.
                - mission d'une commande INQUIRY pour dterminer ce qui
                  a t trouv (type du priphrique, vendeur, modle,
                  version du firmware, etc.).
                - renvoi du rsultat de cette reconnaissance  une fonction
                  spciale d'identification propre  chaque pilote de haut
                  niveau prsent (par exemple le pilote de disques, de
                  lecteur de bandes, etc.). Attachement de ce priphrique
                   la prochaine unit disponible pour chaque pilote qui
                  dsire grer ce priphrique. Le gestionnaire gnrique
                  va tous les attacher.
                - s'il s'agissait d'un priphrique SCSI-I ou qui fait
                  partie d'une liste de priphriques connus comme ne
                  grant pas plusieurs units logiques, stopper les tests
                  pour le couple <bus, cible>.
                - s'il s'agissait d'un priphrique connu comme pouvant
                  grer plusieurs units logiques, une scrutation de toutes
                  les units logiques potentielles est commence, surchargeant
                  la valeur max_scsi_luns.

   Il y a souvent des problmes avec ce genre d'approche, car si votre
   systme possde des priphriques qui ne sont pas branchs en
   permanence, les mineurs vont dpendre des priphriques prsents au
   moment du boot. Cela peut tre gnant, car les scripts de dmarrage ou
   le fichier /etc/fstab peuvent contenir des instructions pour monter
   des partitions spcifiques. Ces commandes peuvent chouer si le disque
   a un mineur diffrent d'une fois sur l'autre.

   Ce problme n'a pas t compltement rsolu. Un programme qu'on peut
   trouver sur tsx-11 cre une arborescence /dev/scsi base sur le numro
   d'hte, l'identificateur et le numro d'unit logique. Ce n'est pas
   particulirement propre, mais cela permet d'viter pas mal d'ennuis.

   Une meilleure solution passera sans doute par le pseudo rpertoire
   /proc/scsi. Nous y travaillons actuellement, aussi pour l'instant ne
   pouvons-nous pas dire quelle sera sa forme dfinitive. A l'heure o
   j'cris ces lignes, cette approche semble prometteuse pour rsoudre
   certains de ces points.
