Le SCSI HOWTO Linux
 par  Drew Eckhardt,<[email protected]> (transforme au for-
 mat      linuxdoc-sgml      par      Dieter       Faulbaum),
 <[email protected]>   (Adaptation  francaise  :  Thierry
 Danis [email protected], le 28 Novembre 1997).
 Version 2.30, 30 Aout 1996

 11..  IInnttrroodduuccttiioonn

 CCooppyyrriigghhtt

 Ce document est distribue sous les contraintes de la GPL  (GNU  Public
 Licence).  Les  lignes  suivantes sont le texte integral 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'apprecierais   que   les   personnes
 interessees a publier ce document me demandent (<[email protected]>)
 auparavant si une version plus recente existe. A  chaque  fois  qu'une
 version  un peu ancienne est publiee, on me pose des questions qui ont
 deja leur reponse dans les derniers documents,  et  la  reputation  de
 l'editeur  en  fait  les  frais.  Je  prefererais  egalement que toute
 reference a un site de distribution gratuit, voire a des distributeurs
 commerciaux, soit laissee 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-systeme SCSI de Linux, tel qu'il existe dans
 le noyau version 1.2.10 et dans des  codes  alpha  plus  recents.  Les
 versions plus vieilles du code SCSI ne sont pplluuss ssuuppppoorrtteeeess et peuvent
 differer sensiblement en ce qui concerne les pilotes implementes,  les
 performances et les options disponibles.

 Pour  toute information supplementaire, vous pouvez vous inscrire a la
 liste   de   diffusion   linux-scsi,   en   envoyant   un   email    a
 [email protected]  contenant  la ligne suivante dans le corps
 du message :

      subscribe linux-scsi

 Vous pouvez vous radier de la liste en envoyant un  email  a  la  meme
 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 a l'adresse suivante :

      [email protected]

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

 22..  LLeess pprroobblleemmeess ccoouurraannttss

 Ce chapitre recense un  certain  nombre  de  problemes  habituellement
 rencontres.  S'il  n'y   a  rien  ici  qui  reponde  a  vos questions,
 consultez egalement les chapitres relatifs aux cartes  d'interface  et
 aux peripheriques.

 22..11..  DDyyssffoonnccttiioonnnneemmeenntt ggeenneerraalliissee

 Si vous rencontrez des erreurs aleatoires, il y a fort a parier que la
 cause en est un cable defectueux ou une mauvaise terminaison.

 Certaines  cartes,  comme  celles  architecturees  autour  du   recent
 composant  NCR,  effectuent  un  filtrage numerique et une negociation
 active de signal et sont par le fait moins sensibles aux problemes  de
 connectique.

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

 Je le repete donc : certaines cartes sont ttrreess sensibles aux problemes
 de mauvais  cables  et  de  terminaison,  aussi  est-il  important  de
 verifier  ces  deux  points  avant  toute  chose lorsque des problemes
 apparaissent.

 Pour diminuer les risques potentiels, vous devez utiliser  des  cables
 qui :

 1. se prevalent d'une compatibilite SCSI-II,

 2. ont une impedance caracteristique de 132 ohms,

 3. proviennent  tous  d'une  meme  source,  afin  d'eviter  les ecarts
    d'impedance,

 4. sont proposees par un vendeur repute (tel qu'Amphenol).

 Un leger courant pour la  terminaison  doit  etre  fourni  par  chaque
 equipement  present  sur le bus SCSI, via une diode pour prevenir tout
 retour de tension.  De  cette  maniere,  une  tension  suffisante  est
 disponible  en bout de chaine, la ou le bus en a besoin. Pour prevenir
 tout endommagement du a un court-circuit, TERMPWR doit  etre  controle
 au  travers  d'un fusible ou de tout autre dispositif de limitation du
 courant.

 Si plusieurs equipements, des cables externes ou un FAST SCSI  2  sont
 utilises,  une  terminaison  -- active ou forcee -- parfaite doit etre
 mise a chaque extremite du bus.

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

 22..22..  LLaa lliiggnnee ddee ccoommmmaannddee dduu nnooyyaauu

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

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

 Demarrez  votre  systeme avec LILO et appuyez sur une des touches ALT,
 CTRL ou SHIFT, au  moment  ou  il  affiche  le  prompt.  LILO  devrait
 repondre par :

      :

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

      :?

      ramdisk floppy disquedur

 Pour  demarrer  (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 separee de la precedente par un espace.
 L'appui sur ENTREE  valide  la  ligne  et  continue  le  processus  de
 demarrage.

 Les options sont de la forme :

      variable=liste_de_valeurs

 Ici,  lliissttee__ddee__vvaalleeuurrss  peut  etre  une  simple valeur ou une liste de
 valeurs delimitees par des virgules, sans espaces. Exception faite  de
 la  specification  du  peripherique  de  boot, chaque valeur doit etre
 numerique et peut etre fournie en decimal ou en hexadecimal.

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

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

 Si  vous  ne  tenez  pas  a taper cette commande a chaque demarrage du
 systeme, il est egalement 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"

 22..33..  UUnn ppeerriipphheerriiqquuee aappppaarraaiitt aa ttoouutteess lleess aaddrreesssseess SSCCSSII

 Si c'est le cas, vous avez certainement selectionne comme adresse pour
 ce peripherique la meme adresse que le controleur  (traditionnellement
 l'adresse  7,  bien  que quelques cartes soient configurees autrement,
 comme certaines Future Domain fixees a 6 par exemple).

 Changez la configuration des cavaliers.

 22..44..  LLee mmeemmee ppeerriipphheerriiqquuee eesstt rreeccoonnnnuu aa cchhaaqquuee uunniittee llooggiiqquuee

 Ce peripherique a certainement un firmware bugge.

 Une  solution  temporaire  consiste  a  utiliser  la ligne de commande
 suivante :

      max_scsi_luns=1

 Si cela marche, vous pouvez ajouter votre peripherique a la liste  des
 peripheriques  bugges,  dans  les  sources  du  noyau.  La variable en
 question  s'appelle  bbllaacckklliisstt  et   se   trouve   dans   le   fichier
 drivers/scsi/scsi.c.   Envoyez  ensuite  le  patch  a  Linus  Torvalds
 <[email protected]>.

 22..55..  VVoouuss aavveezz ddeess ''sseennssee eerrrroorrss'' aalloorrss  qquuee  vvoouuss  ssaavveezz  qquuee  vvoottrree
 mmaatteerriieell nn''aa ppaass dd''eerrrreeuurrss

 Cela est parfois du a un mauvais  cordon  ou  a  une  terminaison  mal
 adaptee.

 Referez-vous au chapitre ``Dysfonctionnement generalise''.

 22..66..  UUnn nnooyyaauu ccoonnffiigguurree aavveecc ssuuppppoorrtt rreesseeaauu nnee mmaarrcchhee ppaass

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

 22..77..  DDeess ppeerriipphheerriiqquueess ssoonntt ddeetteecctteess,,  mmaaiiss  iill  eesstt  iimmppoossssiibbllee  dd''yy
 aacccceeddeerr

 Un peripherique SCSI a  ete  detecte  par  le  noyau  mais  vous  etes
 incapable  d'y  acceder (les commandes mkfs /dev/sdc, tar xvf /dev/st2
 par exemple echouent).

 Vous n'avez pas de fichier special /dev/xxx pour votre peripherique.

 Sous Unix, les peripheriques sont en mode bloc ou en  mode  caractere.
 Les  peripheriques en mode bloc utilisent un mecanisme de cache, alors
 que les peripheriques en mode caractere ne sont  pas  bufferises.   Un
 peripherique  est  donc  defini  sous  Unix  par  son  mode  (bloc  ou
 caractere), son numero majeur (ce numero correspond au pilote  qui  le
 gere  --  ainsi, le majeur mode bloc 8 correspond aux disques SCSI) et
 un numero mineur (ce mineur definit quelle unite est accedee via cette
 specification  de peripherique -- ainsi, le peripherique reference par
 le majeur  caractere  4  et  le  mineur  0  est  la  premiere  console
 virtuelle, mineur 1 est la console suivante, etc.). Cependant, acceder
 aux  peripheriques  par  un  espace  de  nommage  separe  romprait  la
 tradition  d'Unix/Linux  ('tout  est  fichier'  !). C'est pourquoi des
 fichiers speciaux sont crees sous /dev.  Ces  fichiers  speciaux  vous
 permettront  d'acceder  directement  a votre troisieme disque SCSI via
 /dev/sdc, au premier port serie via /dev/ttyS0, etc.

 La meilleure methode pour creer un fichier special est  d'utiliser  le
 script MAKEDEV :

 cd /dev

 puis

 MAKEDEV  (en  tant  que  root)  pour les peripheriques que vous voulez
 creer. Par exemple :

       ./MAKEDEV sdc

 Les caracteres generiques "devraient" marcher. Par exemple :

       ./MAKEDEV sd\*

 "devrait" creer les entrees pour tous les disques  SCSI  (la  commande
 precedente  devrait  avoir  cree  /dev/sda  a  /dev/sdp, avec 15 sous-
 partitions pour chaque disque).

       ./MAKEDEV sdc\*

 "devrait" creer les entrees 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 a
 cette facon de faire ou pourrait avoir restreint le nombre de fichiers
 speciaux qu'il peut creer, auquel cas ce qui precede  ne  serait  plus
 tout a fait vrai.

 Si  MAKEDEV  ne fait pas le travail pour vous, vous allez devoir creer
 les fichiers speciaux a la main grace a la commande mmkknnoodd.

 Le mode (bloc ou caractere), le majeur et le mineur sont precises pour
 les  divers peripheriques SCSI dans le chapitre ``Fichiers speciaux''.

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

      mknod /dev/peripherique b|c majeur mineur

 par exemple :

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

 22..88..  LLee SSCCSSII ssee bbllooqquuee

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

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

 Il se peut egalement que ce soit du a des secteurs defectueux  sur  un
 des  disques  ou  encore  a une mauvaise gestion du DMA (Direct Memory
 Access) par la carte mere (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 peripheriques sont utilises en
 meme temps sur le bus. Si votre  controleur  est  capable  de  traiter
 plusieurs  requetes  en meme temps, essayer de reduire la taille de la
 queue a 1 et regardez si la situation s'ameliore. Cela etant, si  vous
 utilisez  des  peripheriques  lents (lecteurs de bandes ou lecteurs de
 CDROM peu  rapides),  reduire  ainsi  la  taille  de  la  queue  n'est
 certainement pas la meilleure solution.

 22..99..  CCoonnffiigguurreerr eett rreeggeenneerreerr llee nnooyyaauu

 Les  pilotes  SCSI  non  utilises  consomment  inutilement de precieux
 octets et peuvent amener les systemes possedant peu de  memoire  a  en
 manquer  (la  memoire  du  noyau  est non paginable (swappable)). Pour
 cette raison, il est recommande de generer un noyau ne comportant  que
 le strict necessaire pour votre machine.

      cd /usr/src/linux

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

      ROOT_DEV =

 et

      SVGA_MODE =

 sont correctement positionnees.

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

      make mrproper

 Dans tous les cas, vous devrez configurer le noyau :

      make config

 Repondez  aux  questions.  Apres avoir sauvegarde votre configuration,
 regenerez les dependances et recompilez le noyau :

 make depend
 make

 Une fois la generation du noyau terminee, n'oubliez  pas  de  relancer
 lilo  (//ssbbiinn//lliilloo).  Vous pouvez egalement construire une disquette de
 demarrage :

      make zdisk

 22..1100..  LLeess uunniitteess llooggiiqquueess aauuttrreess qquuee llaa pprreemmiieerree nnee ffoonnccttiioonnnneenntt ppaass

 De  nombreux  peripheriques  SCSI  verrouillent completement le bus ou
 reagissent bizarrement lorsque  vous  tentez  d'acceder  a  une  unite
 logique  (LUN)  qui  n'est  pas l'unite 0. C'est pourquoi les versions
 recentes du noyau Linux n'essaient  plus  par  defaut  de  tester  les
 unites  logiques  autres  que  0.   Si  cela  vous  gene,  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, malgre tout, vos unites logiques ne sont toujours pas correctement
 detectees (cela peut arriver avec de vieux controleurs 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;

 33..  SSiiggnnaalleerr uunnee aannoommaalliiee

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

 Si  apres  avoir mis a jour votre noyau et lu entierement ce document,
 vous pensez vraiment avoir decouvert un probleme, envoyez par email un
 rapport  d'anomalie  a  la  liste  de  diffusion  SCSI, ou il aura des
 chances d'etre lu par la plupart  des  personnes  ayant  participe  au
 developpement des pilotes SCSI pour Linux.

 Mettez  dans  votre  rapport  d'anomalie  le maximum d'information sur
 votre configuration materielle, le texte exact des messages que  Linux
 affiche  au  demarrage,  le  moment  ou  l'erreur se produit et a quel
 endroit dans les  sources  l'erreur  a  ete  levee.  Referez-vous  aux
 chapitres ``Capture des messages SCSI'' et ``Localisation de l'origine
 d'un panic()''.

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

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

 33..11..  CCaappttuurree ddeess mmeessssaaggeess SSCCSSII

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

      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  ccaatt  //pprroocc//kkmmssgg  se
 termine) puis tapez CTRL-C.

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

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

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

      mkdir /tmp/dos

 Inserez la disquette dans un lecteur non utilise 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

 Demontez votre disquette DOS

      umount /tmp/dos

 et arretez Linux.

      shutdown

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

 33..22..  LLooccaalliissaattiioonn ddee ll''oorriiggiinnee dd''uunn ppaanniicc(())

 Ainsi  que  d'autres  Unix le font, Linux appelle la fonction du noyau
 panic()  lorsqu'une  erreur   fatale   est   detectee.   Par   contre,
 contrairement a d'autres Unix, Linux ne produit pas un fichier de dump
 dans la swap. Il ne redemarre pas non plus. Il laisse dans le  fichier
 de traces des informations interessantes. 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  hexadecimale  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 etes  en  train  d'executer)  la  plus
 grande valeur inferieure a 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 autorise les  options  de  debug  (vous
 pouvez  aussi  les  autoriser  a  un  niveau plus global en editant le
 fichier /usr/src/linux/Makefile et en  ajoutant  l'option  "-g"  a  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

 Regenerez le noyau, incrementalement ou en tapant

      make clean
      make

 Rendez  le  noyau  demarrable  (bootable) en creant une entree dans le
 fichier /etc/lilo.conf :

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

 N'oubliez pas de relancer LILO en tant  que  root  (//ssbbiinn//lliilloo).  Vous
 pouvez aussi creer une disquette de demarrage :

      make zImage

 Redemarrez et notez le nouvel EIP pour l'erreur.

 Si  vous  avez  installe  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 repondre 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>.

 Memorisez cette information. Entrez ensuite

      list <numero 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 egalement cette information, car elle permettra de fournir
 le  contexte  dans  lequel l'erreur s'est produite, pour le cas ou les
 developpeurs n'auraient pas exactement la meme arborescence.

 44..  LLeess mmoodduulleess

 Ce chapitre fournit des details specifiques sur le support des modules
 chargeables  et  sur la maniere dont ces modules sont utilises avec le
 SCSI.

 44..11..  IInnffoorrmmaattiioonnss ggeenneerraalleess

 Les   modules   chargeables   permettent   a   l'utilisateur   ou    a
 l'administrateur  du systeme d'etendre les fonctionnalites du noyau en
 y chargeant des fichiers objet. L'utilisation  la  plus  courante  des
 modules  est  l'ajout  de pilotes pour de nouveaux peripheriques ou la
 prise en compte de differents types de systemes de fichiers.

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

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

 Les modules sont parfaits pour les portables, qui ont tendance a  etre
 moins  fournis  que  leurs  grands  freres de bureaux. Dans ce cas, un
 noyau aussi reduit que possible  avec  chargement  des  modules  a  la
 demande  est  l'ideal.  De  plus,  les  modules  sont  bien adaptes au
 mecanisme des cartes PCMCIA,  puisqu'ils  peuvent  etre  charges  puis
 decharges  au  gre  des insertions/retraits des cartes PCMCIA. (Note :
 actuellement, les pilotes qlogic et 152x supportent le PCMCIA).

 Un dernier avantage des modules est que les  developpeurs  de  pilotes
 ont  plus  de  facilite  a  mettre au point et tester leurs pilotes si
 ceux-ci sont sous forme  de  modules  (il  n'est  plus  necessaire  de
 redemarrer  la  machine  a  chaque  essai, a condition bien sur que le
 pilote ne soit pas bugge 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 peripherique
 SCSI, vous ne serez pas capable d'utiliser les versions 'modularisees'
 des  pilotes SCSI necessaires a l'acces a votre disque. Cela est du au
 fait que le noyau doit etre capable  de  monter  la  partition  racine
 avant  de  pouvoir  charger  le  moindre module depuis le disque. Cela
 etant, des reflexions sont en cours pour modifier le  chargeur  et  le
 noyau  de  maniere  a  ce  que celui-ci soit capable de precharger des
 modules avant d'essayer de monter la partition  racine.  Il  est  fort
 probable qu'a l'avenir la limitation actuelle ne soit plus de mise.

 44..22..  LLee ssuuppppoorrtt ddeess mmoodduulleess ddaannss lleess nnooyyaauuxx 11..22..NN

 Les  modules  noyau  pour le SCSI sont partiellement supportes dans la
 serie 1.2.N du noyau.  Alors  qu'aucun  des  pilotes  de  haut  niveau
 (disque,  bande, etc.) ne peut etre modularise, la plupart des pilotes
 de bas niveau peuvent etre charges et  decharges  a  la  demande  (par
 exemple  les 1542 et 1522). Chaque fois qu'un pilote de bas niveau est
 charge, il commence  par  rechercher  les  cartes  qu'il  peut  gerer.
 Ensuite,  pour  chaque  carte  detectee, le bus SCSI est scrute et des
 structures de donnees internes sont renseignees, si  bien  qu'il  sera
 possible   d'utiliser  tous  les  peripheriques  attaches  aux  cartes
 reconnues.

 Lorsque vous en avez termine avec un pilote de  bas  niveau,  celui-ci
 peut etre decharge. Gardez a l'esprit que l'utilisation d'un pilote se
 fait au travers des montages,  des  fichiers  ouverts,  etc.  Si  vous
 essayez  de  decharger  un  module  en cours d'utilisation (utilitaire
 rrmmmmoodd), le noyau va refuser le retrait du pilote. Lorsqu'un pilote est
 decharge, toutes ses structures internes sont liberees, si bien que le
 systeme retourne dans l'etat ou il se trouvait  avant  l'insertion  du
 module. Vous pourrez recharger le pilote plus tard si vous le desirez.

 44..33..  LLee ssuuppppoorrtt ddeess mmoodduulleess ddaannss lleess nnooyyaauuxx 11..33..NN

 Le code SCSI a ete completement modularise dans les noyaux 1.3.N. Vous
 pouvez  donc  demarrer  avec  un noyau n'ayant aucun support SCSI, les
 modules  se  chargeant  par  la  suite,  jusqu'a  ce  que   tous   les
 peripheriques SCSI possibles soient accessibles.

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

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

 Maintenant que "scsi_mod" est  present  dans  le  noyau,  vous  pouvez
 ajouter  les  modules  plus  ou  moins  dans n'importe quel ordre pour
 ouvrir l'acces a vos peripheriques. Des compteurs  d'utilisation  sont
 presents  pour  eviter  de  retirer un pilote occupe. 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 generique se trouvent
 respectivement dans les modules  "sd_mod",  "sr_mod",  "st"  et  "sg".
 Lorsque  vous chargez un pilote de haut niveau, tous les peripheriques
 detectes (par les pilotes de bas niveau) et geres par ce  pilote  sont
 automatiquement actives.

 L'utilisation des modules avec des pilotes de bas niveau a ete decrite
 dans le chapitre ``Le support des modules  dans  les  noyaux  1.2.N''.
 Lorsqu'un pilote de bas niveau est charge, le bus est scrute et chaque
 peripherique reconnu est ensuite eventuellement pris en charge par  un
 pilote de plus haut niveau (voir paragraphe precedent).

 55..  CCaarrtteess dd''iinntteerrffaaccee

 Ce chapitre donne des informations specifiques sur les diverses cartes
 d'interface SCSI qui sont supportees d'une maniere ou d'une autre  par
 Linux.

 55..11..  MMaatteerriieell ssuuppppoorrttee eett nnoonn ssuuppppoorrttee

 Les pilotes de la distribution du noyau :

 Adaptec   152x,   Adaptec  154x  (les  cartes  DTC  329x  fonctionnent
 theoriquement, mais ne sont pas explicitement gerees),  Adaptec  174x,
 Adaptec  274x/284x (le support pour la 294x necessite une version plus
 recente 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 serie (sauf les cartes 840, 841, 880 et  881  a  moins
 que  vous  n'appliquiez le patch adequat), 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  precedemment  citees
 fonctionnent.

 Les pilotes alpha :

 Plusieurs pilotes ALPHA sont disponibles a

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

 Certains pilotes fonctionnent apres quelques modifications :

 NCR53c8x0/7x0:

      Un pilote NCR53c8xx a ete developpe mais il ne marche toujours pas avec les
      composants NCR53c700, NCR53c700-66, NCR53c710 et NCR53c720. Une liste des
      modifications necessaires pour le faire marcher sur chacun de ces composants
      est fournie ci-apres, accompagnee d'un resume de la difficulte de chaque patch.

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

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

      NCR53c700, NCR53c700-66 (tres complique) - modifications dans la detection
      des composants, dans la phase d'initialisation. Modification du code du NCR
      pour ne pas utiliser DSA, modification du code de la gestion des commutations
      de contextes.

 Les cartes SCSI qui ne marcheront pas :

 Tous  les  adapteurs  parallele->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 supportees.

 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  necessite  la
 signature   d'un  accord  de  confidentialite  (NDA  :  non-disclosure
 agreement) avec DTC/CMD.  En consequence, distribuer  un  pilote  pour
 Linux  est  impossible  car  se  conformer a cet accord signifie qu'il
 n'est pas possible de fournir les sources, ce qui est en violation  de
 la  GPL.  Inversement,  se conformer a la GPL signifie que les sources
 doivent etre rendus publics, ce qui est en conflit avec la NDA.

 Si vous voulez utiliser Linux  sur  du  materiel  non  supporte,  deux
 options s'offrent a vous :

 1. ecrire  vous-meme  le  pilote (Eric Youngdale et moi-meme repondons
    volontiers aux questions  techniques  sur  les  pilotes  SCSI  pour
    Linux),

 2. faire developper le pilote (les tarifs habituels des sous-traitants
    rendent  cette   solution   non   viable   pour   une   utilisation
    personnelle),

 55..11..11..  CCaarrtteess ccoonnttrroolleeuurr mmuullttiipplleess

 Avec  certaines  cartes  (voir ``Guide de l'acheteur : comparaison des
 fonctionnalites''), vous pouvez utiliser plusieurs controleurs du meme
 type  sur la meme machine. Dans ce cas, la plus petite adresse SCSI va
 etre referencee par le noyau comme scsi0,  la  suivante  comme  scsi1,
 etc.

 Dans tous les cas, il est possible d'utiliser des controleurs de types
 differents, sous reserve que leurs adresses n'entrent pas en  conflit.
 Les  cartes controleur sont scrutees dans l'ordre suivant (defini 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-a-dire si vous n'utilisez pas  en  meme
 temps  une  BusLogic  et  une Adaptec), le tableau precedent peut etre
 change pour definir un ordre qui vous convient  mieux  (de  maniere  a
 garder  le  meme  ordre pour les peripheriques de votre ancienne carte
 lorsque vous ajoutez une nouvelle carte dans votre systeme);  il  vous
 suffit de deplacer les entrees du tableau.

 55..22..  PPrroobblleemmeess hhaabbiittuueellss

 55..22..11..  TTiimmeeoouuttss SSCCSSII

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

 55..22..22..  EEcchheecc ddee ll''aauuttoo--ddeetteeccttiioonn ddeess ccaarrtteess  qquuii  ss''aappppuuiieenntt  ssuurr  llee
 BBIIOOSS

 Si votre controleur 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 detecte au demarrage (vous avez eu par exemple :

      scsi : 0 hosts

 ou encore

      scsi%d : type

 au  demarrage),  vous  avez  certainement  un probleme avec la routine
 d'auto-detection qui ne reconnait pas votre carte controleur.

 L'auto-detection echoue pour les pilotes qui s'appuient sur le BIOS si
 celui-ci  est  desactive.  Verifiez  plutot deux fois qu'une que votre
 BIOS est active et qu'il n'entre pas en conflit avec celui d'un  autre
 peripherique.

 L'auto-detection  peut egalement echouer 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 installe, redemarrez sous DOS et utilisez DEBUG pour
 trouver la signature de votre carte.

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

      debug
      d c800:0
      q

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

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

 Reportez-vous a la section appropriee de votre carte SCSI, ainsi qu'au
 chapitre ``Dysfonctionnement generalise''.

 55..22..33..  PPaannnneess ddee ccoonnttrroolleeuurrss uuttiilliissaanntt ddeess EE//SS mmaappppeeeess eenn mmeemmooiirree

 (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 a un 'cache' des ports  d'entrees/sorties
 incorrect.  L'espace  d'adressage  de la carte doit etre indique comme
 'non cachable' dans les parametres  de  la  XCMOS.  Si  ce  n'est  pas
 possible, il vous faudra completement interdire le 'cache'.

 Si  vous  avez  manuellement specifie l'adresse de la carte, souvenez-
 vous que Linux a besoin de la veritable adresse de la carte et non pas
 de  l'adresse  segmentee  (par  segments  de  16 octets) a laquelle la
 documentation pourrait faire reference.

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

 55..22..44..  kkeerrnneell ppaanniicc :: ccaannnnoott mmoouunntt rroooott ddeevviiccee"" aauu ddeemmaarrrraaggee aavveecc uunnee
 ddiissqquueettttee ddee ddeemmaarrrraaggee ccoommppoorrttaanntt uunn ppiilloottee AALLPPHHAA

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

 1. le  peripherique  de  pagination  (swap) par defaut. Il se trouve a
    l'offset 502 et doit valoir 0x00 0x00

 2. la taille du disque memoire (RAM disk) se trouve  a  l'offset  504.
    Elle doit valoir la taille de la disquette de demarrage, en Ko. Par
    exemple, pour une disquette  5,25",  on  trouvera  1200.  Pour  une
    disquette 3,5", on aura 1440.

      C'est a dire que les octets doivent etre

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

 3. l'identificateur  du  peripherique  de  la  racine (root device) se
    trouve a la position 508 et doit valoir 0x00 0x00  (qui  represente
    le peripherique de demarrage).

 Recopiez  le  fichier  sur  la  disquette  par  dddd ou rraawwrriittee. Inserez
 ensuite la disquette dans un lecteur  puis  relancez.  Attendez  qu'il
 vous  soit  demande  d'inserer  la  disquette  racine (root disk) puis
 mettez celle fournie avec votre distribution.

 55..22..55..  IInnssttaallllaattiioonn dd''uunn ppiilloottee nnoonn iinncclluuss ddaannss llee nnooyyaauu ddee  llaa  ddiiss--
 ttrriibbuuttiioonn

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

 Des versions recentes du noyau sont presentes a l'adresse

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

 dans les fichiers linux-version.tar.gz

 On peut egalement 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

 Desarchivez 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 a un des repertoires de l'arborescence. En
 recherchant la chaine '---' dans le  fichier  de  patch,  vous  pouvez
 savoir a partir d'ou l'appliquer. Ainsi, des lignes

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

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

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

 Desarchivez les sources du pilote a l'endroit approprie :

      tar tfv patches.tar

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

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

      patch -p0 < patch_file

 Vous  pouvez  egalement  demander  a  'patch'  d'eliminer  les chemins
 initiaux des noms des fichiers a  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 operations suivantes :

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

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

 Une fois les patches appliques, verifiez qu'il n'y a pas eu de  rejets
 (un  fichier  de  rejet  a  la  meme nom que le fichier a modifier, un
 suffixe # y etant ajoute).

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

 Si vous trouvez des fichiers de rejet, editez-les. Parfois, seules les
 chaines  d'identification RCS seront differentes. Cela ne posera alors
 pas  de  probleme.  Dans  d'autres  cas,  il  vous  faudra   appliquer
 d'importantes  parties du patch a la main. Il n'est pas dans l'optique
 de ce document de decrire les fichiers de differences ou l'utilisation
 de patch.

 Referez-vous  egalement  a  la  section  ``Configurer  et regenerer le
 noyau''.

 55..22..66..  IInnssttaallllaattiioonn dd''uunn ppiilloottee qquuii nn''aa ppaass ddee ppaattcchheess

 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 booleenne  pour  votre  pilote)  dans  le
    chapitre

      *
      * SCSI low-level drivers
      *

 Par exemple

      bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y

 3. ajoutez les entrees dans le Makefile

    Editez  /usr/src/linux/drivers/scsi/Makefile  et ajoutez une entree
    similaire a

      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  genere a partir de votre fichier source (le .c est
 remplace par le .o).

 4. ajoutez les points d'entree

    Editez /usr/src/linux/drivers/scsi/hosts.c puis ajoutez un #include
    pour  le fichier d'entete, mis en conditionnel par la constante que
    vous venez  de  definir  dans  le  fichier  de  configuration.  Par
    exemple, apres

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

 vous pouvez ajouter

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

 Vous  devez egalement ajouter l'entree 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 a :

      #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 con-
 ditionnelle par le symbole que vous venez de definir dans  le  fichier
 de configuration.

 Par exemple, apres

      #ifdef CONFIG_SCSI_GENERIC_NCR5380
              GENERIC_NCR5380,
      #endif

 vous pouvez ajouter

      #ifdef CONFIG_SCSI_IN2000
              IN2000,
      #endif

 Referez-vous au chapitre ``Configurer et regenerer le noyau''.

 55..22..77..  PPaannnnee dd''uunnee ccaarrttee PPCCII ddaannss uunn ssyysstteemmee CCoommppaaqq

 Un  certain  nombre de machines Compaq logent les extensions 32-bit du
 BIOS permettant de tester les controleurs PCI dans  une  zone  memoire
 inaccessible  au  noyau  Linux  (cela  est  du  a l'organisation de la
 memoire). Si Linux est incapable de detecter une carte PCI SCSI connue
 comme etant supportee 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.

 55..22..88..  UUnn ssyysstteemmee SSCCSSII aavveecc ddeess ccoonnttrroolleeuurrss PPCCII ssee  bbllooqquuee  aapprreess  llee
 mmeessssaaggee %%dd HHoossttss

 Certains  systemes  PCI  ont  un  BIOS  defectueux  qui   masque   les
 interruptions  et  qui n'arrive pas a les demasquer avant de rendre la
 main a l'appelant. Le patch suivant corrige ce probleme :

 --- 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;
  }

 55..33..  AAddaapptteecc 115522xx,, 115511xx,, 11550055,, 228822xx,, SSoouunndd BBllaasstteerr 1166 SSCCSSII,, SSCCSSII PPrroo,,
 GGiiggaabbyyttee eett aauuttrreess pprroodduuiittss bbaasseess ssuurr ll''AAIICC 66226600//66336600 ((ssttaannddaarrdd))

 Configurations supportees :

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

 Auto-detection :

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

 Surcharge de l'auto-detection :

 Au moment de la compilation :

      Definissez PORTBASE, IRQ, SCSI_ID, RECONNECT, PARITE de maniere adequate (voir Definitions)

 Ligne de commande du noyau :

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

 Le  champ  SCSI-ID  est  l'identificateur SCSI de la carte controleur.
 Aucun autre peripherique connecte sur ce bus SCSI  ne  doit  avoir  ce
 numero. Habituellement, il est fixe a 7.

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

      aha152x=0x340,11,7,1

 Problemes prehistoriques, resolus en mettant a jour le noyau :

 1. le  pilote  n'arrive  pas  a  gerer  les  cartes VLB. Il y avait un
    probleme de temporisation avec les noyaux anterieurs a  la  version
    1.0.5.

 Les constantes :

      AUTOCONF       : utiliser la configuration reportee par le controleur (uniquement pour les 152x)
      IRQ            : surcharge du niveau d'interruption (9,10,11 ou 12) (11 par defaut)
      SCSI_ID        : surcharge du SCSI ID de l'AIC-6260 (0-7) (7 par defaut)
      RECONNECT      : surcharge l'indicateur de deconnexion/reselection (une valeur non nulle
                       signifie 'autoriser', une valeur nulle signifie 'interdire')
      DONT_SNARF     : n'enregistre pas les ports (pl12 et inferieurs)
      SKIP_BIOSTEST  : ne teste pas la signature du BIOS (pour la AHA-1510 ou en cas de BIOS debraye)
      PORTBASE       : force le port de base. Il ne faut pas essayer l'auto-detection

 55..44..  AAddaapptteecc 115544xx,, AAMMII FFaassttDDiisskk VVLLBB,, DDTTCC 332299xx ((ssttaannddaarrdd))

 Configurations supportees :

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

 Auto-detection :

      detecte uniquement les cartes en 0x330 et 0x334.

 Surcharge de l'auto-detection :

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

 Notes :

 1. BusLogic  produit  une  serie  de cartes logiciellement compatibles
    avec les Adaptec 1542. Ces cartes existent en  ISA,  VLB,  EISA  et
    plusieurs varietes en PCI.

 2. Des  cartes  sans  suffixe  et  les  premieres cartes a suffixe 'A'
    n'acceptent pas le 'decoupage' /  'reassemblage'  (scatter/gather),
    et,  de ce fait, ne fonctionnent pas. Moyennant une redefinition du
    mot 'fonctionnement', on peut les  faire  marcher  a  condition  de
    mettre  AAHHAA11554422__SSCCAATTTTEERR a 0 dans le fichier drivers/scsi/aha1542.h.

 Problemes prehistoriques, resolus en mettant a jour le noyau :

 1. Les versions du noyau anterieures a la version  0.99.10  ne  gerent
    pas la version 'C' des controleurs.

 2. Les  versions  du noyau anterieures a la version 0.99.14k ne gerent
    pas les options suivantes pour les cartes version 'C' :

 +o  support du BIOS pour le mapping etendu des disques > 1G

 +o  support du BIOS pour plus de 2 disques

 +o  support du BIOS pour la scrutation automatique du bus SCSI

 3. Les versions du noyau anterieures a la version 0.99.15e  ne  gerent
    pas  les  versions  'C' avec support du BIOS pour plus de 2 disques
    active et le support du BIOS pour le mapping etendu des  disques  >
    1G desactive

 4. Les  versions  du  noyau  anterieures  a  la  version  0.99.14u  ne
    supportent les versions 'CF' de ce type de cartes

 5. Il existait un sequencement  critique  (race  condition)  dans  les
    versions  du noyau anterieures a la version 1.0.5 lorsque plusieurs
    peripheriques etaient accedes simultanement.

 Problemes frequents :

 1. erreurs 'non attendues' avec des cartes 154xC ou 154xCF.

    Certaines cartes 154xC parmi les premiers exemplaires generaient un
    signal  a  haute  frequence sur un des signaux SCSI, provoquant des
    reflexions dans des cables de mauvaise impedance.

    Les nouvelles cartes  ne  sont  pas  vraiment  meilleures  et  sont
    pointilleuses  sur  la qualite des cables et sur la sensibilite des
    terminaisons.

    Referez-vous aux chapitres Problemes frequents  ``#2''  et  ``#3'',
    ``Problemes habituels'', ou ``Dysfonctionnement generalise''.

 2. erreurs  'non  attendues' avec des cartes 154xC ou 154x lorsqu'a la
    fois des peripheriques internes et externes sont connectes.

    C'est probablement un probleme  de  terminaison.  Afin  de  pouvoir
    utiliser   l'option   logicielle   permettant   de   desactiver  la
    terminaison interne de la carte, vous devez positionner le cavalier
    1 sur OFF.

    Referez-vous  aux  chapitres  Problemes frequents ``#1'' et ``#3'',
    ``Problemes habituels'', ou ``Dysfonctionnement generalise''.

 3. le sous-systeme SCSI se bloque completement.

    Dans  certains  cas,  le  blocage  semble  se  produire   lors   de
    l'utilisation   simultanee  de  plusieurs  peripheriques.  Si  cela
    arrive, contactez le fabricant de ces peripheriques et voyez si une
    eventuelle  mise  a  jour  du  firmware  resoudrait le probleme. En
    dernier recours, vous pouvez modifier AAHHAA11554422__MMAAIILLBBOOXX a 1  dans  le
    fichier aha1542.h. Cela va limiter le nombre de commandes presentes
    sur le bus SCSI a 1 a la  fois.  Il  se  peut  que  ca  resolve  le
    probleme.   Par   contre,   une  fois  encore,  si  vous  avez  des
    peripheriques lents (lecteur  de  bandes,  lecteur  de  CDROM),  ce
    contournement risque de ne pas etre une solution utilisable.

    Reportez-vous  aux  chapitres Problemes frequents ``#1'' et ``#2'',
    ``Problemes habituels'' ou ``Le SCSI se bloque''.

 4. Le message  "Interrupt  received,  but  no  mail"  est  affiche  au
    demarrage et vos peripheriques SCSI ne sont pas detectes.

    Desactivez  les  options  du BIOS pour la gestion du mapping etendu
    pour les disques > 1G, pour la gestion de plus de  2  peripheriques
    et  pour la scrutation automatique du bus (autoscanning). Ou alors,
    passez a une version de Linux 0.99.14k (ou plus recente).

 5. Si des erreurs de temporisation infinie apparaissent sur des cartes
    version 'C', entrez dans le programme de configuration Adaptec puis
    autorisez la negociation synchrone.

 6. Linux 1.2.x affiche le message

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

    Cela est du a un conflit  sur  certains  systemes  avec  un  pilote
    BusLogic  obsolete.  Vous pouvez soit regenerer 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
    controleur. Par exemple, si votre carte Adaptec repond a  l'adresse
    0x334 et qu'il n'y a aucune autre carte en 0x330, utilisez la ligne
    de commande suivante :

      buslogic=0x330

 7. Le  systeme  se  bloque  lors  d'acces   simultanes   a   plusieurs
    peripheriques  sur  des  cartes  1542C ou 1540C avec la deconnexion
    activee.

    Quelques versions du firmware des Adaptec avaient des erreurs.  Une
    mise  a  jour  avec la version du BIOS v2.11 est censee corriger ce
    probleme.

 55..55..  AAddaapptteecc 117744xx

 Configurations supportees :

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

 Auto-detection :

      fonctionne avec toutes les configurations gerees

 Surcharge de l'auto-detection :

      aucune

 Remarque :

 1. Cette carte n'est plus fabriquee par Adaptec.

 Problemes courants :

 1. Si le pilote de l'Adaptec 1740 affiche le message  "aha1740:  Board
    detected, but EBCNTRL = %x, so disabled it."

    votre  carte a ete desactivee parce qu'elle ne tournait pas en mode
    etendu (enhanced mode). Les cartes qui fonctionnent  en  mode  1542
    standard ne sont pas gerees.

 55..66..  AAddaapptteecc 227744xx,, 228844xx ((ssttaannddaarrdd)) 229944xx ((AALLPPHHAA))

 Une  nouvelle  version  qui gere egalement les cartes Adaptec 294x est
 disponible a l'adresse

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

 Configurations supportees :

                          274x           284x            294x
      Emplacements EISA : 1-12           N/A             N/A
      Ports             : N/A            TOUS            TOUS
      IRQs              : ALL            TOUTES          TOUTES
      Canaux DMA        : N/A            TOUS            N/A
      E/S               : port mappe, controle de bus

 Surcharge de l'auto-detection :

 Ligne de commande du noyau :

      aha274x=extended
      (pour forcer le mapping etendu)

 Remarques :

 1. Le BIOS doit etre active

 2. Le canal B des cartes 2742AT est ignore

 3. CONFIG_PCI (lors de la generation du noyau) doit  etre  positionnee
    si vous utilisez une carte PCI.

 55..77..  AAllwwaayyss IINN22000000 ((ssttaannddaarrdd))

 Configurations supportees :

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

 Auto-detection :

      le BIOS n'est pas necessaire

 Surcharge de l'auto-detection :

      aucune

 Problemes courants :

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

 55..88..  CCaarrtteess ccoonnttrroolleeuurrss mmuullttii--mmaaiittrreess BBuussLLooggiicc

 (cette  section  est   Copyright   1995   par   Leonard   N.   Zubkoff
 <[email protected]>)   (le   fichier   README.BusLogic  constitue  une
 documentation plus complete du pilote BusLogic ; lisez-le)

                   Pilote SCSI BusLogic Multi-Maitres pour Linux

                        Version 1.2.2 pour Linux 1.2.13
                        Version 1.3.2 pour Linux 1.3.88

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

                                  16 Avril 1996

                                Leonard N. Zubkoff
                                Dandelion Digital
                                [email protected]

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

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

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

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

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

                         LES CONTROLEURS GERES

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

 Les series "W" :

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

 Les series "C" :

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

 Les series "S":

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

 Les series "A" :

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

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

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

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

 o Affectation des ports d'entree/sortie PCI

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

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

 o L'ordre de scrutation des emplacements PCI

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

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

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

                         LA LISTE DE DIFFUSION DES ANNONCES BUSLOGIC

 La  liste de diffusion des  annonces BusLogic constitue un forum d'information pour
 les  utilisateurs Linux des  nouveautes (nouvelles  versions du  pilote  et  autres
 annonces  concernant le  support pour  Linux des  controleurs  BusLogic). Pour vous
 inscrire a la liste, envoyez un message a l'adresse suivante :
 "[email protected]", avec la ligne  "subscribe" dans le corps
 du message.

 55..99..  LLeess ccoonnttrroolleeuurrss BBuussLLooggiicc FFllaasshhPPooiinntt

 (cette  section  est   Copyright   1995   par   Leonard   N.   Zubkoff
 <[email protected]>)

 Il  n'y a pas de pilote Linux pour les cartes FlashPoint LT/DL/LW (BT-930/932/950),
 et quand il va y en avoir ou s'il y en aura n'est pas tres clair. Les cartes Flash-
 Point  ont une  architecture differente des  cartes Multi-Maitres  et  n'ont pas de
 processeurs  sur la carte ; elles disposent d'un simple sequenceur SCSI. Elles sont
 concues pour les ordinateurs  de bureau  et ne sont pas  specialement concues  pour
 des systemes d'exploitation multitaches performants comme Linux.

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

 <debut de citation>

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

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

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

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

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

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

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

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

 Contactez le support technique de BusLogic a l'adresse [email protected] ou au
 +1 408 654-0760 pour beneficier de leur offre.

                 Leonard N. Zubkoff
                 [email protected]
 <fin de citation>

 55..1100..   SSmmaarrttCCaacchhee  IIVV  eett  SSmmaarrttRRAAIIDD ((ssttaannddaarrdd)) EEAATTAA:: DDPPTT SSmmaarrttCCaacchhee,,
 SSmmaarrttCCaacchhee PPlluuss,, SSmmaarrttCCaacchhee IIIIII,,

 Cartes  gerees  :  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 egalement les  versions  'differentielles'  des  controleurs  ci-
 dessus.

 et quelques controleurs de :

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

 Configurations supportees :

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

 Auto-detection :

      fonctionne avec toutes les configurations gerees

 La derniere version du pilote EATA-DMA est disponible a 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
 a la liste, envoyez un  message  a  "[email protected]"
 avec la ligne "subscribe" dans le corps du message.

 Support du repertoire /proc/scsi :

 Pour  avoir  acces  a  des  statistiques  plus  poussees,  entrez  les
 commandes suivantes :

 eecchhoo ""eeaattaa__ddmmaa llaatteennccyy"" >>//pprroocc//ssccssii//eeaattaa__ddmmaa//<<nnoo__ddrriivveerr>>

 Pour ensuite desactiver les statistiques, faites :

 eecchhoo ""eeaattaa__ddmmaa nnoollaatteennccyy"" >>//pprroocc//ssccssii//eeaattaa__ddmmaa//<<nnoo__ddrriivveerr>>

 Problemes habituels :

 1. La Slackware ne trouve pas le controleur.

    Solution : utilisez une des disquettes de boot ascsi*.

 2. Le pilote IDE arrive a detecter l'interface ST-506 de la carte EATA
    dans les anciens noyaux (<v1.3).

    a. Cela  ressemble a 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 problemes a cause de cela (vous ne pouvez
    pas acceder  a  vos  veritables  peripheriques  IDE  par  exemple),
    changez le port d'E/S et/ou les IRQ de la carte EATA.

    b. Si  le pilote IDE trouve des equipements qu'il sait traiter, par
       exemple des disques durs d'une capacite <=504MB, il  va  allouer
       le  port  d'E/S  et  l'IRQ de maniere a 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 defectueux.
    Contactez le support client de DPT pour une mise a jour.

 Remarques :

 1. CCOONNFFIIGG__PPCCII doit etre positionnee si vous utilisez une carte PCI.

 55..1111..  FFuuttuurree DDoommaaiinn 1166xx00 wwiitthh TTMMCC--11880000,, TTMMCC--1188CC3300,, TTMMCC--1188CC5500 oouu  ccoomm--
 ppoossaanntt TTMMCC--3366CC7700

 Configurations supportees :

      BIOS           : 2.0, 3.0, 3.2, 3.4, 3.5
      Adresses BIOS  : 0xc8000, 0xca000, 0xce000, 0xde000
      Ports          : 0x140, 0x150, 0x160, 0x170
      IRQs           : 3, 5, 10, 11, 12, 14, 15
      DMA            : non utilise
      E/S            : port mappe

 Auto-detection :

      fonctionne avec toutes les configurations gerees. Requiert un BIOS active

 Surcharge de l'auto-detection :

      aucune

 Problemes prehistoriques, regles par une mise a jour :

 1. Les vieilles versions ne gerent pas le composant  TMC-18C50  et  se
    plantent avec les nouvelles cartes.

 2. Les  routines  d'auto-detection des vieilles versions n'ont pas les
    plus recentes signatures des BIOS.

 3. Les versions avant celle incluse  dans  Linux  1.0.9  et  1.1.6  ne
    gerent pas le nouveau composant SCSI ou le BIOS 3.4.

 Remarque :

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

 55..1122..  NNCCRR55338800 ggeenneerriiqquuee // TT113300BB ((ssttaannddaarrdd))

 Configurations supportees et non supportees :

      Ports          : Tous
      IRQs           : Tous
      canaux DMA     : le DMA n'est pas utilise
      E/S            : port mappe

 Auto-detection :

      aucune

 Surcharge de l'auto-detection :

 A la compilation :

      definissez GENERIC_NCR5380_OVERRIDE. Ce doit etre un tableau de
      nuplets de la forme {'port', 'irq', 'dma', 'type de carte'}. Par exemple :
      #define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}}

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

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

      pour une carte T130B sur le port 0x350.

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

      Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent etre employees pour le
      champ IRQ.

 Ligne de commande du noyau :

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

      255 peut etre utilise pour 'pas d'irq' et 254 pour 'auto-detection de l'irq'.

 Problemes frequents :

 1. Utilisation  d'une  carte  T130B  avec  le  vieux  pilote   NCR5380
    generique  (version  6  pre-publique) qui ne gerait pas la ligne de
    commande pour le ncr53c400.

    Les registres des cartes compatibles NCR5380 ont un deplacement  de
    8  par  rapport  a  l'adresse  de base. Ainsi, si votre adresse est
    0x350, utilisez :

      ncr5380=0x358,254

 sur la ligne de commande du noyau.

 Problemes prehistoriques, regles par une mise a jour :

 1. Le noyau se bloque lors d'acces disques avec  une  carte  T130B  ou
    d'autres cartes NCR53c400.

    Les  versions  6  pre-publiques  du  pilote  generique  NCR5380  ne
    geraient pas les interruptions sur ces cartes.  Mettez a jour votre
    pilote.

 Remarques :

 1. Le  pilote  generique ne gere pas le DMA actuellement et le pseudo-
    DMA n'est pas mieux supporte par le pilote generique.

 55..1133..  NNCCRR5533cc88xxxx ((ssttaannddaarrdd))

 Configurations supportees et non supportees :

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

 Auto-detection :

      requiert un BIOS PCI, utilise les routines du BIOS PCI pour rechercher les
      controleurs et pour lire les donnees de configuration

 Le pilote utilise les valeurs pre-programmees dans certains  regsitres
 pour son initialisation, aussi un BIOS doit-il etre active.

 Problemes prehistoriques, regles par une mise a jour :

 1. D'anciennes   versions   de  Linux  avaient  un  probleme  avec  la
    pagination (swapping). Reportez-vous au chapitre  ``Le  systeme  se
    fige en swappant''

 2. Les  noyaux des distributions incluent la version 4 ou 5 du pilote,
    qui ne gere pas certaines  fonctionnalites  bien  utiles  comme  la
    deconnexion  /  reconnexion  (l'effet  le  plus manifeste en est le
    blocage complet des peripheriques SCSI lors  du  rembobinage  d'une
    bande), controleurs multiples et operations sans BIOS.

    La derniere version du pilote est disponible a 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 destinee exclusivement  aux  noyaux
 1.3.x.  Ces patches ne sont pas totalement propres, a 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-memes les
 (quatre) problemes d'application des patches, ne les utilisez  surtout
 pas.  Seul  le  dernier  patch  est  necessaire  ;  ce ne sont pas des
 versions incrementales.

 Si vous ne pouvez pas attendre et desirez utiliser le  dernier  pilote
 NCR avec un noyau 1.3.x, Harald Evensen <[email protected]> a
 adapte les patches pour les noyaux 1.3.x

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

 Ces patches devraient s'appliquer sans problemes.

 S'il vous plait, lisez tous les fichiers README dans ces  repertoires.
 Vous  devriez  egalement  rejoindre  la liste de diffusion NCR si vous
 etes  interesse  a  avoir  les  dernieres  versions  du  pilote.   Les
 corrections  de  bugs  intermediaires  et les annonces sont faites sur
 cette liste.

 Pour vous inscrire, envoyez un courrier a [email protected] avec

      subscribe ncr53c810

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

      unsubscribe ncr53c810

 Problemes frequents :

 1. De  nombreuses  personnes ont rencontre des problemes de composants
    fonctionnant bien  sous  DOS  mais  plantant  sous  Linux  avec  un
    probleme  de  temporisation  (timeout) lors du test 1 (interruption
    perdue).

    Cela est souvent du a un desaccord entre la valeur selectionnee par
    le   cavalier  reglant  le  niveau  d'interruption  (IRQ)  pour  un
    emplacement ou un peripherique de la carte mere et la valeur  fixee
    dans la CMOS. VERIFIEZ TOUJOURS QUE :

 +o  L'IRQ  que  vous  employez est utilisee uniquement par le composant
    NCR de votre carte ou par l'emplacement dans lequel  la  carte  NCR
    est installee

 +o  Les cavaliers de selection des IRQ pour le composant de la carte ou
    pour son emplacement correspondent a la configuration de la CMOS

 +o  Certaines  cartes  meres   PCI   savent   faire   une   affectation
    "automatique" des  IRQ. Cela ne fonctionnera pas.

    Cela   peut   egalement   etre  du  aux  INTB,  INTC  ou  INTD  PCI
    selectionnees sur une carte PCI dans un systeme  qui  ne  gere  que
    l'INTA  PCI.  Si  vous  utilisez  une  carte NCR qui vous permet de
    choisir par cavalier la ligne d'interruption PCI utilisee, assurez-
    vous que vous avez configure l'INTA.

    Enfin,  le  PCI  doit utiliser des interruptions sur niveau (level-
    sensitive) plutot que sur  front  (edge  triggered).  Verifiez  que
    votre  carte  est  positionnee  pour  generer des interruptions sur
    niveau. Si cela ne marche toujours pas, essayez  les  interruptions
    sur front, au cas ou votre systeme serait defectueux.

    Ce  probleme  est  assez frequent avec quelques cartes Viglen, pour
    lesquelles la configuration des cavaliers d'interruptions n'est pas
    documentee  dans  le manuel. On m'a dit que ce qui devrait etre une
    IRQ5 est en fait une IRQ9. Votre cas sera peut-etre different.

 2. Des  blocages  et   d'autres   problemes   apparaissent   lors   de
    l'utilisation  d'une carte video PCI S3 928 et Tseng Lab ET4000W32.

    Il  y  a  des  bugs  materiels  dans  certaines  versions  de   ces
    composants. Ne les utilisez pas.

 3. Un  message  au demarrage vous indique que l'organisation (mapping)
    des E/S a ete desactivee 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 du a un bug du BIOS sur certaines machines : la lecture dou-
 ble mots de registres de configuration retourne les mots de 16 bits de
 poids forts et de poids faibles inverses.

 4. Certaines  machines ont des problemes si l'ecriture differee PCI ou
    la  bufferisation  CPU->PCI  sont  activees.  Si  vous   avez   des
    problemes, desactivez ces options.

 5. Certains  systemes avec le firmware NCR SDMS dans la ROM du BIOS de
    la carte et dans le BIOS du systeme ne sont pas capables de  booter
    sous  DOS.  Desactiver l'image dans un des BIOS devrait resoudre le
    probleme.

 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 a 0 ou a 1 dans  le  registre  de
 configuration  PCI.  Soit  vous  avez  des  problemes de configuration
 (reportez-vous au chapitre ``Problemes frequents 1''), soit le BIOS de
 votre carte mere est defectueux.

 Un contournement serait d'editer 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 systemes ont des composants BIOS honteusement  bugges.  Ne
    faites pas de rapport d'anomalie avant d'etre certain que vous avez
    recu les plus recentes ROM de votre vendeur.

 8. Les lignes de commande ncr53c810=xxx, etc. ne marchent pas.

    Dans les noyaux d'origine, les points  d'entree  correspondants  ne
    sont intentionnellement pas inclus dans le fichier init/main.c :

    Le  pilote fait malgre tout des auto-detections pour une carte dont
    des parametres ont ete passes sur la ligne de commande.  Ainsi,  si
    une  ligne  de  commande  est  utilisee  alors  que  la carte a ete
    reconnue par la routine de configuration PCI, vous allez au  devant
    de gros problemes.

    La  seule  raison  pour  laquelle  vous pourriez avoir besoin d'une
    surcharge par la ligne de commande serait de contourner un  bug  du
    materiel  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  probleme  de  configuration,  votre  systeme   est
    defectueux  ou  alors  vous  avez  un  probleme de configuration et
    aucune ligne de commande ne pourra y remedier.

    Si quelqu'un a ajoute les points d'entree adequats dans le  fichier
    init/main.c pour les lignes de commande, elle ne sont pas gerees 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 gerent
    les transferts synchrones  et  asynchrones,  mais  etablissent  une
    negociation  de  transferts  synchrones au demarrage du systeme, ce
    qui laisse les disques dans un etat non defini. Lorsque  le  pilote
    NCR  Linux  issu  de  la  distribution essaie de dialoguer avec ces
    peripheriques, il expire en timeout et ne s'en sort pas car  il  ne
    fait ni reset du bus, ni renegociation.

    Si   vous  rencontrez  ce  probleme,  vous  pouvez  desactiver  les
    transferts synchrones dans le  programme  de  configuration  de  la
    carte  ou  mettre  a jour votre pilote NCR avec une version recente
    ALPHA qui sait traiter la negociation synchrone.

 10.
    Les cartes Tyan S1365  '825  ont  des  problemes  de  temporisation
    (timeouts),  tout  particulierement  lorsque  les deconnexions sont
    autorisees. Les documentations de certaines de ces cartes inversent
    les  positions du cavalier d'activation de la terminaison - si bien
    que celle-ci est activee alors que vous auriez voulu la desactiver,
    et inversement.

    Essayez de changer la position du cavalier.

 Remarques :

 1. CCOONNFFIIGG__PPCCII doit etre positionnee

 55..1144..  SSeeaaggaattee SSTT00xx//FFuuttuurree DDoommaaiinn TTMMCC--88xxxx//TTMMCC--99xxxx ((ssttaannddaarrdd))

 Configurations supportees et non supportees :

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

 Auto-detection :

      teste uniquement les adresses, le niveau d'interruption (IRQ) etant suppose
      valoir 5 ; necessite un BIOS installe.

 Surcharge de l'auto-detection :

 A la compilation :

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

 Ligne de commande du noyau :

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

 Problemes prehistoriques, regles par une mise a jour :

 1. Les versions des noyaux 0.99.12 et anterieurs avaient  un  probleme
    d'acquittement  (handshaking)  avec  certains  peripheriques lents.
    Notamment, voici ce  qui  se  passait  lorsque  vous  ecriviez  des
    donnees sur le bus :

    a. ecrire  l'octet  dans  le  registre  de  donnee ; le registre de
       donnees est place sur le bus,

    b. temps_restant = 12us,

    c. attendre tant que temps_restant > 0 et que le signal  REQ  n'est
       pas genere,

    d. si temps_restant > 0, generer le signal ACQ,

    e. attendre tant que temps_restant > 0 et le signal REQ est genere,

    f. redescendre le signal ACQ

    Ce probleme  apparaissait  sur  certains  peripheriques  lents  qui
    traitaient  chaque  commande  apres l'avoir lue et pour lesquels le
    protocole REQ/ACQ (requete / acquittement) prenait plus de  12us  -
    REQ  n'etait  pas  faux au moment ou le pilote l'attendait, si bien
    que le pilote finissait pas envoyer plusieurs octets de  donnees  a
    chaque impulsion REQ.

 2. Avec  Linux  0.99.12,  j'ai  introduit un bug en corrigeant le code
    d'arbitrage. Sur certains systemes, la selection des  peripheriques
    sortait en echec. Ce probleme a ete corrige en 0.99.13.

 Problemes frequents :

 1. Certains commandes sortent en timeouts lorsque Linux essaie de lire
    une table de partition ou de faire d'autres acces disques.

    La carte est fournie avec une configuration prevue par defaut  pour
    MSDOS,  c'est-a-dire  que  les interruptions sont desactivees. Pour
    les reactiver 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  a  gerer  certains peripheriques, en
    particulier des  derouleurs  de  bandes  SCSI  bon  marche  et  des
    lecteurs de CDROM.

    La  Seagate  reporte  le  protocole  REQ/ACQ  du  bus SCSI dans les
    signaux IO CHANNEL READY et, eventuellement,  OWS  du  bus  du  PC.
    Malheureusement, vous n'etes 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
    delai  de surveillance au cas ou vous auriez manque la transition a
    cause d'une interruption, etc. Vous observerez une degradation  des
    performances ; il pourrait etre judicieux de ne pas appliquer cette
    methode a tous les peripheriques SCSI. La selection peut  se  faire
    peripherique  par peripherique via le champ "broken" des entrees du
    tableau scsi_devices. Si vous  avez  des  problemes,  vous  pourrez
    tenter d'ajouter votre peripherique a la liste des equipements pour
    lesquels le champ "broken" n'est pas positionne a 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'etat sont inverses.

    Editez le fichier seagate.h, echangez les definitions  de  SSTTAATT__MMSSGG
    et  SSTTAATT__CCDD  puis  recompilez  le noyau avec la variable CCOONNTTRROOLLLLEERR
    definie a SSEEAAGGAATTEE et les variables  IIRRQQ  et  OOVVEERRRRIIDDEE  correctement
    positionnees.

 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 echoue, ou encore

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

 Reportez-vous a la section ``Partitionnement des disques''

 5. Apres  avoir  specifie  manuellement  la  geometrie  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 a la section ``Partitionnement des disques''

 6. Sur certains systeme qui fonctionnaient avant la  version  0.99.13,
    les  nouvelles  versions  de Linux echouent. Les anciennes versions
    affectaient les registres CONTROL et DATA dans un  ordre  different
    de  celui explique dans la documentation Seagate, ce qui perturbait
    certains  systemes.  Les  nouvelles  versions  se   conforment   au
    document, mais cela perturbe maintenant d'autres systemes.

 Le code du fichier seagate.c ressemble maintenant a :

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

 Votre probleme peut etre corrige 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 : 0x40));
      sti();

 Constantes :

 FAST ou FAST32 pour la mise en oeuvre de transferts aveugles

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

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

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

 55..1155..  PPAASS1166 SSCCSSII ((ssttaannddaarrdd))

 Configurations supportees et non supportees :

      Ports          : 0x388, 0x384, 0x38x, 0x288
      IRQs           : 10, 12, 14, 15
           IMPORTANT : les IRQ DOIVENT etre differentes des IRQ utilisees par la
                       partie de gestion du son de la carte
      DMA            : n'est pas utilise par la partie SCSI de la carte
      E/S            : port mappe

 Auto-detection :

      n'a pas besoin du BIOS

 Surcharge de l'auto-detection :

      A la compilation : definissez PAS16_OVERRIDE comme un tableau de nuplets
      de la forme {'port', 'irq'}. Par exemple :

      #define PAS16_OVERRIDE {{0x388, 10}}

      pour une carte de port 0x388, IRQ 10.

 Ligne de commande du noyau :

 pas16=port,irq

 Constantes :

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

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

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

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

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

      USLEEP     - autorise la gestion des peripheriques qui ne se deconnectent
                   pas. Non teste.

 Problemes frequents :

 1. Commandes en timeouts, interruptions, etc.

    Utilisez les patches pour les NCR5380 que j'ai postes sur le reseau
    il y a quelque temps (ils devraient etre integres dans la prochaine
    version  alpha).  Ces  patches  corrigent  un sequencement critique
    (race condition) des precedentes versions du  pilote  NCR5380.  Ils
    corrigent   egalement   un   probleme   de   gestion  de  plusieurs
    peripheriques pour les controleurs bases sur le NCR5380.

    Si cela  echoue,  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  etre  consideree  uniquement  en
    dernier recours, car elle penalise gravement les performances.

 55..1166..  TTrraannttoorr TT112288//TT112288FF//TT222288 ((ssttaannddaarrdd))

 Configurations supportees et non supportees :

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

 Auto-detection :

      fonctionne sur toutes les configurations supportees ; necessite un BIOS
      installe.

 Surcharge de l'auto-detection :

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

      #define T128_OVERRIDE {{0xcc000, 5}}

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

      Les valeurs symboliques IRQ_NONE et IRQ_AUTO peuvent etre employees pour le
      champ IRQ.

 Ligne de commande du noyau :

      t128=adresse,irq
      -1 peut etre utilise pour "pas d'irq", -2 pour "auto-detection de l'irq".

 Constantes :

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

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

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

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

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

 USLEEP     - autorise la gestion des peripheriques qui ne se deconnectent
              pas. Non teste.

 Problemes frequents :

 1. Commandes en timeouts, interruptions, etc.

    Utilisez les patches pour les NCR5380 que j'ai postes sur le reseau
    il y quelque temps (ils devraient etre integres dans  la  prochaine
    version  alpha).  Ces  patches  corrigent  un sequencement critique
    (race condition) des precedentes versions du  pilote  NCR5380.  Ils
    corrigent   egalement   un   probleme   de   gestion  de  plusieurs
    peripheriques pour les controleurs bases sur le NCR5380.

    Si cela  echoue,  vous  devrez  interdire  l'option  PSEUDO_DMA  en
    changeant     la    ligne    ##ddeeffiinnee    PPSSEEUUDDOO__DDMMAA    du    fichier
    drivers/scsi/pas16.c en ##uunnddeeff PPSSEEUUDDOO__DDMMAA.

    Remarquez que cette solution doit  etre  consideree  uniquement  en
    dernier recours, car elle penalise gravement les performances.

 55..1177..  UUllttrraassttoorr 1144ff ((IISSAA)),, 2244ff ((EEIISSAA)),, 3344ff ((VVLLBB)) ((ssttaannddaarrdd))

 Configurations supportees :

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

 Auto-detection :

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

 Surcharge de l'auto-detection :

      uniquement a la compilation (definissez PORT_OVERRIDE)

 Problemes frequents :

 1. L'adresse 0x310 n'est pas reconnue par le code d'auto-detection  et
    peut creer des conflits si le reseau est active.

    Utilisez une adresse differente.

 2. L'utilisation   d'une   carte  Ultrastor  a  l'adresse  0x330  peut
    provoquer des blocages du systeme lorsque les pilotes sons sont  en
    phase d'auto-detection.

    Utilisez une adresse differente.

 3. D'autres  pilotes  effectuent  des  auto-detections  dangereuses  a
    diverses adresses. Si vous avez des problemes de detection ou si le
    systeme se bloque au demarrage, essayez une autre adresse.

    0x340 est reputee etre une adresse qui marche.

 4. Linux  ne  detecte  aucun  peripherique  SCSI, mais reconnait votre
    disque dur connecte a une carte  SCSI  Ultrastor  comme  un  disque
    normal,  sans  que le pilote de disque arrive a le gerer. 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  emulation
 WD1003. Vous devez alors :

    a. basculer la carte Ultrastor en mode natif. C'est ce qu'il y a de
       mieux  a  faire,  etant  donne  que  les   disques   SCSI   sont
       sensiblement plus rapides que les disques IDE, specialement avec
       les patches de lectures/ecritures groupees. Certains ont  obtenu
       des  debits  soutenus  de  plus de 2Mo/s a travers le systeme de
       gestion de fichiers, apres application de ces patches.

       Notez que cela ne sera pas necessaire si vous n'utilisez pas  de
       disque  dur ou si vous branchez plus de deux disques durs sur la
       carte Ultrastor.

    b. utilisez la ligne de commande du noyau

         hd=cylindres,tetes,secteurs

    pour surcharger les parametres  de  configuration  par  defaut,  de
    maniere  a pouvoir demarrer vous-meme, tout en vous assurant que le
    nombre de cylindres <= 2048, le nombre de tetes <= 16 et le  nombre
    de  secteurs  <=  255  soient tels que cylindres * tetes * secteurs
    soit le meme dans les deux representations.

    Vous devez egalement preciser la  geometrie  du  disque  au  moment
    d'utiliser  fdisk  sous Linux. Si vous omettez de le faire, de mau-
    vaises valeurs risqueraient d'etre ecrites dans la table des parti-
    tions.  Ces  valeurs seront correctes pour Linux, mais provoqueront
    des erreurs sous MSDOS, qui se base sur les  triplets  <tete/cylin-
    dre/secteur> de la table des partitions.

    Une fois que Linux a demarre, vous pouvez vous epargner la peine de
    preciser manuellement a chaque demarrage la geometrie en  modifiant
    comme il le faut la macro HD_TYPE du fichier include/linux/config.h
    et en recompilant le noyau.

 55..1188..  WWeesstteerrnn DDiiggiittaall 77000000 ((ssttaannddaarrdd))

 Configurations supportees :

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

 Auto-detection :

      necessite un BIOS active.

 Problemes frequents :

 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  meme,  les  composants  sans
    suffixe  ne  fonctionnent  pas,  alors  que  ceux  marques d'un 'A'
    marchent.

 2. La carte gere quelques adresses BIOS qui n'apparaissent pas dans la
    liste  des  adresses  supportees.  Si  vous vous trouvez dans cette
    situation, utilisez une  des  adresses  supportees  et  envoyez  un
    rapport  d'anomalie  suivant  la procedure decrite dans le chapitre
    ``Signaler une anomalie''.

 55..1199..  AAMM5533//7799CC997744 ((AALLPPHHAA))

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

 Configurations supportees :

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

 55..2200..  qqllooggiicc ((ssttaannddaarrdd))

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

 66..  DDiissqquueess

 Les informations contenues dans ce chapitre concernent les disques.

 66..11..  MMaatteerriieell ssuuppppoorrttee eett nnoonn ssuuppppoorrttee

 Tous  les  peripheriques  SCSI a acces 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 etre corrige en
 modifiant la taille des blocs  et/ou  des  secteurs  en  utilisant  la
 commande SCSI MODE SELECT).

 La  taille  des  secteurs fait reference au nombre d'octets de donnees
 presents par secteur  sur  un  peripherique  (les  lecteurs  de  CDROM
 utilisent par exemple une taille de secteur de 2048 octets).

 La  taille  des  blocs  fait  reference a la taille des blocs logiques
 utilises pour s'interfacer avec le peripherique. Bien que cette valeur
 soit  habituellement  identique  a  la  taille  des secteurs, certains
 peripheriques regroupent plusieurs secteurs physiques plus petits (par
 exemple  256 octets dans le cas des peripheriques 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  peripheriques  amovibles  incluent  les  disques  Bernouilis, les
 disques flopticals, les disques magneto-optiques et les Syquest.

 En theorie, les peripheriques d'une taille inferieure a  1  To  (tera-
 octets) devraient marcher. Il n'y a en particulier aucun probleme avec
 les minuscules disques de 9 Go.

 66..22..  PPrroobblleemmeess ffrreeqquueennttss

 66..22..11..  MMeessssaaggee ''CCyylliinnddrree ssuuppeerriieeuurr aa 11002244''

 Au moment du partitionnement, un message d'avertissement  "cylinder  >
 1024"  s'affiche  ou  bien  vous etes incapable de demarrer depuis une
 partition possedant des cylindres au-dela du cylindre 1024.

 C'est une limitation du BIOS.

 Reportez-vous aux chapitres ``Geometrie'' et ``Partitionnement''  pour
 des explications plus detaillees.

 66..22..22..  VVoouuss eetteess iinnccaappaabbllee ddee ppaarrttiittiioonnnneerr ""//ddeevv//hhdd**""

 Les /dev/hd* font reference a des peripheriques IDE. Utilisez /dev/sd*
 pour vos disques SCSI.

 Reportez-vous aux chapitres ``Fichiers  speciaux'',  ``Geometrie''  et
 ``Partitionnement''  pour les noms de fichiers corrects et la marche a
 suivre pour le partionnement.

 66..22..33..  IImmppoossssiibbiilliittee dd''eejjeecctteerr llee mmeeddiiaa dd''uunn ppeerriipphheerriiqquuee aammoovviibbllee

 Linux  tente  de  verrouiller  la porte du lecteur lorsqu'un media est
 monte,  afin  d'eviter  les  endommagements  du  systeme  de  fichiers
 resultants d'un changement de support.

 Demontez vos disques amovibles avant de les ejecter.

 66..22..44..   IImmppoossssiibbiilliittee  ddee ddeemmaarrrreerr ddeeppuuiiss uunn ddiissqquuee SSCCSSII eenn uuttiilliissaanntt
 LLIILLOO

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

 Comme contournement, trouvez quelle geometrie est  utilisee  sous  DOS
 puis   creez   une   entree   pour   votre   disque  dans  le  fichier
 /etc/lilo/disktab.

 Vous pouvez eventuellement egalement utiliser l'option  "linear"  pour
 LILO.

 66..22..55..  FFddiisskk rreeppoonndd ppaarr

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

 et  la  geometrie  du  disque  n'est  pas  memorisee lorsque fdisk est
 reexecute.

 Reportez-vous au chapitre ``Partitionnement''.

 66..22..66..  UUnn sseeuull ppeerriipphheerriiqquuee eesstt ddeetteeccttee ssuurr uunnee  ccaarrttee  ppoonntt  ((bbrriiddggee
 bbooaarrdd)) aavveecc pplluussiieeuurrss ppeerriipphheerriiqquueess

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

 66..22..77..  LLee ssyysstteemmee ssee ffiiggee eenn sswwaappppaanntt

 La  version 1.1.38 devrait avoir corrige le probleme. Essayez de faire
 une mise a jour de votre pilote.

 66..22..88..  LLeess ddiissqquueess CCoonnnneerr CCFFPP11006600SS ssoonntt eennddoommmmaaggeess

 Cela est du a un erreur du microcode dans  les  fonctions  de  lecture
 anticipee et dans le cache.

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

 Ces dernieres semaines, nous avons recu des appels de plusieurs clients
 qui nous affirmaient avoir de serieux problemes avec les disques SCSI
 Conner CFP1060x de 1Go en utilisant le systeme d'exploitation Linux.
 Des erreurs etaient detectees par e2fsck a chaque demarrage du systeme
 (inodes abimes) entre autres.

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

 Si vous avez des problemes avec des disques dont le microcode est a la
 version 9WA1.60, contactez votre centre Conner le plus proche pour une
 mise a jour. La version du microcode peut etre trouvee sur l'etiquette
 du disque ou, sur sa face inferieure, sur l'etiquette d'un des circuits
 integres.

 Si vous vous sentez assez sur de vous pour faire vous-meme la mise a jour,
 appelez le support technique de Conner, apres avoir note la version de
 votre microcode. Le support technique de Conner en Europe peut etre joint
  au +44-1294-315333. Le support americain peut etre joint au 1-800-4CONNER.

 Salutations,
 Soenke Behrens
 Support Technique Europe

 66..33..  FFiicchhiieerrss ssppeecciiaauuxx

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

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

 Exemple de configuration avec un seul controleur :

 Peripherique                 Adresse  Unite 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
 Derouleur 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        peripherique mode bloc de majeur 8 et de mineur 0
 /dev/sda1       peripherique mode bloc de majeur 8 et de mineur 1
 /dev/sda2       peripherique mode bloc de majeur 8 et de mineur 2
 /dev/sdb        peripherique mode bloc de majeur 8 et de mineur 16

 etc.

 66..44..  PPaarrttiittiioonnnneemmeenntt

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

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

      fdisk /dev/sda

 Si vous ne precisez pas explicitement le peripherique, le programme de
 partionnement  pourrait  prendre par defaut /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
 echoue.   Dans  ce  cas, specifiez manuellement la geometrie du disque
 (``Geometrie'')  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  precise  la  geometrie  du  disque,  les
 utilisations  ulterieures  de  fdisk  vous  donneront  le meme message
 d'erreur.  C'est  normal,  puisque  les  PC  ne   stockent   pas   les
 informations  de geometrie dans la table des partitions. Cela ne cause
 AUCUN PROBLEME et vous n'aurez pas de soucis a acceder aux  partitions
 creees par Linux. Certains programmes mal ecrits peuvent en etre genes
 ; 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-dela du cylindre 1024. Si vous creez une  telle  partition,
 vous  ne  serez  pas capable de demarrer dessus avec LILO. Cela etant,
 rien n'empeche de creer une partition racine (root)  partiellement  ou
 entierement  situee  au-dela  de  ce  cylindre  1024.  Il est en effet
 toujours possible de creer une petite partition /boot sous la barriere
 des  1024  ou  de  demarrer  le  noyau  directement  depuis  une autre
 partition.

 66..55..  GGeeoommeettrriiee

 Sous Linux, chaque disque est vu tel que le controleur SCSI le voit  :
 N  blocs,  numerotes  de  0 a N - 1, sans erreurs, la ou le DOS / BIOS
 considerent avoir affaire a des disques intelligents et appliquent une
 transformation  arbitraire  <tete/cylindre/secteur>  a  cet  adressage
 lineaire.

 Cela peut poser un probleme lorsque  vous  partitionnez  votre  disque
 sous  Linux,  puisqu'il  n'y  a  pas de moyen portable de recuperer la
 geometrie estimee par le DOS/BIOS. Dans la plupart des cas, un ioctl()
 HDIO_GETGEO   peut   etre   implemente   pour   obtenir   ce  mapping.
 Malheureusement, lorsque le vendeur (au  hasard  Seagate)  choisit  un
 mapping  retors,  non  standard  et  non  documente,  cela  n'est plus
 possible et il est necessaire de preciser manuellement la geometrie.

 Si vous en arrivez la, plusieurs options sont possibles :

 1. Si cela ne vous gene pas d'utiliser DOS ou de  demarrer  depuis  le
    disque  avec LILO, creez une traduction telle que tete * cylindre *
    secteur * 512 < taille de votre disque en octets (un megaoctet  est
    defini par 2^20 octets).

    1 <= tete <= 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  maniere  a  ce  qu'il  soit  a
    l'adresse  SCSI  0  et qu'il faudra desactiver 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 tetes du disque dont l'adresse BIOS a ete 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 tetes et 1007 cylindres.

 77..  LLeess lleecctteeuurrss ddee CCDDRROOMM

 Ce chapitre contient des  informations  specifiques  aux  lecteurs  de
 CDROM.

 77..11..  MMaatteerriieell ssuuppppoorrttee eett nnoonn ssuuppppoorrttee

 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.

 77..22..  PPrroobblleemmeess ffrreeqquueennttss

 77..22..11..  IImmppoossssiibbiilliittee ddee mmoonntteerr llee CCDDRROOMM

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

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

 Il  est  evident  que  pour que cela fonctionne, il faut avoir integre
 dans le noyau (ou en module) le support SCSI  pour  votre  controleur,
 pour le pilote SCSI et le systeme de fichiers iso9660.

 Notez  aussi  que dans les noyaux 1.1.32, les peripheriques en lecture
 seule tels que les CDROM ne peuvent pas etre montes avec  les  options
 par defaut (lecture/ecriture (read/write)).

 77..22..22..  IImmppoossssiibbiilliittee dd''eejjeecctteerr llee CCDDRROOMM

 Linux  tente  de  verrouiller  la porte du lecteur lorsqu'un media est
 monte,  afin  d'eviter  les  endommagements  du  systeme  de  fichiers
 resultants d'un changement de support.

 77..22..33..  IImmppoossssiibbiilliittee dd''eeccoouutteerr ddeess CCDD aauuddiioo

 Essayez donc workman ou xcdplayer.

 77..22..44..  WWoorrkkmmaann oouu xxccddppllaayyeerr nnee mmaarrcchheenntt ppaass

 Les  fonctions  de  controle  des fonctionnalites 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  proprietaires 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 repertoire /pub/linux/BETA/cdrom.

 Ces  programmes  peuvent  egalement  marcher avec quelques lecteurs de
 CDROM non SCSI, si leurs pilotes implementent les memes ioctls que les
 pilotes SCSI.

 77..22..55..  LLeess ddiissqquueess ssuupppplleemmeennttaaiirreess ssuurr lleess cchhaarrggeeuurrss SSCCSSII nnee mmaarrcchheenntt
 ppaass

 La  plupart  des  chargeurs  de  CDROM  attribuent une unite logique a
 chaque  disque.  Verifiez  que  vous  avez  bien  un  fichier  special
 (/dev/...)  pour  chaque  plateau de votre chargeur (reportez-vous aux
 chapitres ``Fichiers speciaux'' et ``Les unites logiques autres que la
 premiere ne fonctionnent pas''.

 77..33..  FFiicchhiieerrss ssppeecciiaauuxx

 Les CDROM SCSI utilisent le majeur 11.

 Les  mineurs sont attribues dynamiquement (reportez-vous aux chapitres
 ``Disques'', ``Fichiers speciaux'' pour des exemples) le premier CDROM
 trouve ayant le mineur 0, le deuxieme le mineur 1, etc.

 La convention standard de nommage est la suivante :

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

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

 88..  LLeess lleecctteeuurrss ddee bbaannddeess

 Les informations de ce chapitre concernent les lecteurs de bandes.

 88..11..  MMaatteerriieell ssuuppppoorrttee eett nnoonn ssuuppppoorrttee

 Les peripheriques 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 geres.

 Les parametres (taille de bloc, bufferisation,  densite)  sont  regles
 via  des  ioctls  (habituellement  par  le programme mmtt) ; ils restent
 actifs  meme  si  le  peripherique  est  ferme  puis  reouvert   (ici,
 peripherique  est  a prendre au sens : fichier special representant ce
 peripherique).

 Theoriquement, tous les lecteurs doivent marcher, y compris :

 +o  Lecteurs Archive Viper QIC (dont les modeles 150Mo et 525Mo)

 +o  Lecteurs Exabyte 8mm

 +o  Lecteurs Wangtek 5150S

 +o  Lecteurs Wangdat DAT

 88..22..  PPrroobblleemmeess ffrreeqquueennttss

 88..22..11..  LLee lleecctteeuurr ddee bbaannddee nn''eesstt ppaass rreeccoonnnnuu aauu ddeemmaarrrraaggee

 Essayez de demarrer avec une bande dans le lecteur.

 88..22..22..  IImmppoossssiibbiilliittee  ddee  lliirree  ccoorrrreecctteemmeenntt  ddeess  bbaannddeess  ccoommppoorrttaanntt
 pplluussiieeuurrss ffiicchhiieerrss

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

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

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

 88..22..33..  LLaa ddeeccoommpprreessssiioonn eecchhoouuee

 Les programmes de decompression ne sont  pas  capables  de  gerer  les
 zeros qui comblent le dernier bloc du fichier.

 Pour  eliminer  les avertissements et les erreurs, mettez vos fichiers
 compresses dans un fichier tar. Plutot 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

 88..22..44..  PPrroobblleemmeess ddee lleeccttuurree ddee bbaannddeess ffaaiitteess ssuurr dd''aauuttrreess ssyysstteemmeess

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

 Les  differents  systemes  utilisent  souvent  des  tailles  de  blocs
 differentes. 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 a la taille avec laquelle la bande a ete ecrite. 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 utilise par tar, dump et consors.

 Vous pouvez le faire par la commande mmtt :

      mt setblk <taille>

 ou

      mt setblk 0

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

 Notez que ces options de mmtt ne sont pas supportees par la version  GNU
 de  mt qui est incluse dans certaines distributions de Linux. Utilisez
 plutot la version mt  derivee  de  BSD.  Les  sources  devraient  etre
 disponibles a l'adresse

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

 SSTT__BBUUFFFFEERR__BBLLOOCCKKSS         (definie        dans        le        fichier
 /usr/src/linux/drivers/scsi/st_options.h dans les  noyaux  recents  et
 /usr/src/linux/drivers/scsi/st.c   dans   les   anciens   noyaux)  est
 initialisee de maniere a autoriser une taille maximale des buffers  de
 32Ko. Editez le fichier precedent pour augmenter cette limite.

 88..22..55..  MMeessssaaggee dd''eerrrreeuurr ""NNoo ssuucchh ddeevviiccee""

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

 "No such device".

 Verifiez le type du fichier special  representant  votre  lecteur.  Ce
 doit  etre  un  fichier en mode caractere, les majeur et mineur devant
 etre en  concordance  avec  les  valeurs  definies  dans  le  chapitre
 ``Fichiers speciaux''.

 88..22..66..   LLeess  lleeccttuurreess ddee bbaannddeess aa uunnee cceerrttaaiinnee ddeennssiittee mmaarrcchheenntt,, mmaaiiss
 lleess eeccrriittuurreess eecchhoouueenntt

 Plusieurs  lecteurs  de  bandes  acceptent  les lectures a une densite
 inferieure pour compatibilite avec des materiels  plus  anciens,  mais
 ils n'ecrivent pas a ces memes densites.

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

 88..22..77..  LLee rreeppoossiittiioonnnneemmeenntt ddee llaa bbaannddee bbllooqquuee llee bbuuss SSCCSSII

 Cela  est  frequent  avec  les  equipements  SCSI qui ne gerent qu'une
 commande  en  attente   a   la   fois   (reportez-vous   au   chapitre
 ``Peripheriques  multiples''  pour  une explication plus detaillee, et
 ``Guide de l'acheteur : comparaison des  fonctionnalites''  pour  voir
 quels  lecteurs  souffrent  de cette limitation), bien que cela puisse
 egalement etre du a un lecteur de bandes refusant les deconnexions.

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

      #define ST_NOWAIT

 au debut. Regenerez ensuite le noyau.

 Cela  va  avoir pour effet de retarder les eventuelles erreurs jusqu'a
 la prochaine commande SCSI executee. Il est pour  cela  preferable  de
 faire

      mt status

 apres  qu'une commande de repositionnement a ete demandee par mmtt. Cela
 vous evitera d'ecraser des fichiers sur la bande si le  positionnement
 a echoue.

 Vous pouvez aussi envisager de changer votre controleur pour un modele
 mieux supporte ou de vous equiper d'un lecteur de bande  plus  recent,
 si  vous  avez besoin d'utiliser ce contournement et que vous desiriez
 ecrire plusieurs fichiers sur une meme bande.

 88..33..  FFiicchhiieerrss ssppeecciiaauuxx

 Les lecteurs de bandes SCSI utilisent le majeur 9.

 Linux utilise le type dev_t sur 16 bits, dont  8  bits  sont  reserves
 pour  le  mineur.  Pour cette raison, les mineurs pour les bandes SCSI
 sont  affectes  dynamiquement  et  commencent  au  plus  petit  numero
 d'adapteur SCSI, peripherique ou unite logique.

 Les  mineurs des fichiers speciaux rembobinant les bandes commencent a
 0, 0 etant le premier lecteur de bande SCSI (/dev/st0 cree  par  mmkknnoodd
 //ddeevv//sstt00  cc 99 00), le deuxieme lecteur etant /dev/st1 (mmkknnoodd //ddeevv//sstt11 cc
 99 11), etc.

 Les mineurs des fichiers speciaux ne rembobinant pas les bandes ont le
 bit  de  poids  fort  a 1, c'est-a-dire que /dev/nst0 a ete cree par :
 mmkknnoodd //ddeevv//nnsstt00 cc 99 112288.

 La convention standard de nommage est

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

 99..  PPiilloottee ggeenneerriiqquuee

 Les informations contenues dans ce chapitre sont specifiques au pilote
 SCSI generique.

 99..11..  MMaatteerriieell ssuuppppoorrttee

 Le  pilote  SCSI generique fournit une interface normalisee permettant
 d'envoyer des commandes SCSI a tous les peripheriques SCSI -  disques,
 bandes, CDROM, chargeurs multi-disques, etc.

 Tout  equipement  electriquement compatible avec votre carte SCSI doit
 fonctionner.

 99..22..  PPrroobblleemmeess ffrreeqquueennttss

 Aucun :-)

 99..33..  FFiicchhiieerrss ssppeecciiaauuxx

 Les fichiers speciaux du  pilote  SCSI  generique  utilisent  le  mode
 caractere,   de   majeur   21.  A  cause  des  memes  contraintes  que
 precedemment, les mineurs sont attribues dynamiquement a partir de  0,
 un par peripherique,

 /dev/sg0

 correspondant  au  plus  petit  peripherique  ou  unite logique sur le
 premier controleur.

 1100..  GGuuiiddee ddee ll''aacchheetteeuurr

 Une question frequente est :

 "Linux gere un nombre plutot eleve  de  controleurs  differents.  Quel
 controleur dois-je acheter ?"

 La  reponse depend des performances que vous esperez ou dont vous avez
 besoin,  de  la  carte  mere  et  des  peripheriques  que  vous   avez
 l'intention de connecter a votre machine.

 1100..11..  TTyyppeess ddee ttrraannssffeerrtt

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

    TTyyppee ddee ttrraannssffeerrtt
       Description / Performance / Recommandations

    SSccrruuttaattiioonn ppuurree ((PPuurree PPoolllleedd))
       Une  carte  d'E/S  scrutee conduit le processeur central a faire
       tout le traitement SCSI, y compris le protocole REQ/ACQ.

       Meme un  processeur  rapide  va  etre  plus  lent  a  gerer  les
       sequences  REQ/ACQ qu'une simple machine a etats finis. Le debit
       peut descendre a 150Ko/s  sur  une  machine  rapide  et  parfois
       60Ko/s sur une machine lente (a travers le systeme de fichiers).

       Le pilote doit egalement se mettre en boucle (tight  loop)  tant
       que  le bus SCSI est occupe, ce qui conduit a une utilisation de
       100% du processeur et a des temps de  reponse  deplorables  lors
       des   E/S   SCSI.   Les  lecteurs  de  CDROM  lents  qui  ne  se
       deconnectent/reconnectent  pas  vont  completement  ecrouler  le
       systeme avec de telles cartes.

       Non recommandees.

    SSccrruuttaattiioonn iinntteerr--vveerrrroouuiilllleeee ((IInntteerrlloocckkeedd PPoolllleedd))
       Les cartes utilisant des E/S a scrutation inter-verrouillee sont
       principalement  les  memes  que  les  cartes   precedentes,   le
       protocole  REQ/ACQ etant effectue conjointement avec les signaux
       de protocole du bus PC. Tous les traitements SCSI hors protocole
       REQ/ACQ sont geres par le processeur.

       Avec  de  telles cartes, des pointes de 500-600Ko/s peuvent etre
       mesurees a travers le systeme de fichiers.

       De meme qu'avec les cartes a scrutation pure, le pilote doit  se
       mettre  en  boucle  tant que le bus SCSI est occupe, ce qui rend
       l'utilisation du processeur dependante des taux de transfert des
       peripheriques et des deconnexions/reconnexions. L'utilisation du
       processeur peut varier de 25% pour des lecteurs de CDROM  simple
       vitesse  qui  gerent proprement les deconnexions/reconnexions, a
       100% pour les peripheriques rapides ou  les  lecteurs  de  CDROM
       deficients qui n'arrivent pas a se deconnecter/reconnecter.

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

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

    SSccrruuttaattiioonn ppaarr FFIIFFOO ((FFIIFFOO PPoolllleedd))
       Les cartes implementant une scrutation  par  FIFO  utilisent  un
       tampon  de  taille reduite (typiquement 8Ko) entre le processeur
       et le bus SCSI et possedent quelque intelligence.  Le processeur
       principal  n'est plus mis a contribution que lors des transferts
       de donnees a pleine vitesse avec la FIFO ou lorsqu'il termine le
       traitement des interruptions FIFO pour les conditions vides, les
       deconnexions/reconnexions, etc.

       Les taux de transfert maximums devraient  etre  suffisants  pour
       traiter  la  plupart des peripheriques 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 depend des taux de transfert
       des   peripheriques,   les   plus   rapides   generant  le  plus
       d'interruptions et demandant donc plus de temps processeur. Bien
       que  le  taux  d'utilisation du processeur puisse etre important
       avec des peripheriques rapides (jusqu'a 75%), le  systeme  reste
       utilisable.   Ces   cartes   offrent   une   excellente  reponse
       interactive  avec  des  peripheriques  defectueux  qui   ne   se
       deconnectent/reconnectent  pas  (typiquement, des lecteurs CDROM
       bon marche).

       Recommandees  pour  un   usage   personnel,   pour   un   budget
       raisonnable.

    DDMMAA eessccllaavvee
       Les  pilotes  pour  les  cartes mettant en oeuvre du DMA esclave
       programment le controleur DMA du PC pour un  canal  lorsqu'elles
       font   un  transfert  de  donnees  et  rendent  le  controle  au
       processeur principal.

       Les taux de transfert  sont  habituellement  penalises  par  les
       mauvaises  performances des controleurs DMA utilises sur les PC,
       une telle carte 8-bits ne pouvant pas depasser les  140-150Ko/s.

       La  consommation  du processeur est tres raisonnable, legerement
       moins qu'avec les cartes  a  scrutation  par  FIFO.  Ces  cartes
       tolerent  parfaitement  les  peripheriques  defectueux qui ne se
       deconnectent/reconnectent pas (typiquement, des  lecteurs  CDROM
       bon marche).

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

    DDMMAA aa ccoonnttrroollee ddee bbuuss ((BBuussmmaasstteerriinngg DDMMAA))
       Ces cartes sont intelligentes. Les pilotes pour ces  controleurs
       envoient   dans   une   structure   d'E/S   une  commande  SCSI,
       l'identificateur de la destination  et  de  son  unite  logique,
       ainsi  que l'adresse de fin des donnees, puis ils avertissent la
       carte qu'ils ont une commande pour elle. Le pilote rend la  main
       au  systeme et la carte repond plus tard pour signaler qu'elle a
       termine l'E/S.

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

       Avec  les  patches  de  lectures/ecritures groupees, des taux de
       transferts  a  travers  le  systeme   de   fichiers   atteignent
       pratiquement  100% des performances maximales en ecriture et 75%
       en lecture.

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

       Recommandees dans tous les cas ou le prix n'est pas la priorite,
       ou la carte mere n'est pas defectueuse (certaines de ces  cartes
       ne  fonctionnent  pas  avec  le  controle  de  bus)  et  ou  des
       applications pour lesquelles le temps  d'obtention  des  donnees
       est  plus  important que le debit (le supplement (overhead) du a
       l'utilisation d'un controleur de bus est de 3-4ms par  commande)
       ne seront pas utilisees.

 1100..22..  DDeeccoouuppaaggee//RReeaasssseemmbbllaaggee ((SSccaatttteerr//ggaatthheerr))

 Le second point le plus important pour les performances est la gestion
 des E/S par decoupage/reassemblage. Le  supplement  d'execution  d'une
 commande   SCSI   est   non   negligeable  (de  l'ordre  de  plusieurs
 millisecondes). Les controleurs de bus intelligents tels que l'Adaptec
 1540  peuvent  prendre 3-4ms pour traiter une commande SCSI avant meme
 que la cible ne la recoive. Sur les peripheriques non  bufferises,  ce
 supplement  est toujours suffisant pour manquer un tour de galette, ce
 qui conduit a des taux de transfert de 60Ko/s (sur un lecteur a  3.600
 tours/minute)   par   bloc   transfere.   Ainsi,  pour  maximiser  les
 performances, il est necessaire de minimiser le  nombre  de  commandes
 SCSI  envoyees  pour  transferer  une  certaine quantite de donnees en
 augmentant le nombre d'octets  transferes  pour  chaque  commande.  La
 conception  du  cache  des  tampons de Linux fait que les blocs disque
 contigus ne  sont  pas  contigus  en  memoire.  Avec  les  patches  de
 lectures/ecritures  groupees,  4Ko  utiles  de  donnees  sont!   !   !
 contigus. La taille totale des blocs transferes en une seule  commande
 SCSI  est  donc  de  1Ko * nombre de regions de decoupage/reassemblage
 sans le patch et de 4Ko * nombre de regions avec. Nous avons determine
 experimentalement  que  64Ko est une valeur raisonnable pour une seule
 commande SCSI - c'est-a-dire 64 buffers de decoupage/reassemblage sans
 le  patch, 16 avec. Suite au changement de 16Ko a 64Ko des transferts,
 nous avons observe une amelioration de 50% du debit maximal, a travers
 le  systeme  de  fichiers,  pour les ecritures et les lectures, a 100%
 pour les premieres et 75% pour les secondes, avec  une  carte  Adaptec
 1540.

 1100..33..  BBAALL ccoonnttrree nnoonn--BBAALL ((MMaaiillbbooxx vvss.. nnoonn--mmaaiillbbooxx))

 Certains controleurs intelligents, comme les cartes Ultrastor, WD7000,
 Adaptec 1540, 1740 et BusLogic ont utilise une interface de type boite
 aux   lettres,   dans  laquelle  les  commandes  SCSI  sont  executees
 simplement en placant une structure SCSI a une adresse memoire  donnee
 (BAL),  en  le  signalant  a la carte (c'est-a-dire en positionnant un
 indicateur d'emission pour la BAL),  puis  en  attendant  une  reponse
 (courrier  entrant).  Grace a cette interface de programmation de haut
 niveau, les utilisateurs peuvent souvent mettre a jour leur carte pour
 beneficier  des avantages des nouvelles fonctionnalites, telles que le
 FAST ou le WIDE SCSI, sans modifications du logiciel. Les pilotes  ont
 tendance  a  etre  plus simples, a offrir plus de fonctionnalites et a
 etre plus stables.

 D'autres controleurs 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 etre meilleures, puisque la charge
 de travail peut etre repartie entre le processeur de la  carte  et  le
 processeur   (plus  rapide)  principal  de  la  machine.  Ils  offrent
 egalement une plus grande souplesse pour la realisation  de  certaines
 fonctionnalites   (le   mode   cible   (target   mode)  pour  certains
 peripheriques par exemple). De plus,  ces  cartes  peuvent  etre  plus
 economiques  a  la  production  (dans  certains cas, cette economie se
 retrouve au niveau du consommateur - voir les NCR).  En  contrepartie,
 les pilotes sont plus compliques (comprenez : sont plus sujets a avoir
 des erreurs) et ils doivent etre modifies pour prendre en  compte  les
 fonctionnalites presentes sur les composants plus recents.

 1100..44..  LLeess ttyyppeess ddee bbuuss

 Le  type du bus est le prochain choix a considerer (ISA, EISA, VESA et
 PCI). Les personnes chargees du marketing clament souvent  des  debits
 maximums  (bandwidth)  absurdes,  bases  sur  des taux de transfert en
 rafale (burst) qui relevent presque de la fiction et qui ne servent de
 toute  facon  a rien. Par opposition, j'ai choisi de parler de valeurs
 realistes, quotidiennes, basees sur  les  performances  mesurees  avec
 divers peripheriques.

    BBuuss
       Debit maximum / description,

    IISSAA
       Le  debit  maximum  est  legerement  meilleur que 5Mo/s pour des
       cartes a controle de bus.  Avec  un  bus  ISA,  l'arbitrage  des
       controleurs  de  bus est realise par un venerable DMA 8237 ; les
       temps d'acquisition du  bus  sont  relativement  mediocres.  Les
       pilotes  d'interruptions  sont  a trois etats (tri-state) ou sur
       changement  d'etat  (edge  triggered).  Cela  signifie  que  les
       interruptions ne peuvent pas etre partagees. Generalement, l'ISA
       n'est pas bufferise et le bus memoire de  la  machine  hote  est
       occupe   a  chaque  transfert.  Aucun  mecanisme  n'existe  pour
       empecher une saturation du bus.

    VVEESSAA
       Le debit maximum se situe  aux  alentours  de  30Mo/s.  Certains
       systemes VESA exploitent le bus en dehors de ses specifications,
       ce qui les rend incompatibles avec  certaines  cartes.  Tenez-en
       compte  au moment d'acheter votre materiel s'il ne beneficie pas
       d'une garantie. Generalement, le VESA est non bufferise ; le bus
       memoire de la machine hote est occupe a chaque transfert.

    EEIISSAA
       Le   debit  maximum  se  situe  aux  alentours  de  30Mo/s,  les
       operations de controle de bus etant  generalement  plus  rapides
       que  pour le VESA. Certains systemes EISA bufferisent le bus, ce
       qui permet d'observer des  transferts  en  rafale  vers  le  bus
       memoire  de  la  machine  hote,  plus  rapide,  et  de minimiser
       l'impact  sur  les  performances  du  processeur  central.   Les
       gestionnaires  d'interruptions  EISA  peuvent etre a trois etats
       (tri-state), sur changement d'etat (edge  triggered)  ou  actifs
       sur  collecteur  ouvert  (open  collector  level-active)  ; cela
       permet  le   partage   des   interruptions   avec   les   autres
       gestionnaires  qui  le  gerent.  Puisque l'EISA alloue un espace
       d'adressage separe pour  chaque  carte,  il  est  habituellement
       moins sujet aux conflits de ressources que l'ISA ou le VESA.

    PPCCII
       Le  debit  maximum  se situe aux alentours de 60Mo/s. La plupart
       des systemes  PCI  utilisent  des  tampons  d'ecriture  differee
       (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 gerent. Des  mecanismes  sont  prevus  pour
       eviter  la saturation du bus et pour permettre a l'esclave et au
       maitre de suspendre une operation de controle de bus.

       Puisque le PCI offre un mecanisme plug-n-play via des  registres
       de  configuration  reinscriptibles  sur  chaque  carte,  dans un
       espace   d'adressage   separe,   un   systeme   qui   implemente
       correctement la gestion PCI est plug-and play.

       Le  PCI  est  tres severe sur la longueur des pistes, la charge,
       les specifications mecaniques, etc. et devrait  finalement  etre
       plus fiable que le VESA ou l'ISA.

       Pour  resumer,  le  PCI  est  le  meilleur  bus  pour  PC ; il a
       cependant  des  inconvenients.  Le  PCI  en  est  encore  a  ses
       balbutiements  et,  bien que les constructeurs aient corrige les
       problemes, il  circule  toujours  quelques  vieilles  cartes  au
       composant  PCI  ou  au  BIOS  defectueux. Je recommanderais pour
       cette raison que vous vous  assuriez  de  pouvoir  retourner  le
       materiel  en cas de defaut. Si les plus recentes cartes PCI sont
       veritablement plug-and-play, les anciennes cartes  necessitaient
       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 resolu leurs problemes PCI,  cela
       a demande du temps et je deconseillerais l'achat d'une carte PCI
       si la disponibilite du systeme est tres critique.

 Pour de nombreux peripheriques SCSI lents (disques a 2Mo/s  ou  moins,
 lecteurs  de  CDROM,  lecteurs  de  bandes),  il  n'y a pas de grandes
 variations de debit 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 tete de 4  a  5Mo/s  et
 plusieurs  compagnies experimentent des disques a 14Mo/s par tete), le
 debit sera nettement meilleur avec des controleurs sur  des  bus  plus
 rapides ; certains ont meme releve un facteur d'amelioration de 2,5 en
 passant d'une carte ISA Adaptec 1542 a une carte PCI NCR53c810.

 A l'exception des cas  ou  un  mecanisme  d'ecriture  differee  ou  de
 bufferisation  des  ecritures  est mis en oeuvre, lorsqu'un des bus de
 votre systeme est occupe, tous  les  autres  bus  sont  inutilisables.
 Ainsi,  bien  qu'une  saturation du bus n'affecte pas les performances
 SCSI, elle peut avoir un effet negatif sur la reponse  interactive  du
 systeme. Par exemple, si vous avez un disque SCSI a 4Mo/s en ISA, vous
 perdrez 80% de votre bande passante. Dans un  systeme  ISA/VESA,  vous
 n'obtiendrez  pas  mieux  que 6Mo/s. La plupart du temps, l'impact sur
 les taches en arriere plan est egalement tres sensible.

 Notez  bien  qu'avoir  plus  de  16Mo  de   memoire   n'implique   pas
 l'utilisation  d'une carte SCSI a controle de bus ISA. Contrairement a
 certains autres systemes d'exploitation,  Linux  effectue  une  double
 bufferisation  lors des transferts a acces direct memoire (DMA) sur un
 controleur ISA a destination d'une zone  au-dela  des  16Mo.  De  tels
 transferts ne sont penalises que de 1,5%, ce qui est tres raisonnable.

 Pour terminer, la difference de prix pour des cartes a controle de bus
 pour chacune de ces interfaces de bus est souvent minime.

 Avec  tout  cela  a  l'esprit,  en  fonction  de  vos  priorites,  vos
 preferences iront vers

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

      Performances et installations personnelles
                                              PCI EISA VESA ISA

 Comme je l'ai deja mentionne  plus  haut,  le  controle  de  bus  (bus
 mastering)  plus  que  tout  autre  mode  de  transfert aura un impact
 benefique sur les performances de tout le systeme et il doit etre plus
 important dans votre choix que le type de bus au moment de votre achat
 d'une carte SCSI.

 1100..55..  PPeerriipphheerriiqquueess mmuullttiipplleess

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

 1100..66..  LLeess ooppttiioonnss SSCCSSII--II,, SSCCSSII--IIII,, SSCCSSII--IIIIII FFAASSTT eett WWIIDDEE,, eettcc..

 Au  fil  des ans, le SCSI a evolue, les nouvelles versions de la norme
 apportant de meilleures performances, des methodes pour augmenter  les
 debits,  des  commandes normalisees pour les nouveaux peripheriques et
 de nouvelles commandes pour les peripheriques deja supportes.

 En tant que telles, les evolutions de la version ne  signifient  rien.
 Exception  faite  de  quelques  details mineurs (du genre : le SCSI-II
 n'autorise pas l'option "initiateur unique" du SCSI-I),  les  versions
 sont  compatibles  ascendantes,  les  nouvelles  fonctionnalites etant
 integrees en tant qu'options et n'etant pas obligatoires. La  decision
 d'appeler  un  peripherique  SCSI SCSI-I, SCSI-II ou SCSI-III est donc
 entierement un choix de vente.

 1100..77..  CCoommppaarraaiissoonn ddeess ppiillootteess

 Comparaison  des  pilotes  (les  chips  supportes  sont  listes  entre
 parentheses)

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

                                         total/LUN

 AM53C974        Controle de bus, DMA    12s/1s          255s            O
 aha152x         Scrutation par FIFO(8k) 7s/1s           255s            N
     (AIC6260,
     AIC6360)
 aha1542         Controle de bus, DMA    8s/1s           16              O
 aha1740         Controle de bus, DMA    32s             16              N
 aha274x         Controle de bus, DMA    4s/1s           255s            O
 BusLogic        Controle 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        Controle 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-verrouillee
                 (quelques echecs sur certains systemes !)
 seagate         Scrutation inter-verrouillee
                                         1s/1s           255s            N
 wd7000          Controle de bus, DMA    16s/1s          16              O
 t128            Scrutation inter-verrouillee
                                         16s             255s            O
     (NCR5380)
 qlogic          Scrutation inter-verrouillee
                                         1s/1s           255s            N
 ultrastor       Controle de bus, DMA    16s/2s          32              O
 53c7,8xx        Controle de bus, DMA
     (NCR53c810,
      NCR53c815,
      NCR53c820,
      NCR53c825)
     rel5                                1s/1s           127s            N
     rel10                               8s/1s           127s            O

 Remarques :

 1. Les  pilotes marques d'un asterisque (*) ne sont pas inclus dans la
    distribution du noyau et des images de demarrage  binaires  peuvent
    ne pas etre disponibles.

 2. Les   nombres   suffixes   par  un  's'  representent  des  limites
    arbitraires dans le logiciel, qui  peuvent  etre  changees  par  un
    #define au moment de la compilation.

 3. Les  limitations  materielles  sont indiquees par le suffixe 'h' et
    peuvent differer des limites logicielles actuellement imposees  par
    les pilotes de Linux.

 4. Des  nombres  sans  suffixe  peuvent  indiquer soit des limitations
    materielles, 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 etre telechargee par
    FTP anonyme.

 6. A l'exception de la AM53C974, les cartes a controle de bus DMA sont
    intelligentes  ;  les  NCR executent du microcode depuis la memoire
    principale, les AIC7770  executent  leur  microcode  depuis  de  la
    memoire embarquee sur le composant, toutes les autres utilisent une
    interface du style BAL (mailbox).

 1100..88..  CCoommppaarraaiissoonn ddeess ccoonnttrroolleeuurrss

 Carte                   Pilote          Bus     Prix    Remarques

 Adaptec AIC-6260        aha152x         ISA             composant,
                                                         pas une carte
 Adaptec AIC-6360        aha152x         VLB             composant,
                                                         pas une carte
     (utilise 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
                                                         (Controleur de Disquet-
                                                          tes)
 Adaptec 1510            aha152x         ISA             1520 sans ROM de boot,
                                                         auto-detection echouent.
 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 fabriquee
 Adaptec 1742            aha1740         EISA            n'est plus fabriquee
                                                         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  controleurs  multi-maitres  Bus-
 Logic'' pour des details 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 materiels
                                                         DTC ne sont pas geres,
                                                         a 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,                                 possedent pas de BIOS,
     Nextor, Gigabyte, etc.                              bien que la plupart des
     Cartes avec composant vendues                       cartes non equipees de
     par AMI, ASUS, J-Bond,                              NCR aient le BIOS SDMS
     etc. Frequentes dans les
     systemes 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 negocie 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 ele-
                                                         vees
 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  ete recemment rachetee par Adaptec et certains de leurs
    produits sont maintenant vendus sous le nom d'Adaptec.

 2. Suite a un depot de bilan, il n'existe plus aucun support technique
    a cette heure pour les cartes Ultrastor.

 3. Le prix des cartes a controle 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  (acces  32 bits) et d'autres pilotes
    peuvent etre telecharges gratuitement.

    Certains n'ont pas eu a se plaindre de la compagnie

      SW ([email protected]) (214) 907-0871 fax (214) 907-9339

 Au 23 decembre 1995, leur prix etait de $53 pour les cartes '810.

 4. Les  derniers  composants  SCSI   d'Adaptec   font   montre   d'une
    sensibilite   inhabituelle   aux   problemes   de   cablage  et  de
    terminaison. C'est pourquoi je ne  recommanderais  pas  les  cartes
    Adaptec 154x C et CF, pas plus que la serie 2xxx.

    A  remarquer  que  ces problemes de fiabilite ne sont pas constates
    sur les vieilles cartes 154x B et 174x A ou encore, d'apres ce  que
    j'en  sais,  sur les cartes a base des composants AIC-6360/AIC-6260
    (1505, 1510, 1520, etc.).

    La qualite de leur support technique a egalement baisse, les delais
    se  sont  frequemment  allonges  et  les employes sont incompetents
    (arguant par exemple de certaines clauses  de  confidentialite  sur
    des  documents,  alors  qu'il  n'y  en avait pas), parfois hostiles
    (refusant de passer les questions a d'autres techniciens lorsqu'ils
    sont incapables d'y repondre eux-memes).

 5. Si  des  utilisateurs desirent une collaboration ou veulent etablir
    des relations 'politiques' avec Adaptec, les remarques  precedentes
    doivent  etres  prises  en  consideration.  Cela etant, les Adaptec
    152x/1510/1505 sont meilleures que les autres cartes  ISA  dans  la
    meme  gamme  de prix et il y a des affaires a faire avec des cartes
    usagees ou des surplus de 154x B et 1742, ce qui, a mon avis,  doit
    faire oublier le probleme du support.

 6. Toutes  les  cartes  DPT peuvent etre mises a jour avec des modules
    memoire  (cache)  et  raid.  Toutes  les  cartes   sont   egalement
    disponibles en versions "Wide" et/ou differentielles.

 7. Les  cartes  NCR  ne sont pas toutes equivalentes. 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 marche de CSC).

 1100..99..  PPoouurr rreessuummeerr

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

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

 Les personnes avec des systemes PCI  pourront  regarder  du  cote  des
 cartes  basees  sur  le  composant  NCR53c8xx.  Ce  sont  des cartes a
 controle de bus ; on peut trouver des '810 a $53 l'unite (c'est-a-dire
 moins cheres que les Adaptec 1520). Le magazine C't a evalue 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'a 6Mo/s a travers le systeme de
 fichiers).  Les inconvenients de ces cartes comparees aux BusLogic est
 qu'elles ne sont pas  compatibles  avec  les  Adaptec  1540,  qu'elles
 peuvent etre livrees avec ou sans terminaison active et que vous allez
 devoir recuperer les dernieres versions des pilotes (standard dans les
 noyaux  1.3.5x  et  disponibles  par  FTP  pour les noyaux 1.2.x) pour
 exploiter pleinement le materiel, et  qu'enfin  vous  aurez  peut-etre
 plus  de  problemes 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-
 maitres  BusLogic  ou  DPT  est  probablement  le  meilleur  choix, la
 simplicite des interfaces de type BAL comparee  a  la  complexite  des
 interfaces des NCR53c8xx et des Adaptec AIC7xxx faisant la difference.

 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
 debits et une reponse interactive acceptables pour un prix modique.

 1111..  AAffffeeccttaattiioonn ddeess nnuummeerrooss ddee mmiinneeuurr

 Suite a l'utilisation par Linux du type dev_t  sur  16  bits,  8  bits
 etant  reserves  pour  le  mineur,  les  disques SCSI, les lecteurs de
 bandes ou de CDROM et les fichiers speciaux generiques ont des mineurs
 attribues dynamiquement, suivant l'algorithme suivant :

      Pour tous les controleurs SCSI, de scsi0 jusqu'a scsiN
              Pour tous les identificateurs SCSI sur le bus, de 0 a 7, sauf pour
              l'identificateur du controleur courant
                      Pour toutes les unites logiques, de 0 a max_scsi_luns
                      - test de la combinaison <bus, cible, unite logique> en
                        envoyant une commande TEST UNIT READY. Si une unite logique
                        est supposee absente, ne plus continuer les tests pour le
                        couple <bus, cible>.
                      - emission d'une commande INQUIRY pour determiner ce qui
                        a ete trouve (type du peripherique, vendeur, modele,
                        version du firmware, etc.).
                      - renvoi du resultat de cette reconnaissance a une fonction
                        speciale d'identification propre a chaque pilote de haut
                        niveau present (par exemple le pilote de disques, de
                        lecteur de bandes, etc.). Attachement de ce peripherique
                        a la prochaine unite disponible pour chaque pilote qui
                        desire gerer ce peripherique. Le gestionnaire generique
                        va tous les attacher.
                      - s'il s'agissait d'un peripherique SCSI-I ou qui fait
                        partie d'une liste de peripheriques connus comme ne
                        gerant pas plusieurs unites logiques, stopper les tests
                        pour le couple <bus, cible>.
                      - s'il s'agissait d'un peripherique connu comme pouvant
                        gerer plusieurs unites logiques, une scrutation de toutes
                        les unites logiques potentielles est commencee, surchargeant
                        la valeur max_scsi_luns.

 Il  y  a  souvent des problemes avec ce genre d'approche, car si votre
 systeme  possede  des  peripheriques  qui  ne  sont  pas  branches  en
 permanence,  les  mineurs  vont dependre des peripheriques presents au
 moment du boot. Cela peut etre genant, car les scripts de demarrage ou
 le  fichier  /etc/fstab  peuvent contenir des instructions pour monter
 des partitions specifiques. Ces commandes peuvent echouer si le disque
 a un mineur different d'une fois sur l'autre.

 Ce  probleme  n'a pas ete completement resolu. Un programme qu'on peut
 trouver sur tsx-11 cree une arborescence /dev/scsi basee sur le numero
 d'hote,  l'identificateur  et  le numero d'unite logique. Ce n'est pas
 particulierement propre, mais cela permet d'eviter pas mal d'ennuis.

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