# Problemi Driver SATA Intel 31244

## noppy

Salve

Volevo solo segnalare , a titolo informativo , che i driver per il Controlle SATA Intel 31244 (che nel mio caso è presente in un server DELL PowerEdge 745) non funzionano correttamente nei kernel gentoo (gentoo-sources) relase 2.6.18 e 2.6.19 , mentre nella 2.6.17 funzionano correttamente . In questi ultimi (l'ultima compilazione da me tentata è sul kernel 2.6.19-r5) da svariati errori in fase di compilazione (errori non bloccanti , la compilazione continua) , in fase di boot della macchina il controller viene inizializzato ma quando va a fare il probe deidischi va in time-out non riuscendo a rilevarli .

Purtroppo ora come ora non ho preso nessun screen degli errori , ma se li volete vedo di procurarmeli .

Saluti

Tommaso Nopetti

----------

## gioi

 *noppy wrote:*   

> Salve
> 
> Volevo solo segnalare , a titolo informativo , che i driver per il Controlle SATA Intel 31244 (che nel mio caso è presente in un server DELL PowerEdge 745) non funzionano correttamente nei kernel gentoo (gentoo-sources) relase 2.6.18 e 2.6.19 , mentre nella 2.6.17 funzionano correttamente . In questi ultimi (l'ultima compilazione da me tentata è sul kernel 2.6.19-r5) da svariati errori in fase di compilazione (errori non bloccanti , la compilazione continua) , in fase di boot della macchina il controller viene inizializzato ma quando va a fare il probe deidischi va in time-out non riuscendo a rilevarli .
> 
> Purtroppo ora come ora non ho preso nessun screen degli errori , ma se li volete vedo di procurarmeli .
> ...

 

Hai controllato che non possa dipendere dal fatto che rispetto ai kernel <=2.6.17 c'è stata una grossa migrazione di codice verso le libata, per cui adesso è presente un'apposita voce nei (mi pare) block device, invece della sottovoce in scsi-low-level? il 2.6.18 non lo so, ma il 2.6.19 sicuramente

Il problema è che il nuovo sistema di gestione SATA-PATA (attraverso le libata) genera "strani problemi" se caricato insieme al supporto generic-ide (non più necessario se usi le libata ed un chip da queste supportato).

Prova a disabilitare il supporto IDE, ed ad usare il solo supporto libata...

----------

## noppy

effettiamente non ho provato a disattivare completamente il supporto ata (anche se poi il controller sul chipset non so come si comporti) , cmq il cambiamento mi pare sia avvenuto nella 2.6.19 , nella 2.6.18 i menu' erano uguali alla 2.6.17 .

Provero' , d'alta parte , tra tutti i server che ho (questo è l'unico con quel controller) gli altri mi funzionano perfettamente anche con ata e libata assieme .

----------

## gioi

 *noppy wrote:*   

> effettiamente non ho provato a disattivare completamente il supporto ata (anche se poi il controller sul chipset non so come si comporti) , cmq il cambiamento mi pare sia avvenuto nella 2.6.19 , nella 2.6.18 i menu' erano uguali alla 2.6.17 .
> 
> Provero' , d'alta parte , tra tutti i server che ho (questo è l'unico con quel controller) gli altri mi funzionano perfettamente anche con ata e libata assieme .

 

Fermo... non devi disabilitare il supporto ATA, ma il supporto IDE!

I "nuovi" chipset hanno il supporto P-ATA e S-ATA unificato, per cui tutta la gestione può essere fatta tramite libata... 

In teoria non ti serve nemmeno ricompilare, mi pare basti passare la dicitura hdX=noprobe come parametro del kernel per tutte le periferiche che hai connesse al controller SATA/PATA, ed assicurarti che il corrispondente modulo libata venga caricato (io ho un ICH6 per cui carico ata_piix, tu avrai qualcos'altro!)

Avevo letto un articolo da qualche parte sull'argomento... vediamo un po... eccolo:

http://linux-ata.org/faq.html#combined

----------

## noppy

nulla

questi sono gli errori in fase di compilazione del kernel :

drivers/ata/sata_vsc.c: In function 'vsc_sata_tf_load':

drivers/ata/sata_vsc.c:152: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:153: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:154: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:155: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:156: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:158: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:159: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:160: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:161: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:162: warning: passing argument 2 of 'writew' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:166: warning: passing argument 2 of 'writeb' makes pointer from integer without a cast

drivers/ata/sata_vsc.c: In function 'vsc_sata_tf_read':

drivers/ata/sata_vsc.c:178: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:179: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:180: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:181: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:182: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:183: warning: passing argument 1 of 'readw' makes pointer from integer without a cast

drivers/ata/sata_vsc.c: In function 'vsc_sata_setup_port':

drivers/ata/sata_vsc.c:330: warning: passing argument 2 of 'writel' makes pointer from integer without a cast

drivers/ata/sata_vsc.c:331: warning: passing argument 2 of 'writel' makes pointer from integer without a cast

errori che nella 2.6.17 non si verificano

----------

## gioi

Sono normalissimi warning, non vogliono dire nulla...

La cosa più probabile è che hanno cambiato qualche di passaggio di variabili per la funzione in questione e si sono scordati di aggiornare il file con i prototipi di funzione...

----------

## noppy

infatti non sono errori bloccanti , pero' cmq il driver , a mio avviso , non funziona piu' correttamente . Se sapessi scrivere decentemente in inglese posterei il problema in luoghi piu' consoni , va be , aspettero' , prima o poi qualcuno lo sistemera' , tanto il suddetto controller e' montato su un server di backup indi per cui anche se ha un kernel non aggiornato all'ultima versione pazienza

----------

## gioi

 *noppy wrote:*   

> infatti non sono errori bloccanti , pero' cmq il driver , a mio avviso , non funziona piu' correttamente . Se sapessi scrivere decentemente in inglese posterei il problema in luoghi piu' consoni , va be , aspettero' , prima o poi qualcuno lo sistemera' , tanto il suddetto controller e' montato su un server di backup indi per cui anche se ha un kernel non aggiornato all'ultima versione pazienza

 

Ti ripeto che non sono errori... i warning sono solo "avvisi" che nel 99.99999999999999999999999999999999999999999999% dei casi possono essere tranquillamente ignorati.

Cmq prima di arrenderti 2 cose:

1- Come hai compilato il supporto al controller? Modulare? O built-in nel kernel?

2- Se è modulare ti sei assicurato venga caricato in fase di boot?

Ti dico queste cose perchè il time-out potrebbe dipendere proprio dal fatto che non essendo caricato il modulo al momento del boot, non trova fisicamente il controller!

Nel caso prova a compilarlo come built-in nel kernel, così sei sicuro che in fase di boot ce l'hai di sicuro!

----------

## noppy

si certo che è build-in , i kernel che compilo sui server sono al 99,999% con i moduli disattivati . se fosse compilato come modulo non mi farebbe nemmeno il boot a meno di usare l'initrd (di cui non sento per nulla la mancanza) .

in fase di boot vede perfettamente il controller , solo che si blocca qui :

ata1: SATA max UDMA/133 cmd 0xE0820200 ctl 0xE0820229 bmdma 0xE0820270 irq 19

ata2: SATA max UDMA/133 cmd 0xE0820400 ctl 0xE0820429 bmdma 0xE0820470 irq 19

ata3: SATA max UDMA/133 cmd 0xE0820600 ctl 0xE0820629 bmdma 0xE0820670 irq 19

ata4: SATA max UDMA/133 cmd 0xE0820800 ctl 0xE0820829 bmdma 0xE0820870 irq 19

ata1: SATA link up 1.5 Gbps (SStatus 113)

da qui in poi va in errore di time-out e ripete , per ogni canale , l'operazione 3 volte e non vede alcun disco . Nella 2.6.17 invece prosegue come segue

vsc_sata_interrupt: clearing interrupt, status 3030383; sata err status 50002

ata1: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 88:007f

ata1: dev 0 ATA-6, max UDMA/133, 156250000 sectors: LBA48

ata1: dev 0 configured for UDMA/133

scsi2 : sata_vsc

questo ripetuto per i 4 canali .

----------

## gioi

Dal tuo post sembrerebbe che tra i due sistemi ci sia una differenza di gestione del dma (come è giusto che sia, visto i cambiamenti a libata)...

Cmq, vedo che si auto-assegna un irq (il 19), perchè non guardi se quell'irq nel 2.6.17 è effettivamente libero?

----------

## noppy

il 19 lo prende proprio nella 2.6.17 , quello era il dmesg della macchina funzionante , e' riportato solo come esempio su dove si blocca , dovrei riaviare la macchina per vedere se sul 2.6.19 effettivamente tenti di prendere o no l'irq 19 , appena posso provo .

----------

## gioi

 *noppy wrote:*   

> 
> 
> ata1: SATA max UDMA/133 cmd 0xE0820200 ctl 0xE0820229 bmdma 0xE0820270 irq 19
> 
> ata2: SATA max UDMA/133 cmd 0xE0820400 ctl 0xE0820429 bmdma 0xE0820470 irq 19
> ...

 

Io non capisco due cose:

1- Gli hd SATA non usano la modalità DMA, ed allora cosa vuol dire quel max UDMA7133? 

2- Quel messaggio ata1: SATA link up, mi fa pensare che sull'ata1 qualcosa la rilevi e che sia quella a decretare il blocco. Potresti postare un log un po' più corposo sul prima e sul dopo di quelle 5 righe di cui sopra?

----------

## noppy

effettivamente anchio non so molto su quel DMA , pero' mi viene da pensare che il controller Intel 31244 funzioni come l'HighPoint 370 portato su SATA il quale usava un chip per canale che convertiva da PATA a SATA 

per il log , eccone qui una porzione maggiore preso dal 2.6.17

....

input: ImExPS/2 Generic Explorer Mouse as /class/input/input1

scsi0 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 7.0

        <Adaptec 3960D Ultra160 SCSI adapter>

        aic7899: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs

  Vendor: SEAGATE   Model: DAT    DAT72-052  Rev: A060

  Type:   Sequential-Access                  ANSI SCSI revision: 03

 target0:0:6: Beginning Domain Validation

 target0:0:6: wide asynchronous

 target0:0:6: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 32)

 target0:0:6: Domain Validation skipping write tests

 target0:0:6: Ending Domain Validation

ACPI: PCI Interrupt 0000:03:03.1[B] -> GSI 21 (level, low) -> IRQ 18

scsi1 : Adaptec AIC7XXX EISA/VLB/PCI SCSI HBA DRIVER, Rev 7.0

        <Adaptec 3960D Ultra160 SCSI adapter>

        aic7899: Ultra160 Wide Channel B, SCSI Id=7, 32/253 SCBs

libata version 1.20 loaded.

sata_vsc 0000:02:02.0: version 1.2

ACPI: PCI Interrupt 0000:02:02.0[A] -> GSI 25 (level, low) -> IRQ 19

ata1: SATA max UDMA/133 cmd 0xE0820200 ctl 0xE0820229 bmdma 0xE0820270 irq 19

ata2: SATA max UDMA/133 cmd 0xE0820400 ctl 0xE0820429 bmdma 0xE0820470 irq 19

ata3: SATA max UDMA/133 cmd 0xE0820600 ctl 0xE0820629 bmdma 0xE0820670 irq 19

ata4: SATA max UDMA/133 cmd 0xE0820800 ctl 0xE0820829 bmdma 0xE0820870 irq 19

ata1: SATA link up 1.5 Gbps (SStatus 113)

vsc_sata_interrupt: clearing interrupt, status 3030383; sata err status 50002

ata1: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 88:007f

ata1: dev 0 ATA-6, max UDMA/133, 156250000 sectors: LBA48

ata1: dev 0 configured for UDMA/133

scsi2 : sata_vsc

ata2: SATA link up 1.5 Gbps (SStatus 113)

vsc_sata_interrupt: clearing interrupt, status 3038300; sata err status 50002

ata2: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 88:007f

ata2: dev 0 ATA-6, max UDMA/133, 156250000 sectors: LBA48

ata2: dev 0 configured for UDMA/133

scsi3 : sata_vsc

ata3: SATA link up 1.5 Gbps (SStatus 113)

vsc_sata_interrupt: clearing interrupt, status 3830000; sata err status 50002

ata3: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 88:007f

ata3: dev 0 ATA-6, max UDMA/133, 156250000 sectors: LBA48

ata3: dev 0 configured for UDMA/133

scsi4 : sata_vsc

ata4: SATA link up 1.5 Gbps (SStatus 113)

vsc_sata_interrupt: clearing interrupt, status 83000000; sata err status 50002

ata4: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003 88:007f

ata4: dev 0 ATA-6, max UDMA/133, 156250000 sectors: LBA48

ata4: dev 0 configured for UDMA/133

scsi5 : sata_vsc

  Vendor: ATA       Model: ST380011AS        Rev: 8.05

  Type:   Direct-Access                      ANSI SCSI revision: 05

  Vendor: ATA       Model: ST380011AS        Rev: 8.05

  Type:   Direct-Access                      ANSI SCSI revision: 05

  Vendor: ATA       Model: ST380011AS        Rev: 8.05

  Type:   Direct-Access                      ANSI SCSI revision: 05

  Vendor: ATA       Model: ST380011AS        Rev: 8.05

  Type:   Direct-Access                      ANSI SCSI revision: 05

st: Version 20050830, fixed bufsize 32768, s/g segs 256

st 0:0:6:0: Attached scsi tape st0

st0: try direct i/o: yes (alignment 512 B)

SCSI device sda: 156250000 512-byte hdwr sectors (80000 MB)

sda: Write Protect is off

sda: Mode Sense: 00 3a 00 00

SCSI device sda: drive cache: write back

SCSI device sda: 156250000 512-byte hdwr sectors (80000 MB)

sda: Write Protect is off

sda: Mode Sense: 00 3a 00 00

SCSI device sda: drive cache: write back

 sda: sda1 sda2 sda3

sd 2:0:0:0: Attached scsi disk sda

SCSI device sdb: 156250000 512-byte hdwr sectors (80000 MB)

sdb: Write Protect is off

sdb: Mode Sense: 00 3a 00 00

SCSI device sdb: drive cache: write back

SCSI device sdb: 156250000 512-byte hdwr sectors (80000 MB)

sdb: Write Protect is off

sdb: Mode Sense: 00 3a 00 00

SCSI device sdb: drive cache: write back

 sdb: sdb1 sdb2 sdb3

sd 3:0:0:0: Attached scsi disk sdb

SCSI device sdc: 156250000 512-byte hdwr sectors (80000 MB)

sdc: Write Protect is off

sdc: Mode Sense: 00 3a 00 00

SCSI device sdc: drive cache: write back

SCSI device sdc: 156250000 512-byte hdwr sectors (80000 MB)

sdc: Write Protect is off

sdc: Mode Sense: 00 3a 00 00

SCSI device sdc: drive cache: write back

 sdc: sdc1 sdc2 sdc3

sd 4:0:0:0: Attached scsi disk sdc

SCSI device sdd: 156250000 512-byte hdwr sectors (80000 MB)

sdd: Write Protect is off

sdd: Mode Sense: 00 3a 00 00

SCSI device sdd: drive cache: write back

SCSI device sdd: 156250000 512-byte hdwr sectors (80000 MB)

sdd: Write Protect is off

sdd: Mode Sense: 00 3a 00 00

SCSI device sdd: drive cache: write back

 sdd: sdd1 sdd2 sdd3

sd 5:0:0:0: Attached scsi disk sdd

ACPI: PCI Interrupt 0000:00:1d.7[D] -> GSI 23 (level, low) -> IRQ 20

.....

nei kernel 2.6.18 e 2.6.19 tutto e' come sopra fin che non arriva a :

ata1: SATA link up 1.5 Gbps (SStatus 113)

da qui in poi sembra non rilevare in modo corretto i dischi e va in errore (ovviamente poi c'e' il kernel panic non trovando la root)

----------

## gioi

aspe... a me se non trova la root non va in kernel panic... mi dice che non riesce a montare la root, e mi presenta un simil prompt...

quel che mi lascia perplesso è questo:

```

vsc_sata_interrupt: clearing interrupt, status 3030383; sata err status 50002 

```

Significa che c'è qualcosa che non va anche con il 2.6.17 (perchè sata err status?)... e mi sembra tanto un problema di gestione degli IRQ...

ma sulla pagina di riferimento di libata non hai trovato nulla sulla gestione avanzata degli irq?

----------

## noppy

mmh , effettivamente il kernel panic e' sui kernel 2.4 , non so se fa lo stesso sui 2.6 , in genere riavvio prima

cmq su libata quello che ho trovato è solo una descrizione del driver :

Driver name: sata_vsc

Summary: NCQ and 64-bit DAC support possible, but not implemented. Looks like a PATA controller, but with full SATA control including hotplug and PM.

----------

