<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>The Linux SCSI HOWTO: Host</TITLE> <LINK HREF="SCSI-HOWTO-6.html" REL=next> <LINK HREF="SCSI-HOWTO-4.html" REL=previous> <LINK HREF="SCSI-HOWTO.html#toc5" REL=contents> </HEAD> <BODY> <A HREF="SCSI-HOWTO-6.html">Avanti</A> <A HREF="SCSI-HOWTO-4.html">Indietro</A> <A HREF="SCSI-HOWTO.html#toc5">Indice</A> <HR> <H2><A NAME="s5">5. Host</A></H2> <P>Questa sezione fornisce informazioni specifiche a proposito dei diversi adattatori host che sono in qualche modo supportati sotto linux. <P> <H2><A NAME="ss5.1">5.1 Hardware supportato e non supportato</A> </H2> <P>Driver nella distribuzione del kernel: <P>Adaptec 152x, Adaptec 154x (schede DTC 329x solitamente funzionano, ma non sono supportate), Adaptec 174x, Adaptec 274x/284x (il supporto per 294x richiede un versione più recente del driver), BusLogic MultiMaster Host Adapters, schede che rispettano gli standard EATA-DMA e EATA-PIO (DPT PM2001, PM2011, PM2012A, PM2012B, PM2021, PM2022, PM2024, PM2122, PM2124, PM2322, PM2041, PM2042, PM2044, PM2142, PM2144, PM2322, PM3021, PM3122, PM3222, PM3224, PM3334, alcune schede NEC, AT&T, SNI, AST, Olivetti, e Alphatronix), Future Domain 850, 885, 950, e altre schede di questa serie (ma non le 840, 841, 880, e 881 a meno di non aggiungere la patch appropriata), Future Domain 16x0 con chip TMC-1800, TMC-18C30, o TMC-18C50, NCR53c8xx, le porte SCSI della PAS16 SCSI, Seagate ST0x, schede Trantor T128/T130/T228, Ultrastor 14F, 24F, e 34F, e Western Digital 7000. <P>MCA: <P>Le schede MCA compatibili con una scheda supportata (ad esempio Adaptec 1640 and BusLogic 640) funzionano. <P>Driver alpha: <P>Molti driver ALPHA sono disponibili presso <P> <BLOCKQUOTE><CODE> <PRE> ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi </PRE> </CODE></BLOCKQUOTE> <P>Driver che funzioneranno con delle modifiche <P>NCR53c8x0/7x0: <P> <BLOCKQUOTE> <PRE> E' stato sviluppato un driver NCR53c8xx, ma attualmente non funziona con chip NCR53c700, NCR53c700-66, NCR53c710, e NCR53c720. Segue un elenco di modifiche necessarie per far funzionare ciascuno di questi chip, ognuna accompagnata della complessità. NCR53c720 (triviale) - modifiche al codice di rilevamento, modifiche all'inizializzazione, cambio del codice di correzione per rimappare i registri del '810 sul '7xx. NCR53c710 (triviale) - modifiche al codice di rilevamento, modifiche all'inizializzazione, cambio del codice di correzione per rimappare i registri del '810 sul '7xx, modifiche ai gestori di interrupt per trattare interrupt IID dall'istruzione INTFLY per emularlo. NCR53c700, NCR53c700-66 (molto complicato) - modifiche al codice di rilevamento, modifiche all'inizializzazione, cambio del codice NCR per non usare DSA, modifica del codice Linux per gestire i cambi di contesto. </PRE> </BLOCKQUOTE> <P>Host SCSI che non funzionano : <P>Tutti gli adattatori parallelo->SCSI, schede SCSI Rancho e schede Grass Roots SCSI. Schede BusLogic FlashPoint, come ad esempio BT-930/932/950 non sono attualmente supportate. <P>Host SCSI che non funzioneranno MAI : <P>Schede non compatibili Adaptec, schede non NCR53c8xx DTC (incluse le 3270 e 3280). <P>Schede CMD SCSI. <P>L'acquisire informazioni a proposito della programmazione richiede un patto di non divulgazione (<EM>Non-Disclosure Agreement</EM>) con DTC/CMD. Quindi sarebbe impossibile distribuire un driver Linux se ne fosse scritto uno, poiché seguire il NDA significherebbe non distribuire sorgente, in violazione della GPL, e seguire la GPL significherebbe distribuire sorgente, in violazione del NDA. <P>Se volete eseguire Linux con qualche altro componente hardware non supportato, le vostre opzioni sono o di scrivervi da soli un driver (Eric Youngdale ed io siamo disposti a rispondere a domande a proposito di driver Linux SCSI), oppure commissionarlo a terzi (le normali tariffe di consulenza indicano che questa non è un opzione praticabile per l'uso personale). <P> <H3>Adattatori per host multipli </H3> <P>Alcuni adattatori ( <A HREF="SCSI-HOWTO-10.html#BuyerGuideFeatures">Guida all'acquisto: confronto delle caratteristiche</A>), permettono l'uso di più adattatori dello stesso tipo nello stesso sistema. Con più adattatori dello stesso tipo nello stesso sistema, solitamente quello all'indirizzo più basso sarà scsi0, quello all'indirizzo seguente sarà scsi1, ecc. <P>In tutti i casi, è possibile usare più adattatori di tipo diverso purché i loro indirizzi non siano in conflitto. La scansione dei controller SCSI avviene nell'ordine specificato nel vettore builtin_scsi_hosts[] in drivers/scsi/hosts.c, che è generalmente: <P> <BLOCKQUOTE> BusLogic, Ultrastor 14/34F, Ultrastor 14F,, Adaptec 151x/152x, Adaptec 154x, Adaptec 174x, AIC7XXX, AM53C974, Future Domain 16x0, Always IN2000, Generic NCR5380, QLOGIC, PAS16, Seagate, Trantor T128/T130, NCR53c8xx, EATA-DMA, WD7000, debugging driver. </BLOCKQUOTE> <P>Nella maggior parte dei casi (ad esempio, non state provando ad usare driver sia il driver BusLogic che Adaptec), questo può essere modificato secondo le vostre esigenze (ad esempio, mantenere gli stessi dispositivi quando vengono aggiunti al sistema su un nuovo controller nuovi dispositivi SCSI) spostando le varie voci. <P> <H2><A NAME="CommonProblems"></A> <A NAME="ss5.2">5.2 Problemi comuni </A> </H2> <P> <P> <H3>Timeout SCSI</H3> <P>Accertatevi che gli interrupt siano attivati nella maniera corretta, e che non ci siano conflitti di IRQ, DMA, o di indirizzi con altre schede. <P> <H3>Fallimento delle routine di autorilevamento su schede chedipendono da BIOS per l'autorilevamento </H3> <P>Se il vostro adattatore è uno dei seguenti: <P> <BLOCKQUOTE> Adaptec 152x, Adaptec 151x, Adaptec AIC-6260, Adaptec AIC-6360, Future Domain 1680, Future Domain TMC-950, Future Domain TMC-8xx, Trantor T128, Trantor T128F, Trantor T228F, Seagate ST01, Seagate ST02, o Western Digital 7000 </BLOCKQUOTE> <P>e non è individuato all'avvio del sistema, ad esempio vi appare <P> <BLOCKQUOTE><CODE> <PRE> scsi : 0 hosts </PRE> </CODE></BLOCKQUOTE> <P>o un messaggio <P> <BLOCKQUOTE><CODE> <PRE> scsi%d : tipo </PRE> </CODE></BLOCKQUOTE> <P>non è stampato per ogni adattatore SCSI supportato installato nel sistema, potreste avere un problema con la routine di autorilevamento che non riconosce la vostra scheda. <P>L'autorilevamento fallirà ugualmente per driver che usano il BIOS per l'autorilevamento se il BIOS è disattivato. Controllate due volte che il vostro BIOS sia attivato, e non sia in conflitto con i BIOS di altre periferiche. <P>L'autorilevamento fallirà anche nel caso in cui la ``signature'' (``firma'': una stringa che identifica una particolare scheda) della scheda e/o l'indirizzo BIOS non combacino con indirizzi e signature conosciuti. <P>Se il BIOS è installato usate DOS e DEBUG per trovare una signature che permetterà di individuare la scheda. <P>Ad esempio, se la vostra scheda si trova all'indirizzo 0xc8000, sotto DOS eseguite <P> <BLOCKQUOTE><CODE> <PRE> debug d c800:0 q </PRE> </CODE></BLOCKQUOTE> <P>e inviate un messaggio alla mailing list SCSI contenente il messaggio ASCII, la lunghezza e l'offset dall'indirizzo base (ad esempio, 0xc8000). Notate che è richiesto il testo ESATTO, e dovreste inviare sia le porzioni hesadecimali che ASCII del testo. <P>Se il BIOS non è installato, e state usando un driver Adaptec 152x, Trantor T128, o Seagate, potete usare la linea di comando oppure intervenire a tempo di compilazione per forzare il riconoscimento. <P>Consultate anche il sottoparagrafo appropriato per la vostra scheda SCSI e anche la sezione <A HREF="SCSI-HOWTO-2.html#Flakiness">Malfunzionamento generale</A>. <P> <H3>Schede che utilizzano I/O memory mapped non funzionano</H3> <P>(Questo comprende le schede Trantor T128 e Seagate, ma non i driver Adaptec, generiche NCR5380, PAS16, e Ultrastor). <P>Questo mancato funzionamento si ha spesso quando il caching delle porte di I/O memory mapped è eseguito in maniera non corretta. Dovreste avere lo spazio dell'indirizzo delle schede marcato come non cachable nei settaggi XCMOS. <P>Se questo non è possibile, dovreste disattivare interamente la cache. <P>Se avete specificato manualmente l'indirizzo della scheda, ricordatevi che Linux ha bisogno dell'indirizzo reale della scheda, e non del segmento di 16 byte a cui la documentazione può riferirsi. <P>Ad esempio, 0xc8000 sarebbe corretto, 0xc800 non funzionerebbe e potrebbe causare problemi di corruzione della memoria. <P> <H3>Eseguendo il boot da un floppy con un driver ALPHA si ottiene. "kernel panic : cannot mount root device"</H3> <P>Avrete bisogno di modificare l'immagine binaria del kernel (prima o dopo averla scritta sul disco), e di modificare alcuni campi a due byte (in formato little endian, cioè i bit meno significativi vengono per primi) per garantire che funzionerà sul vostro sistema: <P> <OL> <LI> il dispositivo di swap predefinito, a offset 502, dovrebbe essere impostato a 0x00 0x00 </LI> <LI> la dimensione del ram disk, a offset 504, dovrebbe essere impostata all'ampiezza del floppy di boot in K - ad esempio, 5.25" = 1200, 3.5" = 1440. <BLOCKQUOTE> <PRE> Questo significa che i byte sono 3.5" : 0xA0 0x05 5.25" : 0xB0 0x04 </PRE> </BLOCKQUOTE> </LI> <LI> dispositivo di root, a offset 508, dovrebbe essere impostato a 0x00 0x00, cioè al dispositivo da cui si esegue il boot. </LI> </OL> <P>Scrivete il file su disco usando dd o rawrite. Inserite il disco nel primo drive floppy, aspettate finché non appare il prompt che vi dice di inserire il disco root, e poi inserite il floppy di root della vostra distribuzione. <P> <H3>Installare un driver di dispositivo non incluso nella distribuzione del kernel </H3> <P>Avete bisogno di incominciare con la versione del kernel usata dall'autore del driver. Probabilmente si parla di questa revisione nella documentazione del driver. <P>Potete trovare parecchie revisioni recenti del kernel presso: <BLOCKQUOTE><CODE> <PRE> nic.funet.fi:/pub/OS/Linux/PEOPLE/Linus </PRE> </CODE></BLOCKQUOTE> <P>con il nome linux-version.tar.gz <P>Si trovano anche presso tsx-11.mit.edu e vari altri siti <P> <BLOCKQUOTE><CODE> <PRE> andate (cd) nella directory /usr/src. </PRE> </CODE></BLOCKQUOTE> <P>Rimuovete i vostri vecchi sorgenti Linux; se volete tenere una loro copia di backup: <P> <BLOCKQUOTE><CODE> <PRE> mv linux linux-old </PRE> </CODE></BLOCKQUOTE> <P>scompattate il file <P> <BLOCKQUOTE><CODE> <PRE> gunzip < linux-0.99.12.tar.gz | tar xvfp - </PRE> </CODE></BLOCKQUOTE> <P>Applicate le patch. Le patch saranno relative a qualche directory nel filesystem. Esaminando le righe di file di output nel file di patch (con il comando ``grep ^---''), siete in grado di stabilire dove si trova il file; ad esempio patch con queste linee: <P> <BLOCKQUOTE><CODE> <PRE> --- ./kernel/blk_drv/scsi/Makefile --- ./config.in Wed Sep 1 16:19:33 1993 </PRE> </CODE></BLOCKQUOTE> <P>avranno i file relativi a /usr/src/linux. <P>Scompattate i sorgenti del driver in un luogo appropriato - potete digitare: <P> <BLOCKQUOTE><CODE> <PRE> tar tfv patches.tar </PRE> </CODE></BLOCKQUOTE> <P>per ottenere un elenco, e muovere i file nella maniera necessaria (i file del driver SCSI dovrebbero stare in /usr/src/linux/kernel/drivers/scsi). <P>Oppure spostatevi nelle directory a cui sono relativi e digitate: <P> <BLOCKQUOTE><CODE> <PRE> patch -p0 < patch_file </PRE> </CODE></BLOCKQUOTE> <P>per applicare le patch. Ad esempio, se i file iniziassero con: <P> <BLOCKQUOTE><CODE> <PRE> --- linux-new/kernel/blk_drv/scsi/Makefile </PRE> </CODE></BLOCKQUOTE> <P>e voi voleste applicare le patch mentre si trovano in /usr/src/linux, potreste entrare nella directory /usr/src/linux e digitare: <P> <BLOCKQUOTE><CODE> <PRE> patch -p1 < patches </PRE> </CODE></BLOCKQUOTE> <P>per trascurare la componente "linux-new". <P>Dopo aver applicato le patch, controllate che non ci sia alcun errore di applicazione delle patch stesse, che si manifesterà con il nome del file seguito da un suffisso #. <P> <BLOCKQUOTE><CODE> <PRE> find /usr/src/linux/ -name "*#" -print </PRE> </CODE></BLOCKQUOTE> <P>Se qualcuno di questi esiste, osservateli attentamente. In alcuni casi, le differenze consisteranno negli identificatori RCS e saranno innocue, altre volte dovrete applicare manualmente delle parti importanti. Documentare i file diff e patch va oltre gli scopi di questo documento. <P>Consultate anche <A HREF="SCSI-HOWTO-2.html#KernelConfig">Configurazione e compilazione del kernel</A>. <P> <H3>Installazione di un driver che non ha patch</H3> <P>In alcuni casi un autore di driver può non offrire patch con i file .c e .h che contengono il suo driver, o le patch possono essere per una versione più vecchia del kernel e quindi non installarsi in maniera ``pulita''. <P> <OL> <LI> Copiate i file .c e .h in /usr/src/linux/drivers/scsi </LI> <LI> Aggiungete l'opzione di configurazione Modificate /usr/src/linux/config.in, aggiungendo una riga nella sezione: <BLOCKQUOTE><CODE> <PRE> * * SCSI low-level drivers * </PRE> </CODE></BLOCKQUOTE> aggiungete una variabile booleana di configurazione per il vostro driver. Ad esempio: <BLOCKQUOTE><CODE> <PRE> bool 'Always IN2000 SCSI support' CONFIG_SCSI_IN2000 y </PRE> </CODE></BLOCKQUOTE> </LI> <LI> Aggiungete le righe occorrenti al makefile Modificate /usr/src/linux/drivers/scsi/Makefile, aggiungendo qualcosa come: <BLOCKQUOTE><CODE> <PRE> ifdef CONFIG_SCSI_IN2000 SCSI_OBS := $(SCSI_OBJS) in2000.o SCSI_SRCS := $(SCSI_SRCS) in2000.c endif </PRE> </CODE></BLOCKQUOTE> prima della riga: <BLOCKQUOTE><CODE> <PRE> scsi.a: $(SCSI_OBJS) </PRE> </CODE></BLOCKQUOTE> nel makefile, dove il file .c è il file .c che voi avete copiato, e il file .o è il nome base del file .c con un suffisso .o. </LI> <LI> Aggiungete i punti di entrata Modificate /usr/src/linux/drivers/scsi/hosts.c, aggiungendo un #include per l'header file, condizionato dal fatto che la macro di preprocessing CONFIG_SCSI (che avete aggiunto al file di configurazione) sia o meno definita. Ad esempio, dopo <BLOCKQUOTE><CODE> <PRE> #ifdef CONFIG_SCSI_GENERIC_NCR5380 #include "g_NCR5380.h" #endif </PRE> </CODE></BLOCKQUOTE> potreste aggiungere <BLOCKQUOTE><CODE> <PRE> #ifdef CONFIG_SCSI_IN2000 #include "in2000.h" #endif </PRE> </CODE></BLOCKQUOTE> Dovrete anche aggiungere Scsi_Host_Template al vettore scsi_hosts[]. Date un'occhiata nel file .h, e dovreste trovare un #define che assomiglia a: <BLOCKQUOTE><CODE> <PRE> #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} </PRE> </CODE></BLOCKQUOTE> Prendete il nome della definizione di preprocessore, e aggiungetela al vettore scsi_hosts[], condizionato dalla definizione o meno del simbolo di preprocessing che avete usato nel file di configurazione. Ad esempio, dopo: <BLOCKQUOTE><CODE> <PRE> #ifdef CONFIG_SCSI_GENERIC_NCR5380 GENERIC_NCR5380, #endif </PRE> </CODE></BLOCKQUOTE> potreste aggiungere <BLOCKQUOTE><CODE> <PRE> #ifdef CONFIG_SCSI_IN2000 IN2000, #endif </PRE> </CODE></BLOCKQUOTE> Vedete anche <A HREF="SCSI-HOWTO-2.html#KernelConfig">Configurazione e compilazione del kernel</A>. </LI> </OL> <P> <P> <H3>Una scheda PCI non funziona in un sistema Compaq</H3> <P>Un certo numero di sistemi Compaq mappa le estensioni BIOS a 32 bit usate per cercare i dispositivi PCI, in una parte di memoria inaccessibile al kernel Linux a causa del layout della memoria. Se Linux non è in grado di individuare una scheda PCI SCSI supportata, e vi dice qualcosa come: <P> <BLOCKQUOTE><CODE> <PRE> pcibios_init: entry in high memory, unable to access </PRE> </CODE></BLOCKQUOTE> <P>Prendete: <P> <BLOCKQUOTE><CODE> <PRE> ftp://ftp.compaq.com/pub/softpaq/Software-Solutions/sp0921.zip </PRE> </CODE></BLOCKQUOTE> <P>che è un archivio autoscompattante contenente un programma che rilocherà il codice BIOS32. <P> <H3>Un sistema con schede PCI rimane bloccato dopo il messaggio %d Host</H3> <P> <P>Alcuni sistemi PCI hanno BIOS malfunzionanti che disattivano gli interrupt e non sono in grado di riattivarli prima di restituire il controllo al programma chiamante. La seguente patch risolve questo problema: <P> <BLOCKQUOTE><CODE> <PRE> --- bios32.c.orig Mon Nov 13 22:35:31 1995 +++ bios32.c Thu Jan 18 00:15:09 1996 @@ -56,6 +56,7 @@ #include <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; } </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss5.3">5.3 Adaptec 152x, 151x, 1505, 282x, Sound Blaster 16 SCSI, SCSI Pro, Gigabyte e altri prodotti basati su AIC 6260/6360 (Standard)</A> </H2> <P> <P>Configurazioni supportate <P> <BLOCKQUOTE><CODE> <PRE> indirizzi BIOS : 0xd8000, 0xdc000, 0xd0000, 0xd4000, 0xc8000, 0xcc000, 0xe0000, 0xe4000. Porte : 0x140, 0x340 IRQ : 9, 10, 11, 12 DMA : non usato IO : port mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento: <P> <BLOCKQUOTE><CODE> <PRE> Funziona con molte schede con un BIOS installato. Tutte le altre schede, inclusa la Adaptec 1510, e la Sound Blaster16 SCSI devono usare una riga di comandi kernel o impostazioni a tempo di compilazione. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P>Al momento della compilazione: <P> <BLOCKQUOTE><CODE> <PRE> Definite in modo appropriato PORTBASE, IRQ, SCSI_ID, RECONNECT, PARITY, vedete ``Definizioni''. </PRE> </CODE></BLOCKQUOTE> <P>Linea di comando kernel: <P> <BLOCKQUOTE><CODE> <PRE> aha152x=<PORTBASE>[,<IRQ>[,<SCSI-ID>[,<RECONNECT>[,<PARITY>]]]] </PRE> </CODE></BLOCKQUOTE> <P>SCSI-ID è lo SCSI ID dell'adattatore HOST, non degli eventuali dispositivi ad esso connessi. Solitamente dovrebbe essere 7. <P>Per forzare il riconoscimento di una scheda a 0x340, IRQ 11, SCSI-ID 7, con disconnessione/riconnessione permesse, dovreste usare la seguente opzione di riga di comandi: <P> <BLOCKQUOTE><CODE> <PRE> aha152x=0x340,11,7,1 </PRE> </CODE></BLOCKQUOTE> <P>Problemi di ``arretratezza'' che si risolvono aggiornando : <P> <OL> <LI> Il driver non funziona con le schede VLB. C'era un problema di temporizzazione in kernel più vecchi della revisione 1.0.5 </LI> </OL> <P>Definizioni: <P> <BLOCKQUOTE><CODE> <PRE> AUTOCONF : usa la configurazione riportata dal controller (solo 152x) IRQ : imposta il canale di interrupt (9,10,11 o 12) (predefinito 11) SCSI_ID : imposta lo SCSI ID dell' AIC-6260 (0-7) (predefinito 7) RECONNECT : imposta disconnessione/riconnessione (ponetelo diverso da zero per permetterle e a zero per disattivarle) DONT_SNARF : Non registrare le porte (pl12 e sotto) SKIP_BIOSTEST : Non testare per una signature BIOS (AHA-1510 o BIOS disattivato) PORTBASE : Forza l'indirizzo base. Non effettuare la ricerca automatica. </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss5.4">5.4 Adaptec 154x, AMI FastDisk VLB, DTC 329x (Standard)</A> </H2> <P> <P>Configurazioni supportate <P> <BLOCKQUOTE><CODE> <PRE> Porte : 0x330 e 0x334 IRQ : 9, 10, 11, 12, 14, 15 canali DMA : 5, 6, 7 IO : port mapped, bus master </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento: <P> <BLOCKQUOTE><CODE> <PRE> troverà schede solo a 0x330 e 0x334. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> aha1542=<PORTBASE>[,<BUSON>,<BUSOFF>[,<DMASPEED>]] </PRE> </CODE></BLOCKQUOTE> <P>Note: <P> <OL> <LI> BusLogic costruisce una serie di schede che sono compatibili a livello di software con Adaptec 1542, e ce ne sono per i bus ISA, VLB, EISA, e PCI.</LI> <LI> Schede il cui nome non ha suffisso, e vecchie schede con il suffisso ``A'' non supportano scatter/gather, e quindi non funzionano. Comunque si riesce a farle funzionare in qualche modo se AHA1542_SCATTER è modificato in 0 in drivers/scsi/aha1542.h.</LI> </OL> <P>Problemi di ``arretratezza'' che si risolvono aggiornando: <P> <OL> <LI> Revisioni del kernel precedenti alla .99.10 non supportano la revisione 'C'. </LI> <LI> Revisioni del kernel precedenti alla .99.14k non supportano le opzioni di revisione 'C' per: <UL> <LI> supporto BIOS per il mapping esteso per dischi > 1G;</LI> <LI> supporto BIOS per più di 2 drive;</LI> <LI> supporto BIOS per autoscanning del bus SCSI.</LI> </UL> </LI> <LI> Le revisioni precedenti alla .99.15e del kernel non supportano 'C' con il supporto BIOS per > 2 drive attivo, e il supporto BIOS per il mapping esteso per dischi > 1G non attivo.</LI> <LI> Revisioni precedenti alla .99.14u del kernel non supportano le revisioni 'CF' delle schede.</LI> <LI> Le versioni precedenti alla 1.0.5 del kernel hanno un problema di corsa critica quando devono accedere a più dispositivi contemporaneamente. </LI> </OL> <P>Problemi comuni : <P> <OL> <LI> Ci sono errori inattesi con schede 154xC o 154xCF, <A NAME="154-1"></A> Gli esemplari più vecchi delle schede 154xC hanno un alto grado di deviazione su uno dei segnali SCSI, che causa la riflessione del segnale quando vengono usati cavi di impedenza sbagliata. <P>Le schede più recenti non sono molto migliori, ed hanno anche una estrema sensibilità al tipo dei cavi e dei terminatori. <P>Vedi anche Problemi Comuni <A HREF="#154-2">#2</A> e <A HREF="#154-3">#3</A> e <A HREF="#CommonProblems">Problemi comuni</A>, <A HREF="SCSI-HOWTO-2.html#Flakiness">Malfunzionamento generale</A>. <P> </LI> <LI> Ci sono errori inattesi con schede 154xC o 154x, con collegati dispositivi sia interni che esterni. <A NAME="154-2"></A> Si tratta probabilmente di un problema di terminazione. Per poter disattivare via software la terminazione dell'adattatore host, dovete spegnere lo switch 1. Vedi anche Problemi Comuni <A HREF="#154-1">#1</A> e <A HREF="#154-3">#3</A> e <A HREF="#CommonProblems">Problemi comuni</A>, <A HREF="SCSI-HOWTO-2.html#Flakiness">Malfunzionamento generale</A>. </LI> <LI> Il sottosistema SCSI si blocca completamente. <A NAME="154-3"></A> Ci sono casi in cui i bloccaggi sembrano avvenire quando più dispositivi sono in funzione contemporaneamente. In questo caso, potete tentare di mettervi in contatto con il produttore dei dispositivi e vedere se sono disponibili aggiornamenti firmware in grado di correggere il problema. Come ultima risorsa, potete modificare, in aha1542.h, AHA1542_MAILBOX in 1. Questa operazione vi limiterà effettivamente a un solo comando sul bus SCSI alla volta, e ciò potrebbe migliorare la situazione. Se avete sul bus lettori a nastro o cdrom lenti, potrebbe essere una soluzione non pratica. Vedi anche Problemi Comuni <A HREF="#154-1">#1</A> e <A HREF="#154-2">#2</A> e <A HREF="#CommonProblems">Problemi comuni</A>, <A HREF="SCSI-HOWTO-2.html#SCSISysLockups">Problemi comuni : Blocco del sistema SCSI</A>. </LI> <LI> Un messaggio "Interrupt received, but no mail" viene stampato al bootup e i vostri dispositivi SCSI non vengono rilevati. Disattivate le opzioni BIOS per supportare la mappatura estesa per dischi > 1G per più di 2 drive, e per l'autoscanning del bus. Oppure, aggiornatevi a Linux .99.14k o a una versione più recente. </LI> <LI> Se capitano, sulla schede di revisione 'C', un infinità di errori di timeout, potreste dovere entrare nel programma di setup Adaptec e attivare ``<EM>synchronous negotiation</EM>'' (negoziazione sincrona). </LI> <LI> Linux 1.2.x dà il messaggio Unable to determine Adaptec DMA priority. Disabling board. Questo è dovuto a un conflitto su alcuni sistemi con il driver BusLogic obsoleto. O ricompilate il vostro kernel senza, oppure date al driver BusLogic un opzione di linea di comando che dice di guardare da qualche altra parte rispetto a dove è configurato il vostro controller. Ad esempio, se avete una scheda Adaptec alla porta 0x334, e nulla alla 0x330, usate un'opzione di linea di comando come: <BLOCKQUOTE><CODE> <PRE> buslogic=0x330 </PRE> </CODE></BLOCKQUOTE> </LI> <LI> Il sistema si blocca con un accesso simultaneo a più dispositivi su un 1542C o 1540C e con sconnessione attiva. Alcune revisioni del firmware Adaptec hanno dei bug. L'aggiornamento al BIOS v2.11 risolve significativamente questi problemi. </LI> </OL> <P> <H2><A NAME="ss5.5">5.5 Adaptec 174x</A> </H2> <P> <P>Configurazioni supportate <P> <BLOCKQUOTE><CODE> <PRE> Slot : 1-8 Porte : non applicabile: è una scheda EISA IRQ : 9, 10, 11, 12, 14, 15 Canali DMA : non applicabile: è una scheda EISA IO : port mapped, bus master </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento: <P> <BLOCKQUOTE><CODE> <PRE> funziona con tutte le configurazioni supportate. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> nessuna. </PRE> </CODE></BLOCKQUOTE> <P>Note: <OL> <LI> La produzione di questa scheda è stata interrotta da Adaptec.</LI> </OL> <P>Problemi comuni : <OL> <LI> Se il driver Adaptec 1740 stampa il messaggio "aha1740: Board detected, but EBCNTRL = %x, so disabled it." <P>la vostra scheda è stata disattivata perché non stava funzionando in modalità enhanced. Schede che funzionano in una modalità standard 1542 non sono supportate. </LI> </OL> <P> <H2><A NAME="ss5.6">5.6 Adaptec 274x, 284x (Standard) 294x (ALPHA)</A> </H2> <P> <P>Una versione più recente che supporta anch'essa le schede Adaptec 294x è disponibile presso: <P> <BLOCKQUOTE><CODE> <PRE> ftp://ftp.ims.com/pub/Linux/aic7xxx </PRE> </CODE></BLOCKQUOTE> <P>Configurazioni supportate : <P> <BLOCKQUOTE><CODE> <PRE> 274x 284x 294x Slot EISA : 1-12 N/A N/A Porte : N/A TUTTE TUTTE IRQ : TUTTI TUTTI TUTTI Canali DMA : N/A TUTTI N/A IO : port mapped, bus master </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P>linea di comando kernel: <P> <BLOCKQUOTE><CODE> <PRE> aha274x=extended (per forzare il mapping esteso) </PRE> </CODE></BLOCKQUOTE> <P> <P>Note: <OL> <LI> Il BIOS DEVE essere attivato.</LI> <LI> Il canale B su schede 2742AT è ignorato.</LI> <LI> CONFIG_PCI deve essere settato se state usando una scheda PCI </LI> </OL> <P> <H2><A NAME="ss5.7">5.7 Always IN2000 (Standard)</A> </H2> <P> <P>Configurazioni supportate : <P> <BLOCKQUOTE><CODE> <PRE> Porte : 0x100, 0x110, 0x200, 0x220 IRQ : 10, 11, 14, 15 DMA : non usato IO : port mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> BIOS non richiesto. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> nessuna. </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni : <P> <OL> <LI>Ci sono problemi noti in sistemi con drive IDE e con lo swapping.</LI> </OL> <P> <H2><A NAME="BuslogicMulti"></A> <A NAME="ss5.8">5.8 Adattatori Host BusLogic MultiMaster </A> </H2> <P> <P>(questa sezione Copyright 1995 di Leonard N. Zubkoff <lnz@dandelion.com>) (vedete README.BusLogic per ulteriori e più complete informazioni sui driver BusLogic) <P> <PRE> Driver SCSI BusLogic MultiMaster per Linux Versione 1.2.2 per Linux 1.2.13 Versione 1.3.2 per 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 Aprile 1996 Leonard N. Zubkoff Dandelion Digital lnz@dandelion.com BusLogic, Inc. progetta e produce una serie di adattatori host SCSI ad alte prestazioni che condividono una interfaccia di programmazione comune su varie architetture di bus grazie alla loro tecnologia MultiMaster ASIC. Questo driver supporta tutti gli adattatori host BusLogic MultiMaster attuali, e dovrebbe supportare ogni tipo di progetto MultiMaster futuro con piccole modifiche. Gli adattatori basati sulla nuova architettura FlashPoint non sono supportati da questo driver; consultate il file README.FlashPoint per informazioni a proposito di un programma di aggiornamento per gli utenti di Linux dal FlashPoint LT, non supportato, al BT-948, supportato. I miei principali obiettivi nello scrivere questo driver BusLogic completamente nuovo sono quelli di sfruttare la piena potenzialità di cui sono capaci gli adattatori host BusLogic SCSI e le moderne periferiche SCSI, e di fornire un driver altamente robusto su cui si può contare per applicazioni critiche con alte prestazioni. Tutte le caratteristiche principali di performance e di correzione degli errori possono essere configurate dalla linea dei comandi kernel di Linux, permettendo così installazioni personalizzate per regolare le prestazioni e il recupero degli errori sulle proprie necessità. BusLogic è stata una eccellente compagnia con cui lavorare e consiglio caldamente i loro prodotti alla comunità Linux. Nel novembre del 1995 mi è stata offerta l'opportunità di divenire un beta tester per il loro ultimo prodotto MultiMaster, l'adattatore host SCSI BT-948 PCI Ultra, e poi nuovamente per l'adattatore SCSI BT-958 PCI Wide Ultra nel gennaio 1996. Tutto ciò si rivelò benefico per entrambi, poiché BusLogic raggiunse un grado e una tipologia di testing che il loro stesso gruppo di testing non può raggiungere facilmente, e la comunità Linux ha a disposizione adattatori host di alta qualità che sono stati ben testati con Linux prima ancora di essere immessi sul mercato. Questo rapporto ha inoltre dato a me la possibilità di interagire direttamente con il loro staff tecnico, di comprendere di più a proposito della lavorazione interna sui loro prodotti, e in cambio di insegnare loro le necessità e le potenzialità della comunità Linux. Il loro interesse e supporto è apprezzato enormemente. A differenza di altri venditori, se vi mettete in contatto con il Supporto Tecnico BusLogic per un problema, e state eseguendo Linux, non vi diranno che il vostro uso del prodotto non è supportato. La loro ultimissima produzione di marketing afferma infatti: "gli adattatori host BusLogic SCSI sono compatibili con tutti i maggiori sistemi operativi compresi: ... Linux ...". BusLogic, Inc. si trova a 4151 Burton Drive, Santa Clara, California, 95054, USA e può essere raggiunta telefonicamente al 408/492-9090 o tramite FAX al 408/492-1542. BusLogic possiede un sito World Wide Web http://www.buslogic.com, un sito FTP a: ftp.buslogic.com, e una BBS a 408/492-1984. Il Supporto Tecnico BusLogic Technical può essere contattato via posta elettronica all'indirizzo techsup@buslogic.com, per telefono al 408/654-0760, o via FAX al 408/492-1542. Informazioni per contattare uffici in Europa e Giappone sono disponibili presso il sito web. ADATTATORI DI HOST SUPPORTATI L'elenco che segue comprende gli adattatori host BusLogic SCSI supportati alla data di questo documento. È consigliabile, per chiunque sia intenzionato a comprare un adattatore BusLogic SCSI non compreso in questo elenco, mettersi in contatto con l'autore prima dell'acquisto in modo da verificare se sarà o meno supportato. Serie "W": BT-948 PCI Ultra Fast Single-ended SCSI-2 BT-958 PCI Ultra Wide Single-ended SCSI-2 BT-958D PCI Ultra Wide Differential SCSI-2 Serie "C": BT-946C PCI Fast Single-ended SCSI-2 BT-956C PCI Fast Wide Single-ended SCSI-2 BT-956CD PCI Fast Wide Differential SCSI-2 BT-445C VLB Fast Single-ended SCSI-2 BT-747C EISA Fast Single-ended SCSI-2 BT-757C EISA Fast Wide Single-ended SCSI-2 BT-757CD EISA Fast Wide Differential SCSI-2 BT-545C ISA Fast Single-ended SCSI-2 BT-540CF ISA Fast Single-ended SCSI-2 Serie "S": BT-445S VLB Fast Single-ended SCSI-2 BT-747S EISA Fast Single-ended SCSI-2 BT-747D EISA Fast Differential SCSI-2 BT-757S EISA Fast Wide Single-ended SCSI-2 BT-757D EISA Fast Wide Differential SCSI-2 BT-545S ISA Fast Single-ended SCSI-2 BT-542D ISA Fast Differential SCSI-2 BT-742A EISA Single-ended SCSI-2 (742A revisione H) BT-542B ISA Single-ended SCSI-2 (542B revisione H) Serie "A": BT-742A EISA Single-ended SCSI-2 (742A revisioni A - G) BT-542B ISA Single-ended SCSI-2 (542B revisioni A - G) Gli adattatori di host AMI FastDisk che sono cloni BusLogic sono supportati da questo driver. BT-948/958/958D NOTE DI INSTALLAZIONE Gli Adattatori di Host BT-948/958/958D PCI Ultra SCSI, possiedono delle caratteristiche tali per cui potrebbero richiedere particolare attenzione durante l'installazione di Linux. o Assegnamento di una porta di I/O PCI Con la configurazione predefinita in fabbrica, il BT-948/958/958D riconoscerà solo le assegnazioni della porta I/O PCI fatte dal BIOS PCI della scheda madre. Il BT-948/958/958D non risponderà ad alcuna delle porte I/O ISA a cui precedentemente rispondevano gli adattatori host BusLogic SCSI. Questo driver supporta l'assegnamento della porta I/O PCI, perciò questa è la configurazione preferita. Comunque, se per qualche ragione si deve usare il driver obsoleto BusLogic, come ad esempio per una distribuzione Linux che non usa ancora questo driver nell'esecuzione del boot del kernel, BusLogic ha fornito una opzione di configurazione AutoSCSI per attivare una porta I/O legacy ISA compatibile. Per attivare questa opzione di compatibilità all'indietro, invocate l'utility AutoSCSI tramite Ctrl-B all'accensione (startup) del sistema e selezionate "Adapter Configuration", "View/Modify Configuration", e poi cambiate l'impostazione di "ISA Compatible Port" da "Disable" a "Primary" o "Alternate". Una volta che questo driver sia stato installato, l'opzione "ISA Compatible Port" dovrebbe essere rimessa a "Disable", in modo tale da evitare possibili conflitti futuri di porta I/O. Anche i più vecchi BT-946C/956C/956CD possiedono questa opzione di configurazione, ma il l'impostazione predefinita in fabbrica è "Primary". o Ordine di scansione degli slot PCI In sistemi con più adattatori host BusLogic PCI, l'ordine secondo cui gli slots PCI sono scanditi potrebbe apparire rovesciato con BT-948/958/958D se comparato con il BT-946C/956C/956CD. Perché il boot da un disco SCSI funzioni correttamente, è necessario che il BIOS dell'adattatore host BIOS e il kernel siano d'accordo su quale disco sia il dispositivo di boot, il che richiede che siano in grado di riconoscere nello stesso ordine gli adattatori host PCI. La scheda madre PCI BIOS fornisce un metodo standard per enumerare gli adattatori host PCI, che è usato dal kernel di Linux. Alcune implementazioni PCI BIOS enumerano gli slot PCI secondo il numero crescente del bus e del dispositivo, mentre altri lo fanno nella direzione opposta. Sfortunatamente Microsoft ha deciso che Windows 95 debba enumerare gli slot PCI in ordine crescente rispetto ai numeri del bus e dei dispositivi senza tener conto della enumerazione del PCI BIOS, e che il loro schema debba essere supportato dall'adattatore di host BIOS per ricevere la certificazione di Windows 95. Quindi i settaggi della factory default del BT-948/958/958D enumerano gli adattatori di host secondo i numeri crescenti dei bus e dei dispositivi. Per disattivare questa funzione, invocate la utility AutoSCSI, tramite via Ctrl-B all'accensione del sistema e selezionate "Adapter Configuration", "View/Modify Configuration", schiacciate Ctrl-F10 e poi disattivate l'opzione "Use Bus And Device # For PCI Scanning Seq." Questo driver interrogherà il settaggio dell'opzione PCI Scanning Sequence in modo da riconoscere gli adattatori di host nello stesso ordine in cui sono enumerati dal BIOS dell'adattatore host. MAILING LIST DI ANNUNCI BUSLOGIC La mailing list di annunci della BusLogic costituisce un forum per informare gli utenti Linux di uscite sul mercato di nuovi driver e di altri annunci a proposito dei supporti Linux per gli adattatori di host BusLogic SCSI. Per iscriversi alla lista, inviate un messaggio a "BusLogic-announce-request@dandelion.com" con la riga "subscribe" nel testo. </PRE> <P> <H2><A NAME="ss5.9">5.9 Adattatori Host BusLogic FlashPoint</A> </H2> <P> <P>(questa sezione Copyright 1995 by Leonard N. Zubkoff <lnz@dandelion.com>) <P> <PRE> Non ci sono driver Linux disponibili per le FlashPoint LT/DL/LW (BT-930/932/950) e non è chiaro quando e se mai ce ne saranno. Le schede FlashPoint hanno un'architettura differente rispetto alle schede MultiMaster e non hanno nessuna CPU, solo un motore sequenziale SCSI. Sono commercializzati come un prodotto per workstation desktop, e non sono particolarmente adatti per un sistema operativo multitasking di alte prestazioni come Linux. Le MultiMaster BT-948/958 hanno una CPU, e l'interfaccia di programmazione a ``cassetta della posta'' permette parallelismi e pipeline tra il sistema operativo e l'adattatore host, laddove le schede FlashPoint richiedono frequenti interventi della CPU dell'adattatore. Anche quando la latenza degli interrupt cresce in un sistema multitasking sotto forte carico, la BT-948/958 dovrebbe mantenere delle eccellenti performance, mentre la performance della FlashPoint tende a calare piuttosto rapidamente. Inoltre, il firmware sulla BT-948/958 ha la capacità di interagire propriamente a basso livello con il bus SCSI, mentre con un motore sequenziale è il driver Linux a doversi far carico di queste interazioni, e spesso impiega un sacco di tempo per riuscire a portare a termine il proprio lavoro. Data la differenza di prezzo piuttosto bassa fra questi prodotti, le BT-948 o BT-958 sono certamente la scelta migliore per Linux. (Inizio Citazione) ANNUNCIO Programma di upgrade BusLogic FlashPoint/BT-948 1 Febbraio 1996 Sin dalla sua introduzione l'ottobre scorso, l'uso della BusLogic FlashPoint LT ha causato problemi ai membri della comunità Linux, poiché nessun driver Linux è stato disponibile per questo nuovo prodotto Ultra SCSI. Nonostante sia ufficialmente considerato un prodotto per desktop workstation, e pur non essendo particolarmente adatto per un sistema operativo multitasking ad alte prestazioni come Linux, la FlashPoint LT è stata consigliata dai rivenditori di sistemi per computer come l'ultima novità, ed è stata venduta perfino in molti dei loro sistemi high end, al posto dei meno recenti prodotti MultiMaster. Questo ha causato problemi a molte persone che hanno inavvertitamente comprato un sistema aspettandosi che tutti gli Adattatori host BusLogic SCSI fossero supportati da Linux, per poi scoprire che FlashPoint non è supportato e non lo sarebbe stato per un certo periodo, se non per sempre. Dopo che questo problema è stato individuato, BusLogic ha contattato i propri principali clienti OEM per assicurarsi che le schede BT-946C/956C MultiMaster fossero comunque ancora rese disponibili, e che gli utenti di Linux che avessero per errore ordinato dei sistemi con le FlashPoint potessero essere messi in condizione di aggiornarle alle BT-946C. Questo ha aiutato molti acquirenti di nuovi sistemi, ma è stata solo una soluzione parziale al problema generale del supporto per le FlashPoint per gli utenti di Linux. Non è servito, infatti, ad aiutare le persone che inizialmente avevano acquistato una FlashPoint per un sistema operativo supportato, e che poi avevano deciso di usare Linux, o per coloro i quali avevano comperato una FlashPoint LT, convinti che fosse supportata, e non sono stati in grado di restituirla. A metà dicembre, ho chiesto di incontrare il senior management di BusLogic per discutere a proposito di Linux e del supporto software free per le FlashPoint. Voci a proposito di una scarsa cura nei confronti della comunità Linux da parte di BusLogic erano di pubblico dominio, e pensavo che la cosa migliore fosse parlare direttamente di questi argomenti. Inviai una email una sera dopo le 23 e l'incontro ebbe luogo il pomeriggio seguente. Sfortunatamente gli ingranaggi delle macchine corporative si muovono lentamente, specialmente quando una compagnia sta per essere acquisita, e quindi c'è voluto fino a ora perché tutti i dettagli venissero determinati e venisse fatto un documento pubblico. BusLogic non è pronta per ora a rilasciare le informazioni necessarie perché terzi possano scrivere driver per le FlashPoint. Gli unici driver per FlashPoint esistenti sono stati scritti direttamente da BusLogic Engineering, e non c'è una documentazione FlashPoint sufficientemente dettagliata per consentire a sviluppatori esterni di scrivere un driver senza assistenza. Mentre qualcuno alla BusLogic preferirebbe non divulgare affatto dettagli sull'architettura delle FlashPoint, la discussione non ha portato in nessuna direzione. In ogni caso, anche se fosse disponibile oggi della documentazione ci vorrebbe un po' di tempo prima che un driver utilizzabile venisse scritto, specialmente considerando il fatto che non sono convinto che lo sforzo richiesto valga la pena di essere compiuto. Comunque, BusLogic mantiene l'impegno di fornire soluzioni SCSI ad alte prestazioni per la comunità Linux, e non vuole che qualcuno non sia in grado di eseguire Linux perché possieda una Flashpoint LT. Perciò BusLogic ha messo in atto un programma diretto di aggiornamento per consentire a qualsiasi utente Linux in tutto il mondo di permutare la loro FlashPoint LT con una nuovo BT-948 MultiMaster PCI Ultra SCSI Host Adapter. Il BT-948 è il successore Ultra SCSI del BT-946C e ha tutte le migliori caratteristiche sia del BT-946C che della FlashPoint LT, compresa la terminazione intelligente e una flash PROM per facili aggiornamenti del firmware, ed è ovviamente compatibile con l'attuale driver Linux. Il prezzo per questo aggiornamento è stato fissato in 45 dollari americani, e il programma di aggiornamento verrà amministrato dal Supporto Tecnico BusLogic, che può essere raggiunto in email all'indirizzo techsup@BusLogic.com, e telefonicamente al +1 408 654-0760, oppure via fax al +1 408 492-1542. Ero un beta tester per la BT-948 e le versioni 1.2.1 e 1.3.1 del mio driver BusLogic includono già il supporto per la BT-948. Un migliore supporto per le schede Ultra SCSI MultiMaster verrà aggiunto in una versione successiva. Come risultato di questo processo cooperativo di test, sono stati individuati e corretti numerosi errori nel firmware (accertatevi di avere la versione 5.05R o più recente del firmware). Il mio sistema di test Linux, pesantemente caricato, ha fornito un ambiente ideale per testare i processi di recupero dagli errori che sono molto più raramente esercitati nei sistemi produttivi, ma che sono cruciali per l'equilibrio complessivo del sistema. È stato particolarmente utile essere in grado di lavorare direttamente con il loro ingegnere firmware per mostrare i problemi sotto il controllo dell'ambiente di debug del firmware; ne è passato di tempo dall'ultima volta in cui ho lavorato sul firmware per un sistema embedded. Attualmente sto lavorando ad alcuni test di prestazioni e mi aspetto di avere dei dati da riportare fra non molto. BusLogic mi ha chiesto di fare questo annuncio poiché un larga parte delle domande che riguardano il supporto per la FlashPoint è stata inviata o a me per email o è apparsa nei newsgroup di Linux di cui faccio parte. Per sintetizzare, BusLogic sta offrendo agli utenti di Linux un aggiornamento dalla FlashPoint LT (BT-930), non supportata, alla BT-948, supportata, per 45$. Contattate il Supporto Tecnico BusLogic presso: techsup@BusLogic.com o +1 408 654-0760 per approfittare della loro offerta. Leonard N. Zubkoff lnz@dandelion.com (Fine citazione) </PRE> <P> <P> <H2><A NAME="ss5.10">5.10 EATA: DPT SmartCache, SmartCache Plus, SmartCache III, Smart-Cache IV e SmartRAID (Standard)</A> </H2> <P> <P>Schede supportate: tutte quelle che supportano il protocollo EATA-DMA. <P>Tra di esse ci sono: <P> <PRE> la famiglia DPT Smartcache (Plus): PM2011 ISA Fast Single-ended SCSI-2 PM2012B EISA Fast Single-ended SCSI-2 la famiglia DPT Smartcache III: PM2021 ISA Fast Single-ended SCSI-2 PM2021W ISA Wide Single-ended SCSI-2 PM2022 EISA Fast Single-ended SCSI-2 PM2022W EISA Wide Single-ended SCSI-2 PM2024 PCI Fast Single-ended SCSI-2 PM2024W PCI Wide Single-ended SCSI-2 PM2122 EISA Fast Single-ended SCSI-2 PM2122W EISA Wide Single-ended SCSI-2 PM2124 PCI Fast Single-ended SCSI-2 PM2124W PCI Wide Single-ended SCSI-2 PM2322 EISA Fast Single-ended SCSI-2 PM2322W EISA Wide Single-ended SCSI-2 la famiglia DPT Smartcache VI: PM2041W ISA Wide Single-ended SCSI-2 PM2041UW ISA Ultra Wide Single-ended SCSI-2 PM2042W EISA Wide Single-ended SCSI-2 PM2042UW EISA Ultra Wide Single-ended SCSI-2 PM2044W PCI Wide Single-ended SCSI-2 PM2044UW PCI Ultra Wide Single-ended SCSI-2 PM2142W EISA Wide Single-ended SCSI-2 PM2142UW EISA Ultra Wide Single-ended SCSI-2 PM2144W PCI Wide Single-ended SCSI-2 PM2144UW PCI Ultra Wide Single-ended SCSI-2 PM2322W EISA Wide Single-ended SCSI-2 PM2322UW EISA Ultra Wide Single-ended SCSI-2 la famiglia DPT SmartRAID: PM3021 ISA Fast Single-ended SCSI-2 PM3021W ISA Wide Single-ended SCSI-2 PM3122 EISA Fast Single-ended SCSI-2 PM3122W EISA Wide Single-ended SCSI-2 PM3222 EISA Fast Single-ended SCSI-2 PM3222W EISA Wide Single-ended SCSI-2 PM3224 PCI Fast Single-ended SCSI-2 PM3224W PCI Wide Single-ended SCSI-2 PM3334W PCI Wide Single-ended SCSI-2 PM3334UW PCI Ultra Wide Single-ended SCSI-2 </PRE> <P>anche versioni differenti dei controller sopraindicati. <P>E alcuni controller da: <P>NEC, AT&T, SNI, AST, Olivetti, Alphatronix. <P>Configurazioni supportate <BLOCKQUOTE><CODE> <PRE> Slot : TUTTI Porte : TUTTE IRQ : TUTTI (level e edge triggered) Canali DMA : ISA: TUTTI, EISA/PCI: non applicabile IO : port mapped, bus master Canali SCSI : TUTTI </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> Funziona con tutte le configurazioni supportate </PRE> </CODE></BLOCKQUOTE> <P>L'ultima versione del driver EATA-DMA è disponibile su: <P> <BLOCKQUOTE><CODE> <PRE> ftp.i-Connect.Net:/pub/Local/EATA/ </PRE> </CODE></BLOCKQUOTE> <P>Mailing list: <P>La Mailing List EATA fornisce un forum agli utenti Linux del driver EATA-DMA e EATA-PIO per discussioni e annunci di nuove uscite sul mercato e altro. Per abbonarvi alla mailing list, inviate un messaggio a "linux-eata-request@i-connect.net" con la scritta "subscribe" nel corpo del messaggio. <P>Supporto /proc/scsi: <P>Per ottenere statistiche sui comandi, eseguite le seguenti procedure: echo "eata_dma latency" >/proc/scsi/eata_dma/<num_driver> e per disattivarlo: echo "eata_dma nolatency" >/proc/scsi/eata_dma/<num_driver> <P>Problemi comuni <P> <OL> <LI> Slackware non riesce a trovare il controller. <P>Soluzione: usate uno dei dischi boot ascsi*. </LI> <LI> Nei vecchi kernel (<v1.3) il driver IDE può rilevare l'interfaccia ST-506 delle schede EATA. <OL> <LI> Ci sarà qualcosa di simile a uno dei seguenti due esempi: <BLOCKQUOTE><CODE> <PRE> hd.c: ST-506 interface disk with more than 16 heads detected, probably due to non-standard sector translation. Giving up. (disk %d: cyl=%d, sect=63, head=64) </PRE> </CODE></BLOCKQUOTE> <BLOCKQUOTE><CODE> <PRE> hdc: probing with STATUS instead of ALTSTATUS hdc: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0 hdc: cannot handle disk with 0 physical heads hdd: probing with STATUS instead of ALTSTATUS hdd: MP0242 A, 0MB w/128KB Cache, CHS=0/0/0 hdd: cannot handle disk with 0 physical heads </PRE> </CODE></BLOCKQUOTE> Se il driver IDE si trova in difficoltà a causa di ciò, ad esempio non riuscite ad accedere al vostro (vero) hardware IDE, cambiate la porta IO e/o l'IRQ della scheda EATA. </LI> <LI> Se il vostro driver trova hardware che può controllare, ad esempio dischi fissi con una capacità <=504MB, allocherà la porta IO e l'IRQ in modo che il driver eata non possa utilizzarli. In questo caso cambiate anche la porta IO e l'IRQ (diverso da 14,15).</LI> </OL> </LI> <LI> Alcune vecchie schede SK2011 hanno un firmware malfunzionante. Contattate l'ufficio di assistenza della DPT per un aggiornamento.</LI> </OL> <P>Nota: <OL> <LI> CONFIG_PCI deve essere settata se state usando una scheda PCI.</LI> </OL> <P> <H2><A NAME="ss5.11">5.11 Future Domain 16x0 con chip TMC-1800, TMC-18C30, TMC-18C50, o TMC-36C70 </A> </H2> <P> <P>Configurazioni supportate: <P> <BLOCKQUOTE><CODE> <PRE> BIOS : 2.0, 3.0, 3.2, 3.4, 3.5 Indirizzi BIOS : 0xc8000, 0xca000, 0xce000, 0xde000 Porte : 0x140, 0x150, 0x160, 0x170 IRQ : 3, 5, 10, 11, 12, 14, 15 DMA : non usato IO : port mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento: <P> <BLOCKQUOTE><CODE> <PRE> Funziona con tutte le configurazioni supportate, richiede l'installazione di un BIOS. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <BLOCKQUOTE><CODE> <PRE> nessuna. </PRE> </CODE></BLOCKQUOTE> <P>Problemi di ``arretratezza'' che si risolvono aggiornando: <P> <OL> <LI> Le versioni più vecchie non supportano il chip TMC-18C50, e non funzioneranno con schede nuove.</LI> <LI> Le versioni più vecchie non conoscono le signature (<EM>firme</EM>) dei BIOS più recenti necessarie per l'autorilevamento.</LI> <LI> Le versioni precedenti a quella inclusa nel Linux 1.0.9 e 1.1.6 non supportano il nuovo chip SCSI o il BIOS 3.4</LI> </OL> <P>Note: <OL> <LI> il BIOS Future Domain spesso cerca dispositivi SCSI partendo dall'ID più alto fino a 0, nell'ordine inverso rispetto agli altri BIOS SCSI. sda sarà l'ultima "lettera di drive" (ad esempio D: piuttosto che C:). Potreste anche dover ``scavalcare'' il disktab per LILO. </LI> </OL> <P> <H2><A NAME="ss5.12">5.12 NCR5380 / T130B generico (Standard)</A> </H2> <P> <P>Configurazioni supportate e non supportate <P> <BLOCKQUOTE><CODE> <PRE> Porte : tutte IRQ : tutti Canali DMA : DMA non usato IO : port mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento: <BLOCKQUOTE><CODE> <PRE> non disponibile. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <BLOCKQUOTE><CODE> <PRE> A tempo di compilazione: Definite GENERIC_NCR5380_OVERRIDE come un vettore con porta, irq, dma, tipo di scheda - ad esempio #define GENERIC_NCR5380_OVERRIDE {{0x330, 5, DMA_NONE, BOARD_NCR5380}} per una scheda NCR5380 alla porta 330, IRQ 5. #define GENERIC_NCR5380_OVERRIDE {{0x350, 5, DMA_NONE, BOARD_NCR53C400}} per una T130B alla porta 0x350. Con versioni più vecchie del codice eliminate BOARD_*. Possono essere usati anche gli IRQ simbolici IRQ_NONE e IRQ_AUTO (nessun IRQ e IRQ rilevato automaticamente). </PRE> </CODE></BLOCKQUOTE> <P>linea di comandi kernel: <P> <BLOCKQUOTE><CODE> <PRE> ncr5380=porta,irq ncr5380=porta,irq,dma ncr53c400=porta,irq 255 può essere usato per nessun irq, 254 per l'autorilevamento dell'irq. </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni <P> <OL> <LI> Usando la scheda T130B con il vecchio (anteriore alla public release 6) driver generico NCR5380 che non supporta l'opzione della riga di comando ncr53c400. <P>I registri NCR5380 si trovano ad un offset di 8 dall'indirizzo di base. Quindi, se ad esempio il vostro indirizzo è 0x350, usate: <P> <BLOCKQUOTE><CODE> <PRE> ncr5380=0x358,254 </PRE> </CODE></BLOCKQUOTE> <P>sulla riga dei comandi kernel. </LI> </OL> <P>Problemi di ``arretratezza'' che si risolvono aggiornando: <OL> <LI> Il kernel si blocca durante l'accesso al disco con schede T130B o altre NCR53c400. <P>Le versioni anteriori alla public release 6 del driver Generic NCR5380 non supportano gli interrupt su queste schede. Aggiornate. </LI> </OL> <P>Note: <OL> <LI>il driver generico non supporta ancora DMA, e pseudo-DMA non è supportato nel driver generico. </LI> </OL> <P> <H2><A NAME="ss5.13">5.13 NCR53c8xx (Standard)</A> </H2> <P> <P>Configurazioni supportate e non supportate : <P> <BLOCKQUOTE><CODE> <PRE> Indirizzi di base : TUTTI IRQ : TUTTI canali DMA : non applicabile alle schede PCI IO : port mapped, busmastering </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> richiede il BIOS PCI, usa routine del BIOS PCI per cercare dispositivi e leggere lo spazio di configurazione </PRE> </CODE></BLOCKQUOTE> <P>Il driver usa per l'inizializzazione i valori pre programmati in alcuni registri, perciò deve essere installato un BIOS. <P>Problemi di ``arretratezza'' che si risolvono aggiornando: <P> <OL> <LI> Versioni più vecchie di Linux avevano un problema con lo swapping, vedete <A HREF="SCSI-HOWTO-6.html#SystemHangs">Dischi: il sistema si blocca durante lo swapping</A></LI> <LI> Le versioni più vecchie di Linux non riconoscevano schede '815 e '825.</LI> <LI> I kernel delle distribuzioni includono le versioni 4 o 5 del driver, che non supportano cose utili come ad esempio disconnessione/riconnessione (l'effetto più significativo di ciò è rappresentato dal bloccaggio di tutti i dispositivi SCSI successivo al tentativo di tendere/riavvolgere/spaziare i file su un nastro), adattatori per host multipli, e operazioni senza BIOS. <P>Il driver più recente è disponibile presso: <P> <BLOCKQUOTE><CODE> <PRE> ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/ncr53c810 </PRE> </CODE></BLOCKQUOTE> <P>Si tratta di una patch per kernel 1.2.10 e più recenti, anche se la prossima versione sarà esclusivamente per 1.3.x. Queste patch NON sono completamente pulite a causa di alcuni binari ELF e di altre patch che si trovavano nel mio albero dei sorgenti, e se non siete in grado di correggere manualmente i (quattro) problemi che dovreste incontrare, non dovreste usarle. Notate che è necessaria solo la patch più recente: non sono incrementali. <P>Se desiderate usare il driver NCR più recente con un kernel 1.3.x prima di allora, Harald Evensen <Harald.Evensen@pvv.unit.no> ha adattato le patch per il 1.3.x <P> <BLOCKQUOTE><CODE> <PRE> ftp://ftp.pvv.unit.no/pub/Linux/ALPHA/ncr </PRE> </CODE></BLOCKQUOTE> <P>Queste patch dovrebbero essere pulite. <P>Consultate tutti i README in queste directory. Dovreste anche abbonarvi alla mailing list NCR se siete interessati a eseguire il codice ALPHA, poiché alla lista vengono inviate spesso soluzioni temporanee per bug e annunci di prossime uscite. <P>Per iscrivervi inviate una mail a majordomo@colorado.edu con <P> <BLOCKQUOTE><CODE> <PRE> subscribe ncr53c810 </PRE> </CODE></BLOCKQUOTE> <P>nel testo. Potete annullare l'iscrizione inviando una mail allo stesso indirizzo e mettendo <P> <BLOCKQUOTE><CODE> <PRE> unsubscribe ncr53c810 </PRE> </CODE></BLOCKQUOTE> <P>nel testo. </LI> </OL> <P>Problemi comuni <P> <OL> <LI> Molte persone hanno avuto problemi con il chip che funzionava bene sotto DOS, ma poi aveva problemi sotto Linux con timeout sul test 1 causati da un interrupt perso. <A NAME="NCRCommonProblem1"></A> <P>Questo è spesso dovuto al fatto che l'IRQ è impostato in modo diverso sul jumper hardware IRQ di uno slot o dispositivo della mainboard e nel setup CMOS. CONTROLLATE DUE VOLTE CHE: <UL> <LI> L'IRQ che state usando venga usato solamente dal vostro chip onboard NCR, o dallo slot in cui è installata una scheda NCR.</LI> <LI> Qualsiasi configurazione dei ponticelli della mainboard che selezioni l'IRQ per il chip onboard o lo slot corrisponda alle impostazioni CMOS.</LI> <LI> Alcune schede principali PCI hanno una funzione di auto assegnamento, che non funzionerà. </LI> </UL> <P>Potrebbe anche essere dovuto al fatto che INTB, INTC, o INTD sono selezionati su una scheda PCI in un sistema che supporta solamente INTA. Se state usando una scheda NCR che ha ponticelli per selezionare tra linee di interrupt PCI, accertatevi che stiate usando INTA. <P>Infine, PCI dovrebbe usare interrupt ``level-sensitive'' piuttosto che ``edge triggered''. Controllate che sulla vostra scheda siano impostati gli interrupt ``level-sensitive'', e se questo fallisce, provate ``edge triggered'' perché il vostro sistema potrebbe avere problemi. <P>Questo problema è frequente con schede madri Viglen, dove i settaggi dei jumper dell'IRQ della scheda principale non sono quelli documentati nel manuale. Per quello che so quello che viene chiamato IRQ5 è in realtà IRQ9, il vostro caso può essere diverso. <P> </LI> <LI> Blocco/ altri problemi nascono quando si usa una scheda video S3 928, o Tseng ET4000W32 PCI. Ci sono errori hardware in almeno alcune delle revisioni di questi chip. Non usateli. </LI> <LI> Un messaggio al boot up vi indica che la mappatura I/O è stata disattivata a causa del fatto che i bit 0..1 dell'indirizzo di base 0 hanno indicato una mappatura non I/O. Questo è dovuto a un errore di BIOS in qualche macchina che fa sì che i 16 bit più significativi e meno significativi dei registri di configurazione siano scambiati fra loro in lettura. </LI> <LI> Alcuni sistemi hanno problemi se la PCI scrive "posta", o se sono attivati CPU-> PCI buffering. Se avete problemi, disattivate queste opzioni. </LI> <LI> Alcuni sistemi con il software NCR SDMS su ROM BIOS e nel sistema BIOS non sono in grado di eseguire il boot su DOS. Disattivando l'immagine dovrebbe risolvere questo problema. </LI> <LI> Se avete il messaggio: <BLOCKQUOTE><CODE> <PRE> "scsi%d: IRQ0 not free, detaching" </PRE> </CODE></BLOCKQUOTE> o <BLOCKQUOTE><CODE> <PRE> "scsi%d: IRQ255 not free, detaching" </PRE> </CODE></BLOCKQUOTE> Il chip NCR aveva tutti i bit del registro di configurazione PCI posti a 0 o 1. O avete problemi di configurazione (vedete <A HREF="#NCRCommonProblem1">Problemi comuni 1</A>), oppure avete una scheda principale BIOS difettosa. Come alternativa, potreste editare drivers/scsi/ncr53c7,8xx.c, e cambiare pci_init() in modo da avere: <BLOCKQUOTE><CODE> <PRE> irq = il_mio_irq; </PRE> </CODE></BLOCKQUOTE> prima di <BLOCKQUOTE><CODE> <PRE> return normal_init (tpnt, board, chip, (int) base, (int) io_port, (int) irq, DMA_NONE, 1, bus, device_fn, options); </PRE> </CODE></BLOCKQUOTE> </LI> <LI> Alcuni sistemi hanno chip BIOS difettosi. Non segnalate alcun bug finché non siete sicuri di avere la ROM più recente. </LI> <LI> Le impostazioni della linea di comando ncr53c810=xxx ecc. non funzionano. Nei kernel già pronti delle distribuzioni questo accade perché i loro punti di ingresso non sono inclusi in init/main.c, il che è piuttosto intenzionale: Il driver esegue sempre l'autorilevamento per una scheda pure se sono state usate particolari impostazioni manuali in una linea di comando, perciò se si tenta di evitare l'autorilevamento quando la scheda effettivamente si è mostrata alle routine di configurazione PCI, si hanno dei grossi problemi. L'unica ragione che renderebbe necessario scavalcare l'autorilevamento sarebbe se l'hardware PCI o il BIOS avessero dei problemi, nel qual caso però certe routine di correzione di errori non funzionerebbero, rendendo tale ``scavalcamento'' piuttosto inutile. Infine, quasi tutte le persone che _pensano_ di aver bisogno di impostazioni particolari della linea di comando lo sono perché ricevono dal driver dei messaggi di errore riguardanti la configurazione o qualche altra cosa. Se il driver afferma che avete un problema di configurazione, avete un sistema malfunzionante o un problema di configurazione e nessun tipo di impostazione particolare sarà in grado di risolvere questi problemi. Se qualcuno ha aggiunto i punti appropriati di entrata al init/main.c per consentire impostazioni nella linea di comando che evitino l'autorilevamento, tenete presente che si tratta di modifiche totalmente non supportate e potrebbero non funzionare. </LI> <LI> Alcune schede NCR (principalmente Nexstor) che non usano un BIOS NCR hanno errori di timeout. Alcune di queste ROM gestiscono trasferimenti sincroni, negoziano per trasferimenti sincroni all'accensione, e lasciano i drive in uno stato ignoto. Quando il driver Linux NCR tenta di parlare loro, riceve timeout e non riesce a riprendersi perché non è in grado di eseguire un reset del bus o di rinegoziare. Se vi imbattete in questo problema, potete o disattivare i trasferimenti sincroni nel programma di setup della scheda, oppure aggiorarvi ad una versione ALPHA più recente del driver NCR che eseguirà la negoziazione sincrona. </LI> <LI> Le schede Tyan S1365 '825 hanno problemi di timeout, specialmente quando le disconnessioni sono attivate. La documentazione di alcune di queste schede dà informazioni scambiate sulla posizione dei jumper, cosicché la terminazione è accesa quando non serve, ed è spenta quando serve. Provate a invertire la posizione dei jumper.</LI> </OL> <P>Note: <OL> <LI> CONFIG_PCI deve essere settato</LI> </OL> <P> <H2><A NAME="ss5.14">5.14 Seagate ST0x/Future Domain TMC-8xx/TMC-9xx (Standard)</A> </H2> <P> <P>Configurazioni supportate e non supportate <P> <BLOCKQUOTE><CODE> <PRE> Indirizzi di base : 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000 IRQ : 3, 5 Canali DMA : DMA non usato IO : memory mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> rileva solo l'indirizzo, IRQ è assunto uguale a 5, richiede il BIOS. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P>Tempo di compilazione : <BLOCKQUOTE><CODE> <PRE> Definite OVERRIDE uguale all'indirizzo base, CONTROLLER a FD o SEAGATE come è appropriato, e IRQ all'IRQ. </PRE> </CODE></BLOCKQUOTE> <P>linea di comando kernel <P> <BLOCKQUOTE><CODE> <PRE> st0x=indirizzo,irq o tmc8xx=indirizzo,irq (funziona solo per .99.13b e più recenti) </PRE> </CODE></BLOCKQUOTE> <P>Problemi di ``arretratezza'' che si risolvono aggiornando: <P> <OL> <LI> Versioni precedenti a quella nel kernel Linux .99.12 avevano problemi di handshaking con alcuni dispositivi lenti, e <P> questo è ciò che accade quando scrivete dati sul bus <P> <OL> <LI> Scrittura del byte nel registro dati, il contenuto del registro viene mandato al bus</LI> <LI> time_remaining = 12us</LI> <LI> aspetta mentre time_remaining > 0 e il segnale REQ è basso</LI> <LI> se time_remaining > 0, alza il segnale ACK</LI> <LI> aspetta mentre time_remaining > 0 e il segnale REQ è alto</LI> <LI> abbassa ACK</LI> </OL> <P>Ci si è imbattuti nel problema con i dispositivi lenti che eseguono i comandi mentre li leggono, in cui l'handshake REQ/ACK impiega oltre 12 us - il segnale REQ non assume il valore ``falso'' quando il driver se l'aspetta, quindi il driver finisce per mandare più byte di dati ad ogni impulso di REQ. <P> </LI> <LI> Con Linux .99.12, è stato introdotto un errore quando ho corretto il codice di arbitraggio, questo ha portato a selezioni fallite su alcuni sistemi. È stato corretto nel .99.13. </LI> </OL> <P>Problemi comuni <P> <OL> <LI> Ci sono errori di timeout quando Linux cerca di leggere la tavola delle partizioni o tenta di compiere altri accessi ai dischi. <P>La scheda viene venduta con un'impostazione adatta all'uso con MSDOS, quindi gli interrupt sono disattivati. Per attivare la gestione degli interrupt, usate sulla Seagate i jumper W3 (ST01) o JP3 (ST02) e chiudete il contatto sui pin F-G per selezionare l'IRQ 5. <P> </LI> <LI> Il driver non è in grado di gestire alcuni dispositivi, in particolare nastri e cdrom SCSI economici. La Seagate lega l'handshaking dei segnali REQ/ACK del bus SCSI ai segnali IO CHANNEL READY e (opzionalmente) 0WS del bus PCI. Sfortunatamente non dice quando il timer watchdog si esaurisce, e non c'è modo per sapere se il segnale REQ si è abbassato, e potrebbe finire con il vedere un singolo impulso REQ come impulsi multipli. Per risolvere tutto ciò si può usare un loop molto stretto per rilevare l'abbassamento del segnale REQ, con un timeout nel caso in cui non si riesca a cogliere la variazione del segnale a causa di un interrupt, ecc. Si otterrebbe però un peggioramento delle prestazioni, quindi non è il caso di applicare questo metodo a tutti i dispositivi SCSI; viene invece applicato solo su certi dispositivi usando per tali dispositivi il campo ``broken'' (rotto) del vettore scsi_devices. Se avete problemi, dovreste cercare di aggiungere il vostro dispositivo alla lista dei dispositivi per i quali ``broken'' non è resettato a zero (attualmente, solo i drive TENEX CD-ROM) </LI> <LI> Una scheda Future domain (esempi specifici includono la 840, 841, 880, and 881) non funziona. Alcune schede Future domain utilizzano la mappatura dei registri Seagate, e hanno i bit MSG e CD del registro di stato scambiati. Dovreste editare seagate.h, scambiando le definizioni di STAT_MSG e STAT_CD, e ricompilare il kernel con CONTROLLER definito a SEAGATE, un IRQ appropriato e specificare OVERRIDE. </LI> <LI> Quando cercate di partizionare il vostro drive con fdisk, ottenete dei messaggi di errore che indicano che HDIO_REQ o HDIO_GETGEO ioctl hanno fallito, o <PRE> You must set heads sectors and cylinders. You can do this from the extra functions menu. </PRE> (devi impostare il numero delle testine, dei settori e dei cilindri. Puoi farlo dal menu ``extra functions''). Vedi <A HREF="SCSI-HOWTO-6.html#DiskPartitioning">Partizionare i dischi</A>. </LI> <LI> Dopo aver specificato manualmente la geometria del drive, tentativi seguenti di leggere la tavola delle partizioni danno messaggi di errore a proposito di limiti della partizione non sui limiti di un cilindro, limiti fisici e logici non coincidenti ecc. Vedete <A HREF="SCSI-HOWTO-6.html#DiskPartitioning">Partizionare i dischi</A> </LI> <LI> Alcuni sistemi che funzionavano con kernel antecedenti .99.13 hanno problemi con versioni di Linux più recenti. Versioni più vecchie di Linux assegnavano i registri CONTROL e DATA in un ordine diverso da quello evidenziato nella documentazione Seagate, e questo ha causato malfunzionamenti in alcuni sistemi. Versioni più recenti eseguono l'assegnazione nella maniera corretta, ma questo dà problemi su altri sistemi. </LI> </OL> <P>Il codice in seagate.c è ora così: <P> <BLOCKQUOTE><CODE> <PRE> cli(); DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x8$ CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL | (reselect ? CMD_ATTN : 0); sti(); </PRE> </CODE></BLOCKQUOTE> <P>cambiando questo in: <P> <BLOCKQUOTE><CODE> <PRE> cli(); CONTROL = BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL | (reselect ? CMD_ATTN : 0); DATA = (unsigned char) ((1 << target) | (controller_type == SEAGATE ? 0x8$ sti(); </PRE> </CODE></BLOCKQUOTE> <P>potrebbe risolvere il vostro problema. <P>Definizioni: <P> <BLOCKQUOTE><CODE> <PRE> FAST o FAST32 userà trasferimenti alla cieca quando possibile ARBITRATE costringerà l'adattatore host a gestire il bus per ottenere una compatibilità SCSI-II migliore, piuttosto che stare solo ad aspettare il BUS FREE e poi eseguire i propri compiti. Dovrebbe consentire di dare un comando per ciascun Lun quando integrerò le modifiche nei sorgenti delle distribuzioni. SLOW_HANDSHAKE permetterà la compatibilità con dispositivi malfunzionanti che non svolgono l'handshake in maniera sufficientemente veloce (ad esempio, alcuni CD ROM) per il codice Seagate. SLOW_RATE=x, dove x è un numero vi lascerà specificare un tasso di trasferimento che verrà adottato nel caso l'handshake non funzionasse correttamente. </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss5.15">5.15 PAS16 SCSI (Standard)</A> </H2> <P> <P>Configurazioni supportate e non supportate <P> <BLOCKQUOTE><CODE> <PRE> Porte : 0x388, 0x384, 0x38x, 0x288 IRQ : 10, 12, 14, 15 IMPORTANTE : l'IRQ DEVE essere diverso dall'IRQ usato per la parte audio della scheda. DMA : non è usato per la parte SCSI della scheda IO : port mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento <P> <BLOCKQUOTE><CODE> <PRE> Non richiede BIOS. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> Tempo di compilazione : definite PAS16_OVERRIDE come un vettore contenente porta e irq. Ad esempio #define PAS16_OVERRIDE {{0x388, 10}} per una scheda alla porta 0x388, IRQ 10. </PRE> </CODE></BLOCKQUOTE> <P>linea di comando kernel <P> <BLOCKQUOTE><CODE> <PRE> pas16=porta,irq </PRE> </CODE></BLOCKQUOTE> <P>Definizioni: <P> <BLOCKQUOTE><CODE> <PRE> AUTOSENSE - se definito, REQUEST SENSE sarà automaticamente eseguito per i comandi che ritornano con uno stato CHECK CONDITION. PSEUDO_DMA - abilita lo PSEUDO-DMA hardware, che può dare un incremento nelle prestazioni di 3 o 4 volte. PARITY - abilita il controllo di parità. Non supportato. SCSI2 - abilita il supporto per lo "SCSI-II tagged queuing". Non testato. UNSAFE - lascia attivate le interruzioni durante i trasferimenti pseudo-DMA. Dovete usarlo solo se avete problemi di caratteri persi durante comunicazioni ad alta velocità, e, anche in questo caso, sarebbe bene che provaste a giocherellare un po' con transfersize. USLEEP - attiva il supporto per dispositivi che non disconnettono. Non testato. </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni <P> <OL> <LI> Timeout di comandi, interruzioni, ecc. <P>Dovreste installare i patch NCR5380 che ho messo sulla rete un po' di tempo fa, che dovrebbero essere integrati in qualche versione ALPHA futura. Questi patch risolvono dei problemi dei primi driver NCR5380, ed anche del supporto per dispositivi multipli su schede basate su NCR5380. <P>Se ciò non dovesse funzionare, dovreste disattivare l'opzione PSEUDO_DMA cambiando la riga #define PSEUDO_DMA in drivers/scsi/pas16.c a #undef PSEUDO_DMA. <P>Notate che quest'ultima operazione deve essere considerata come l'``ultima spiaggia'', poiché ci sarà un netto calo delle prestazioni. </LI> </OL> <P> <H2><A NAME="ss5.16">5.16 Trantor T128/T128F/T228 (Standard)</A> </H2> <P> <P>Configurazioni supportate e non supportate <P> <BLOCKQUOTE><CODE> <PRE> Indirizzi di base : 0xcc000, 00xc8000, 0xdc000, 0xd8000 IRQ : nessuno, 3, 5, 7 (tutte le schede) 10, 12, 14, 15 (solo T128F) DMA : non usato. IO : memory mapped </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> Funziona per tutte le configurazioni supportate, richiede il BIOS installato. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> Tempo di compilazione: definite T128_OVERRIDE come un vettore contenente indirizzo e irq. Ad esempio #define T128_OVERRIDE {{0xcc000, 5}} per una scheda all'indirizzo 0xcc000, IRQ 5. Possono essere usati gli IRQ simbolici IRQ_NONE e IRQ_AUTO. </PRE> </CODE></BLOCKQUOTE> <P>Linea di comando kernel : <P> <BLOCKQUOTE><CODE> <PRE> t128=indirizzo,irq Si può usare -1 per nessun irq, -2 per l'autorilevamento dell'irq. </PRE> </CODE></BLOCKQUOTE> <P>Definizioni: <P> <BLOCKQUOTE><CODE> <PRE> AUTOSENSE - se definito, REQUEST SENSE verrà eseguito in maniera automatica per i comandi che ritornano con uno stato CHECK CONDITION. PSEUDO_DMA - attiva lo PSEUDO-DMA hardware, dovrebbe fornire un aumento di prestazioni di 3 o 4 volte rispetto a polled I/O. PARITY - attiva il controllo di parità. Non supportato. SCSI2 - attiva il supporto per lo "SCSI-II tagged queuing". Non testato. UNSAFE - lascia attivati gli interrupt durante il trasferimento pseudo-DMA. Dovete usarlo solo se avete problemi di caratteri persi durante comunicazioni ad alta velocità, e, anche in questo caso, sarebbe bene che provaste a giocherellare un po' con transfersize. USLEEP - attiva il supporto per dispositivi che non disconnettono. Non testato. </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni <OL> <LI> Timeout di comandi, interruzioni ecc. Dovreste installare i patch NCR5380 che ho messo sulla rete un po' di tempo fa, che dovrebbero essere integrati in qualche versione ALPHA futura. Questi patch risolvono dei problemi dei primi driver NCR5380, ed anche del supporto per dispositivi multipli su schede basate su NCR5380. <P>Se ciò dovesse fallire, dovreste disattivare l'opzione PSEUDO_DMA cambiando la riga #define PSEUDO_DMA in drivers/scsi/pas16.c a #undef PSEUDO_DMA. <P>Notate che quest'ultima operazione deve essere considerata come l'``ultima spiaggia'', poiché ci sarà un netto calo delle prestazioni. </LI> </OL> <P> <H2><A NAME="ss5.17">5.17 Ultrastor 14f (ISA), 24f (EISA), 34f (VLB) (Standard)</A> </H2> <P> <P>Configurazioni supportate <P> <BLOCKQUOTE><CODE> <PRE> Porte : 0x130, 0x140, 0x210, 0x230, 0x240, 0x310, 0x330, 0x340 IRQ : 10, 11, 14, 15 canali DMA : 5, 6, 7 IO : port mapped, bus master </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento : <P> <BLOCKQUOTE><CODE> <PRE> non funziona per schede alla porta 0x310, BIOS non richiesto. </PRE> </CODE></BLOCKQUOTE> <P>Impostazioni manuali: <P> <BLOCKQUOTE><CODE> <PRE> solo a tempo di compilazione, definite PORT_OVERRIDE </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni <OL> <LI> L'indirizzo 0x310 non è supportato dal codice di autorilevamento, e potrebbe causare conflitti se il supporto di rete è installato. Usate un indirizzo diverso. </LI> <LI> Utilizzare un Ultrastor all'indirizzo 0x330 può causare un blocco del sistema quando i driver per le schede sonore stanno effettuando l'autorilevamento. Usate un indirizzo diverso. </LI> <LI> Vari altri driver eseguono rilevamenti in modo non sicuro a diversi indirizzi, se avete dei problemi con la ricerca o il sistema si blocca durante il boot, provate un indirizzo diverso. 0x340, indirizzo noto per funzionare, è consigliato. </LI> <LI> Linux non trova dispositivi SCSI, ma individua il vostro disco fisso SCSI su una scheda Ultrastor SCSI come un normale disco fisso, e il driver del disco fisso si rifiuta di supportarla. Notate che quando questo avviene, probabilmente riceverete anche un messaggio 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) Se questo è il caso la scheda Ultrastor è in modalità emulazione WD1003. Dovete: <OL> <LI> Ponete la scheda Ultrastor in modalità nativa. Questa è l'azione raccomandata, poiché il driver SCSI può essere nettamente più veloce del driver IDE, specialmente se avete installato le patch per lettura/scrittura clustered. Alcuni utenti hanno ottenuto oltre 2M/sec usando queste patch. Notate che questo sarà necessario se volete usare un'unità a dischi removibili o più di due dispositivi di disco fisso con la Ultrastor. </LI> <LI> Usate la seguente linea di comando kernel <BLOCKQUOTE><CODE> <PRE> hd=cylinders,heads,sectors </PRE> </CODE></BLOCKQUOTE> per scavalcare le impostazioni predefinite per poter eseguire il boot, tenendo il numero dei cilindri (<EM>cylinders</EM>) <= 2048, il numero delle testine (<EM>heads</EM>) <= 16, e il numero dei settori (<EM>sectors</EM>)<= 255 in modo che cylinders * heads * sectors sia lo stesso per entrambe le mappature. Dovete inoltre specificare manualmente la geometria del disco quando state eseguendo fdisk sotto Linux. Se non lo fate il risultato sarà la scrittura scorretta della tavola delle partizioni, che funzionerà sotto Linux ma non sotto MSDOS che legge dalla tavola la geometria del drive. Una volta che Linux è partito, potete evitare l'inconveniente di dover eseguire il boot manualmente: basta ricompilare il kernel con una macro HD_TYPE definita appropriatamente in include/linux/config.h.</LI> </OL> </LI> </OL> <P> <H2><A NAME="ss5.18">5.18 Western Digital 7000 (Standard)</A> </H2> <P> <P>Configurazioni supportate <P> <BLOCKQUOTE><CODE> <PRE> Indirizzi BIOS : 0xce000 Porte : 0x350 IRQ : 15 Canali DMA : 6 IO : port mapped, bus master </PRE> </CODE></BLOCKQUOTE> <P>Autorilevamento <P> <BLOCKQUOTE><CODE> <PRE> richiede il BIOS installato. </PRE> </CODE></BLOCKQUOTE> <P>Problemi comuni <P> <OL> <LI> Ci sono parecchie revisioni del chip e del firmware. In genere le schede di revisione 3 non funzionano, quelle di revisione 5 si, chip senza suffisso non funzionano, chip con un suffisso 'A' sì. </LI> <LI> La scheda supporta un paio di indirizzi BIOS che non compaiono nell'elenco degli indirizzi supportati. Se vi capita questa situazione, usate uno degli indirizzi supportati e inviate una segnalazione di bug come spiegato in <A HREF="SCSI-HOWTO-3.html#BugReport">Senalazione di Bug</A>.</LI> </OL> <P> <H2><A NAME="ss5.19">5.19 AM53/79C974 (ALPHA)</A> </H2> <P> <P> <BLOCKQUOTE><CODE> <PRE> ftp://tsx-11.mit.edu/pub/linux/ALPHA/scsi/AM53C974-0.3.tar.gz </PRE> </CODE></BLOCKQUOTE> <P>Configurazioni supportate : <P> <BLOCKQUOTE><CODE> <PRE> Porte : tutte IRQ : tutti Canali DMA : 6 IO : port mapped, bus master (modo non intelligente) </PRE> </CODE></BLOCKQUOTE> <P> <H2><A NAME="ss5.20">5.20 qlogic (Standard)</A> </H2> <P>Hey Drew, dove è questa sezione (io, (D.F) l'ho vista solo nell'indice ;-)? <P> <HR> <A HREF="SCSI-HOWTO-6.html">Avanti</A> <A HREF="SCSI-HOWTO-4.html">Indietro</A> <A HREF="SCSI-HOWTO.html#toc5">Indice</A> </BODY> </HTML>