Cette section contient une description des paramètres de démarrage qui sont utilisés pour passer des informations concernant les adaptateurs hôtes et les périphériques SCSI.
Les pilotes de niveau intermédiaire prennent en charge des choses comme le disques, les CD-Roms et les bandes sans s'attacher aux spécificitées de chaque périphériques.
Chaque périphérique SCSI peut avoir un nombre de `sous-périphériques' qui le composent. L'exemple le plus courant est représenté par les nouveaux CD-ROM SCSI qui utilisent plus d'un disque à la fois grâce à un chargeur de CD. Chaque CD est adressable comme un `Logical Unit Number' (LUN = Numéro d'Unité Logique) de ce périphérique multiple. Mais la plupart des périphériques comme les disques durs, les lecteurs de bandes et autres, sont des périphériques simples et on leur attribue le LUN zéro.
Le problème survient avec les périphériques à un seul LUN qui ont un mauvais microprogramme. Certains périphériques SCSI mal conçus (anciens et malheureurement nouveaux aussi) ne supportent pas d'être testés pour des LUN différents de zéro. Ils répondent en se bloquant, et peuvent aussi verrouiller tout le bus SCSI en même temps.
Les nouveaux noyaux ont une option de configuration qui vous permet d'indiquer le nombre maximum de LUN à tester. Par défaut, ils ne testent que le LUN zéro, pour éviter le problème décrit ci-dessus.
Pour spécifier le nombre de LUN à tester au moment du démarrage, il suffit d'entrer le paramètre de démarrage `max_scsi_luns=n', où n est un nombre compris entre un et huit. Pour éviter les problèmes décrits précédemment, on peut utiliser n=1 pour éviter de perturber les périphériques défectueux.
Certaines configurations de démarrage pour les lecteurs de bande SCSI peuvent être obtenues en utilisant ce qui suit :
st=buf_size[,write_threshold[,max_bufs]]
Les deux premiers nombres sont donnés en kilo-octets.
La valeur par défaut du buf_size
est 32 ko, et la taille maximum
qui peut être donnée est la valeur ridicule de 16384 ko.
La zone write_threshold
est la valeur à laquelle le tampon est
envoyé vers la bande, avec une valeur par défaut de 30ko.
Le nombre maximum de tampons varie en fonction du nombre de lecteurs
détectés, et a une valeur par défaut égale à deux. Voici un exemple
d'utilisationnbsp;:
st=32,30,2
Des indications plus précises peuvent être trouvées dans le fichier
README.st
qui est dans le répertoire scsi
de l'arborescence
des sources du noyau.
Notations utilisées dans cette section :
iobase
Le premier port d'Entrée/Sortie que le serveur SCSI occupe.
Ceux-ci sont donnés en notation hexadécimale, et sont généralement
situés dans la fourchette 0x200
à 0x3ff
.
irq
L'interruption matérielle pour laquelle la carte a été
configurée. Les valeurs autorisées dépendront de la carte en question,
mais seront généralement 5, 7, 9, 10, 11, 12, et 15. Les autres valeurs
étant généralement utilisées pour les périphériques courants comme les
disques durs IDE, les lecteurs de disquettes, les ports série, etc.
dma
Le canal DMA (Direct Memory Access - Accès Direct à la Mémoire)
Généralement appliqué aux cartes de pilotage du bus. Les cartes PCI et VLB
pilotent directement le bus, et ne nécessitent pas de canal DMA ISA.
scsi-id
L'identifiant que la carte-serveur utilise pour
s'identifier elle-même sur le bus SCSI. Un certain nombre de cartes
serveur vous permettront de modifier cette valeur, alors que d'autres
ont cette valeur stockée de façon définitive sur la carte. La valeur
par défaut la plus courante est sept, mais les cartes Seagate et
Future Domain TMC-950 par exemple utilisent la valeur six.
parity
Détermine si la carte serveur SCSI doit demander aux périphériques
connectés de fournir une valeur de parité avec tous les échanges
d'informations. La valeur 1 indique que la détection de parité est activée,
et la valeur 0 désactive le contrôle de parité. Encore une fois, toutes
les cartes ne supportent pas la sélection du contrôle de parité par
les paramètres de démarrage.
Les valeurs aha font référence à des cartes et les valeurs aic font référence aux puces SCSI actuelles de ce type de cartes, y compris la Soundblaster-16 SCSI.
Le code de test de ces serveurs SCSI recherche s'il existe un BIOS installé, et s'il n'est pas présent, le test ne trouvera pas votre carte. Vous aurez alors à utiliser le paramètre de démarrage avec la syntaxe suivante :
aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]]
Notez que si le pilote a été compilé avec l'option de recherche d'erreur activée, une sixième valeur peut être spécifiée pour fixer le niveau de recherche d'erreur.
Tous les paramètres sont décrits au début de cette section, et la
valeur reconnect
permet au périphérique de se déconnecter/reconnecter
si une valeur différente de zéro est utilisée.
Voici un exemple d'utilisation :
aha152x=0x340,11,7,1
Notez que les paramètres doivent être donnés dans l'ordre, ce qui signifie que si vous désirez spécifier une configuration de parité, vous devrez alors indiquer les valeurs de iobase, irq, scsi-id et reconnect aussi.
Ce sont les gammes de cartes aha154x. Les différentes cartes aha1542 ont un contrôleur de disquette i82077 en interne, tandis que les cartes de la série aha1540 n'en ont pas. Ce sont des cartes à "busmastering", (contrôle de bus) et elles ont des paramètres qui permettent d'indiquer le niveau ``d'équité'' qui est utilisé pour partager le bus avec les autres périphériques. Le paramètre de démarrage ressemble à ce qui suit.
aha1542=iobase[,buson,busoff[,dmaspeed]]
Les valeurs couramment utilisées pour iobase
sont les suivantes :
0x130, 0x134, 0x230, 0x234, 0x330, 0x334
.
Des clones de cartes peuvent autoriser d'autres valeurs.
Les valeurs buson, busoff
indiquent le nombre de microsecondes
pendant lesquelles la carte est prioritaire sur le bus ISA. Les valeurs
par défaut sont 11 μs prioritaire, et 4 μs non prioritaire, de façon
que d'autres cartes (comme une carte Ethernet ISA LANCE) aient
une chance d'avoir accès au bus ISA.
La valeur dmaspeed
fait référence à la vitesse (en Mo/s) à
laquelle s'effectue le transfert DMA (Direct Memory Access, Mémoire à
Accès Direct). La valeur par défaut est 5 Mo/s. Les nouvelles versions
de ces cartes vous permettent de sélectionner cette valeur de façon
logicielle alors que les anciennes cartes utilisait des cavaliers.
Vous pouvez utiliser des valeurs allant jusqu'à 10 Mo/s en supposant
que votre carte mère soit capable de les supporter. Expérimentez
prudemment si vous utilisez des valeurs supérieures à 5 Mo/s.
Ces cartes peuvent recevoir un paramètre selon la syntaxe suivante :
aic7xxx=extended,no_reset
La valeur de extended
, si elle est différente de zéro, indique
que la traduction étendue pour les disques de grande capacité est activée.
La valeur no_reset
, si elle est différente de zéro, indique au pilote
de ne pas réinitialiser le bus SCSI lorsqu'il configure la carte-serveur
au démarrage.
Le pilote AdvanSys peut accepter jusqu'à quatre adresses I/O
qui seront testées pour une carte SCSI AdvanSys. Notez que ces
valeurs (si elles sont utilisées) n'auront en aucun cas d'effet
sur les tests EISA ou PCI.
Elles sont seulement utilisées pour tester les cartes ISA et VLB.
De plus, si le pilote a été compilé avec l'option de débogage
activée, le niveau de détail des informations renvoyées par le
débogage peut être indiqué en ajoutant un paramètre
0xdeb[0-f]
. Le 0-f
permet de faire afficher
les 16 niveaux de messages de débogage.
Contrairement aux autres paramètres de démarrage, le pilote IN2000 utilise des préfixes de type chaîne ASCII pour la plupart de ses paramètres entiers; Voici la liste des paramètres acceptés :
ioport:addr
- Où addr est l'adresse IO d'une carte (généralement sans mémoire morte 'ROM').
noreset
- Pas de paramètres optionnels. Evite la remise à zéro du bus SCSI au moment du démarrage.
nosync:x
- x est un masque d'octets (bitmask) ou les 7 premiers bits correspondent aux 7 périphériques SCSI possibles (bit 0 pour le périphérique #0, etc). Positionnez un bit pour PREVENIR une négociation de synchronisation sur ce périphérique. Par défaut sync est DESACTIVE sur tous les périphériques.
period:ns
- ns est la durée minimum en nanosecondes d'une période de transfert de données en SCSI. La valeur par défaut est 500; les valeurs doivent être comprises entre 250 et 1000.
disconnect:x
- x = 0 pour ne jamais autoriser les déconnexions, 2 pour toujours les autoriser. x = 1 fait des déconnexions 'selon le besoin', ce qui est la valeur par défaut et généralement le meilleur choix.
debug:x - Si `DEBUGGING_ON' est positionné, x est un masque d'octets qui provoque différents types de sorties de débogage pour imprimer (voyez le DB_xxx définis dans in2000.h).
proc:x - Si `PROC_INTERFACE' est défini, x est un masque d'octets qui indique comment fontionne l'interface /proc et ce qu'elle fait (voir la définition de PR_xxx dans in2000.h
Quelques exemples d'utilisation sont listés ci-dessous :
in2000=ioport:0x220,noreset in2000=period:250,disconnect:2,nosync:0x03 in2000=debug:0x1e in2000=proc:3
Contrairement aux autres pilotes, celui-ci n'utilise pas de paramètres de démarrage pour indiquer les E/S, les IRQ ou les DMA (depuis que le AM53C974 est un périphérique PCI, il n'a pas besoin de la faire). En revanche, les paramètres sont utilisés pour communiquer les modes de transfert et les vitesses qui doivent être utilisés entre le serveur (host) et le périphérique cible. Utilisons un exemple pour y voir plus clair :
AM53C974=7,2,8,15
Ceci peut être interprété de la manière suivante :
`Pour communiquer entre le contrôleur d'identifiant SCSI-ID 7
et le périphérique d'identifiant SCSI-ID 2, un taux de transfert
de 8 MHz en mode synchrone, avec un décalage maximum de 15 octets
doit être négocié.' De plus amples détails peuvent être trouvés
dans le fichier linux/drivers/scsi/README.AM53C974
Dans les anciens noyaux, les pilotes buslogic n'acceptent qu'un seul paramètre, qui est l'adresse d'entrée/sortie. Elle doit correspondre à l'une des valeurs suivantes :
0x130, 0x134, 0x230, 0x234, 0x330, 0x334
.
Avec les noyaux v2.x, le pilote BusLogic accepte de nombreux paramètres (notez la casse ci dessus ; B et L majuscule !!!). La description détaillée qui suit est extraite directement du pilote de Leonard N. Zubkoff inclus dans le noyau v2.0 .
Pour le pilote BusLogic, une ligne de commande destinée au noyau comprend l'identifiant du pilote "BusLogic=" éventuellement suivi par une série d'entiers séparés par des virgules, et accessoirement par une suite de chaines aussi séparées par des virgules. Chaque ligne de commande s'applique à un adaptateur BusLogic. Des lignes de commande multiples peuvent être utilisées sur des systèmes utilisant plusieurs cartes BusLogic.
Le premier entier indiqué est l'adresse d'Entrée/Sortie (I/O Address) à laquelle l'adaptateur est situé. Si il n'est pas spécifié, il est positionné à zéro, ce qui indique d'appliquer cette ligne de commande au premier adaptateur BusLogic trouvé lors de la séquence de détection. Si une adresse I/O est fournie sur la ligne de commande, la séquence de détection est ignorée.
Le second entier fourni est la profondeur de la 'Tagged Queue' à utiliser pour les périphériques cibles qui utilisent le 'Tagged Queuing'. La profondeur de cette file correspond au nombre de commandes SCSI qui peuvent être envoyées simultanément pour être éxécutées. Si rien n'est indiqué, la valeur par défaut est zéro, et indique d'utiliser une valeur déterminée automatiquement en fonction du 'Total Queue Depth' de l'adaptateur, ainsi que du nombre, du type, de la vitesse des périphériques cible détectés. Pour les adaptateurs qui requièrent des 'ISA Bounce Buffers', le 'Tagged Queue Depth' est automatiquement positionné à 'BusLogic_TaggedQueueDepth_BB' pour éviter une préallocation excessive de mémoire 'DMA Bounce Buffer'. Les périphériques cibles qui ne supportent pas le 'Tagged Queuing' utilisent une 'Queue Depth' ayant pour valeur 'BusLogic_UntaggedQueueDepth'.
Le troisième entier est le 'Bus Settle Time' (temps de stabilisation du bus) en secondes. C'est le temps à attendre entre une remise à zéro physique de l'adaptateur, qui initialise une remise à zéro du bus SCSI, et le moment où l'on peut passer une commande SCSI. Si rien n'est indiqué, il est à zéro par défaut, ce qui indique d'utiliser la valeur BusLogic_DefaultBusSettleTime.
Le quatrième entier correspond aux options locales. Si rien n'est indiqué, la valeur par défaut est 0. Notez que ces options locales sont uniquement utilisées sur un adaptateur hôte spécifique.
Le cinquième entier correspond aux options globales. Si rien n'est indiqué, le valeur par défaut est 0. Notez que les options globales sont appliquées à tous les adaptateurs hôtes.
Les chaînes d'options sont utilisées pour contrôler le 'Tagged Queuing', le recouvrement d'erreur, et le test de l'adaptateur hôte.
Les indications pour le 'Tagged Queuing' commencent par "TQ:" et permettent d'indiquer précisemment où le 'Tagged Queuing' est autorisé sur les périphériques cibles qui le supportent. Les spécifications suivantes sont disponibles :
TQ:Default
- Le 'Tagged Queuing' sera permis, basé sur la version de micro-code de l'adaptateur hôte BusLogic et conditionné par la valeur de 'Tagged Queue Depth' qui doit permettre la mise en file d'attente de multiples commandes.
TQ:Enable
- Le 'Tagged Queuing' est activé pour tous les périphériques de cet adaptateur hôte, outrepassant toutes les limitations qui seraient imposées par la version de micro-code de cet adaptateur.
TQ:Disable
- Le 'Tagged Queuing' sera désactivé pour tous les périphériques reliés à cet adaptateur hôte.
TQ:<Per-Target-Spec>
- Le 'Tagged Queuing' sera contrôlé individuellement pour chaque périphérique cible. <Per-Target-Spec> est une séquence de caractères "Y", "N", et "X". "Y" active le 'Tagged Queuing', "N" désactive le 'Tagged Queuing', et "X" correspond à la valeur par défaut basée sur la version du micro-code. Le premier caractère correspond au périphérique cible 0, le second au périphérique cible 1, et ainsi de suite ; Si la séquence de caractères "Y", "N", et "X" ne suffit pas pour tous les périphériques cibles, les caractères non-indiqués prendront la valeur "X".
Notez que la demande explicite de 'Tagged Queuing' peut conduire à des problèmes. Cette capacité est fournie principalement pour permettre de désactiver le 'Tagged Queuing' sur des périphériques qui ne l'utilisent pas correctement.
Les indications de la Stratégie de Recouvrement d'Erreurs commencent par "ER:" et permettent d'indiquer l'action de recouvrement d'erreur à effectuer quand la 'ResetCommand' est appellée en raison d'un incident sur une commande SCSI, de façon à finir correctement. Les options suivantes sont disponibles :
ER:Default
- Le Recouvrement d'Erreur choisira entre la remise à zéro physique (Hard Reset) et la remise à zéro du bus des périphériques (Bus Device Reset) selon les recommandations du sous système SCSI.
ER:HardReset
- Le Recouvrement d'Erreur demandera une remise à zéro physique de l'adaptateur hôte, ce qui provoquera aussi une remise à zéro du bus SCSI.
ER:BusDeviceReset
- Le recouvrement d'Erreur enverra un message 'Bus Device Reset' (remise à zéro du bus) individuellement au périphérique provoquant l'erreur. Si le Recouvrement d'Erreur est à nouveau appelé pour ce périphérique, et qu'aucune commande SCSI de ce périphérique n'a été éxecutée avec succès depuis le dernier message 'Bus Device Reset' a été envoyé, alors une remise à zéro physique est provoquée.
ER:None
- Le Recouvrement d'Erreur sera supprimé. Cette option peut seulement être sélectionnée si un 'SCSI Bus Reset' ou un 'Bus Device Reset' provoque un plantage du périphérique cible de façon totale et irrécupérable.
ER:<Per-Target-Spec>
- Le Recouvrement d'Erreur sera contrôlé individuellement pour chaque périphérique. <Per-Target-Spec> est une séquence de caractères "D", "H", "B", et "N". "D" correspond à 'Default', "H" à 'Hard Reset', "B" à 'Bus Device Reset', et "N" à 'None'. Le premier caractère correspond au périphérique 0 , le second au périphérique 1, et ainsi de suite. Si la séquence de caractères "D", "H", "B", et "N" ne suffit pas pour tous les périphériques possibles, les carractères manquants correspondront à "D".
Les spécifications de test de l'adaptateur hôte sont les suivantes :
NoProbe - Aucun test d'aucune sorte ne doit être fait, et par conséquent, aucun adaptateur hôte BusLogic ne sera détecté.
NoProbeISA - Aucun test des adresses I/O standard ISA ne sera fait, et par conséquent, seuls les adaptateurs hôtes PCI seront détectés.
NoSortPCI - Les adaptateurs hôtes PCI seront énumérés dans l'ordre fourni par le BIOS PCI, ignorant tous les paramètres de l'option "Utilisation du # des bus et périphériques pour la séquence d'analyse du bus PCI" de l'AutoSCSI.
Depuis la déjà ancienne version v2.0 du noyau, les pilotes EATA acceptent un paramètre de démarrage permettant d'indiquer les adresses d'entrée/sortie qui doivent être testées. Il est de la forme :
eata=iobase1[,iobase2][,iobase3]...[,iobaseN]
Le pilote testera les adresses dans l'ordre où elles sont fournies.
Le code de test pour ces hôtes SCSI recherche un BIOS installé, et s'il n'en détecte aucun, le test ne trouvera pas votre carte. Ou si la signature de votre BIOS n'est pas reconnue, elle ne sera pas trouvée non plus. Dans ce cas, vous aurez à utiliser un paramètre de démarrage de la forme :
tmc8xx=mem_base,irq
La valeur mem_base
est l'adresse dans le plan mémoire de la région
d'entrée/sortie utilisée par la carte. C'est généralement une des valeurs
suivantes :
0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
.
Le pilote détecte ces cartes selon une liste connue de signatures
de BIOS ROM. Pour obtenir une liste complète des révisions connues
de BIOS, voyez le fichier linux/drivers/scsi/fdomain.c
qui contient beaucoup d'informations en début de fichier. Si votre
BIOS n'est pas connu du pilote, vous pourrez utiliser un forçage
de la façon suivante :
fdomain=iobase,irq[,scsi_id]
Ce pilote est pour l'adaptateur SCSI de l'IOMEGA Port Parallèle qui est intégré dans le lecteur IOMEGA ZIP. Il peut aussi fonctionner avec le périphérique d'origine IOMEGA PPA3. Le paramètre de démarrage pour ce pilote a la structure suivante :
ppa=iobase,speed_high,speed_low,nybble
où tous les paramètres sont facultatifs, sauf 'iobase'. Si vous
souhaitez modifier un des trois éléments, il serait bon de lire
au préalable le document linux/drivers/scsi/README.ppa
afin d'obtenir des détails sur ces paramètres.
Selon votre carte, le 5380 peut-être soit 'i/o mapped' ou 'memory
mapped' (répertorié en entrée/sortie ou répertorié en mémoire).
Une adresse en dessous de 0x400 indique souvent l'i/o mapping,
cependant, les matériels PCI et EISA utilisent des adresses
d'entrée/sortie au dessus de 0x3ff. Dans tous les cas, vous indiquez
l'adresse, la valeur de l'IRQ, et la valeur du canal DMA. Un exemple
pour une carte 'i/o mapped' serait : ncr5380=0x350,5,3
.
Si la carte n'utilise pas les interruptions, une valeur d'IRQ 255
(0xff
) désactivera les interruptions. Une IRQ à 254 indiquera
d'activer l'autotest. Des détails supplémentaires sont fournis dans
le document linux/drivers/scsi/README.g_NCR5380
.
Le support du 53c400 est fait avec le même pilote que le support du 5380 mentionné ci-dessus. Le paramètre de démarrage est identique au précédent, sauf qu'aucun canal DMA n'est utilisé par le 53c400.
Ce pilote utilise un paramètre de démarrage de la forme suivante :
ncr53c406a=PORTBASE,IRQ,FASTPIO
où les paramètres IRQ et FASTPIO sont optionnels. Une valeur
d'interruption à zéro désactive l'utilisation des interruptions.
L'utilisation d'une valeur à 1 pour FASTPIO active l'utilisation
des instructions insl
et outsl
au lieu des instructions
mono-octet inb
et outb
. Le pilote peut aussi utiliser
le DMA comme une option utilisée lors de la compilation (compile-time
option).
La PAS16 utilise une puce NCR5380 SCSI, et les nouveaux modèles peuvent être configurés de façon logicielle. La syntaxe du paramètre est la suivante :
pas16=iobase,irq
La seule différence est que vous pouvez spécifier une valeur d'IRQ égale
à 255, qui indique au pilote de travailler sans utiliser les interruptions,
malheureusement au détriment des performances. La valeur de iobase
est généralement 0x388
.
Le code du programme de test de cet hôte SCSI recherche un BIOS installé, et s'il n'y en a aucun de présent, le test ne trouvera pas votre carte. Ou si la signature de votre BIOS n'est pas reconnue elle ne sera pas trouvée non plus. Dans ce cas, vous aurez à utiliser le paramètre suivant :
st0x=mem_base,irq
La valeur de mem_base
est l'adresse dans le plan mémoire de la région
d'entrée/sortie utilisée par la carte. En général, il s'agit d'une des
valeurs suivantes :
0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000
.
Cette carte est aussi conçue autour de la puce NCR5380, et accepte les options suivantes :
t128=mem_base,irq
Les valeurs autorisées pour mem_base
sont les suivantes :
0xcc000, 0xc8000, 0xdc000, 0xd8000
.
Notez que pour cette carte tout se présente sous la forme de deux
pilotes indépendants, nommés CONFIG_SCSI_U14_34F
qui utilise
u14-34f.c
et CONFIG_SCSI_ULTRASTOR
qui utilise
ultrastor.c
. C'est le u14-34f qui (jusqu'au dernier noyau v2.0)
accepte un paramètre de démarrage de la forme :
u14-34f=iobase1[,iobase2][,iobase3]...[,iobaseN]
Le pilote autotestera les adresses dans l'ordre dans lequel elles apparaissent.
Le test du pilote pour le wd7000 cherche une chaine connue de BIOS ROM et connait quelques réglages standards de configuration. Si il ne retrouve pas les valeurs correctes pour votre carte, ou que vous avez une version de BIOS non reconnue, vous pouvez utiliser le pramètre suivant :
wd7000=irq,dma,iobase
Pour l'instant, les cartes SCSI suivantes n'utilisent aucun des paramètres de démarrage. Dans certains cas, vous pouvez "bricoler" les valeurs en éditant directement le pilote lui-même, si cela est nécessaire bien sûr.
Adaptec aha1740 (autotest EISA), NCR53c7xx, 8xx (PCI, toutes les deux) Qlogic Fast (0x230, 0x330) Qlogic ISP (PCI)
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre