# Non riesco a impostare il DIO_SET_DMA failed e conseguenze

## Cadoro

Ho un notebook con disco sata  *Quote:*   

> 
> 
> Timing buffered disk reads:   42 MB in  3.23 seconds =  13.02 MB/sec
> 
> Timing cached reads:   1992 MB in  2.06 seconds = 964.80 MB/sec

 

e un masterizzatore dvd double layer perfettamente riconosciuto da krb con velocità in scrittura di 8x

 *Quote:*   

> 
> 
> /dev/cdroms/cdrom0:
> 
> Timing cached reads:   2048 MB in  2.02 seconds = 1014.52 MB/sec
> ...

 

Su questa periferica non sono riuscito ad attivare il dma, hdparm mi dà il seguente errore 

```

DIO_SET_DMA failed: Operation not permitted

using_dma    =  0 (off)

```

Riesco tranquillamente a masterizzare un dvd ma la sua velocità di scrittura oscilla tra 0,6x e 1.80x e oltretutto per tutta la durata della scrittura il sistema è completamente bloccato. Mi è sembrato anche che non viene utilizzato il buffer del cd.

Dimenticavo non ho settato niente di particolare sui disco(scsi o solo controller bò?!?!)  e sul cd (trannte il dma che non va) e quando copio un file da una partizione all'altra dello stesso disco la massima velocità è di 8MB/sLast edited by Cadoro on Wed Feb 22, 2006 4:03 pm; edited 1 time in total

----------

## eddy89

Scusa, ma guarda ke a me da lo stesso errore se cerco di farlo con il mio utente.. prova a farlo con root hdparm -d1

oppure configura /etc/conf.d/hdparm per settare il dma all'avvio (prima prova manualmente).

Se anche con root non funziona controlla i permessi.

----------

## Cadoro

Neanche con root sempre fallito al set dma anche del cdom e avviando l'init sempre stesso errore.

----------

## Cadoro

vi dico un pò la situazione attuale:

allora questo è quello che faccio caricare [/quote]al kernel 

```

hdc: ATAPI 24X DVD-ROM DVD-R CD-R/RW drive, 2048kB Cache

Uniform CD-ROM driver Revision: 3.20

libata version 1.11 loaded.

ata_piix version 1.03

```

Inizialmente avevo provato a caricare il driver sr0 per cdrom scsi proprio giusto per una prova che si mostrata inutile a parte per il fatto che non avevo più il cdrom.

Vedendo nella sezione ata/atapi del kernel ho visto che non avevo impostato la flag 

```
CONFIG_BLK_DEV_IDEDMA_PCI
```

 che ho poi attivato insieme al driver di supporto per 

```
Intel PIIX and ICH chips
```

 visto che ho un controller ICH6M

Ma non cambia niente non riesco ad attivare il dma !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!HELP!!!!!!!!!!!!!!!!!!

questo è il mio Cd 

```

Standards:

        Used: ATAPI for CD-ROMs, SFF-8020i, r2.5

        Supported: CD-ROM ATAPI-2

Configuration:

        DRQ response: 50us.

        Packet size: 12 bytes

Capabilities:

        LBA, IORDY(can be disabled)

        Buffer size: 2048.0kB

        DMA: sdma0 sdma1 sdma2 mdma0 mdma1 mdma2 udma0 udma1 *udma2

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4

             Cycle time: no flow control=120ns  IORDY flow control=120ns

Commands/features:

        Enabled Supported:

           *    NOP cmd

           *    DEVICE RESET cmd

           *    PACKET command feature set

           *    Power Management feature set

           *    Mandatory FLUSH CACHE command

HW reset results:

        CBLID- above Vih

        Device num = 0 determined by CSEL

 Timing cached reads:   3252 MB in  2.00 seconds = 1625.43 MB/sec

 Timing buffered disk reads:    6 MB in  3.67 seconds =   1.63 MB/sec

```

----------

## Cadoro

ragazzi non riesco ad uscirne fuori caspitp

----------

## .:chrome:.

hai compilato il supporto per il DMA sul bus ATA/ATAPI, nel kernel?

----------

## Cadoro

Si penso di si l'avevo scritto qualche post prima CONFIG_BLK_DEV_IDEDMA_PCI queste sono i conf del kernel in ataAtapi

```

<*> ATA/ATAPI/MFM/RLL support                                                       

<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

<*>    Use multi-mode by default                            

<*>     Include IDE/ATAPI CDROM support                                        

<*>     generic/default IDE chipset support

[*]     PCI IDE chipset support                                                    

[*]       Sharing PCI IDE interrupts support                                       

<*>       Generic PCI IDE Chipset Support                                           

[*]       Generic PCI bus-master DMA support  

<*>         Intel PIIXn chipsets support  
```

ma caspita sempre lo stesso errore sto impazzendo è assurdo  :Shocked: 

----------

## eddy89

```

  [*]       Generic PCI bus-master DMA support                        

  [ ]         Force enable legacy 2.0.X HOSTS to use DMA               

  [*]         Use PCI DMA by default when available                    

  [ ]           Enable DMA only for disks                              

```

Controlla questo! Soprattutto    "Enable DMA only for disks"    dev'essere disabilitato!

----------

## Cadoro

quel modulo non l'avevo attivato perchè l'help dice 

```

Due to concerns  about a couple of cases where buggy hardware may have caused damage, the default is now to NOT use DMA automatically.
```

Ma se mi dici che non comporta + rischi e magari perchè sarei contentissimo e lo abiliterò felicissimo

----------

## eddy89

(Quale modulo nn avevi attivato??)

Humpf.. Io nn l'ho nemmeno letto quello, ma probabilmente riguarda rari chipset forse vecchiotti che piantano macello..

Io ti dico: la mia configurazione è così come ho postato e tutto funziona regolarmente, non ti posso dare altre garanzie per ovvie ragioni.

P.s.:Il tuo hard-disk ha il dma attivato??

----------

## Cadoro

No il disco è uno scsi e non penso sia attivabile il dma 

```

scsi0 : ata_piix

  Vendor: ATA       Model: IC25N080ATMR04-0  Rev: MO4O

  Type:   Direct-Access                      ANSI SCSI revision: 05

SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)

SCSI device sda: drive cache: write back

SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)

SCSI device sda: drive cache: write trough

 sda: sda1 sda2 sda3 < sda5 sda6 sda7 >

Attached scsi disk sda at scsi0, channel 0, id 0, lun 0

```

perchè?

----------

## gutter

Credo che questo dovrebbe chiarire qualche dubbio.

Poi puoi provare a vedere se questo può essere di aiuto:

```

*  sys-apps/sdparm

      Latest version available: 0.95

      Latest version installed: [ Not Installed ]

      Size of downloaded files: 168 kB

      Homepage:    http://sg.torque.net/sg/sdparm.html

      Description: Utility to output and modify parameters on a SCSI device, like hdparm

      License:     BSD

```

P.S.: Non prima di aver letto questo.

----------

## Cadoro

fantastico ignoravo l'esisteza di sdparm appena finisco d'impostare iproute mi rimetto all'opera leggendo questo ottimi link che mi hai dato..mi hai proprio aperto una nuova strada

Si però il mio disco è una ata.........

Thanks

----------

## nightshadow

tutto quello che ti succede e' normale!

accade quando utilizzi un dispositivo  EIDE/ATAPI collegato a un controler SATA (che, per semplificare, "emula" un controller IDE).

L'unica soluzione e' quella di disattivare completamente il supporto ATA/ATAPI:

```

< > ATA/ATAPI/MFM/RLL support

```

quindi nello SCSI devide support attiva:

```

<*> SCSI device support                                          

[*]   legacy /proc/scsi/ support                                 

---   SCSI support type (disk, tape, CD-ROM)                    

<*>   SCSI disk support                                     

< >   SCSI tape support                      

< >   SCSI OnStream SC-x0 tape support                   

<*>   SCSI CDROM support                                      

[*]     Enable vendor-specifi extensions (for SCSI CDROM)    

<*>   SCSI generic support

```

Quindi nello SCSI Low level drivers attiva:

```

<*> Serial ATA (SATA) suppor

<M>   AHCI SATA support 

```

E infine il supporto al tuo chipset specifico (presumo sia un intel 9xx)

```

<*>   Intel PIIX/ICH SATA support

```

a questo punto aggiungi alla kernel comand line (in lilo.conf o grub.conf)  questa  linea:

libata.atapi_enable=1

Se non dovesse essere sufficiente, fai anche questo passaggio:

apri ilfile /usr/src/linux/include/linux/libata.h

nelle prime righe dopo le note di licenza trovi questo:

```

#undef ATA_ENABLE_PATA

#undef ATAPI_ENABLE_DMADIR

```

in queste due righe modifica #undef con #define, salva il file e ricompila il kernel.

dipo non hai naturalmente piu bisogno di attivare il DMA con hdparm, perche sia l'hard disk che il masterizzatore vengono visti come device scsi.

----------

## Cadoro

allora avevo già tutto attivato infatti se vedi in qualche post precedente  lo scsi0 l'attivava tranne il modulo del cdrom sul quale avevo montato il drivere atapi.

Penso di aver messo male l'opzione libata nel menu. di grub visto che mi da il seguente errore

```
Kernel command line: root=/dev/sda7 libata.atapi_enable=1 video=vesafb:ywrap,mtrr,1024x768-16@85

Unknown boot option `libata.atapi_enable=1': ignoring

```

 ma è qui che la devo inserire??!?!(non penso cmq servi)

Cmq con quel define funziona...Certo che stanno proprio "bruciati"...potevano farlo pure "meglio" la conf del kernel. Insomma dice che se non hai scelto un drivere libata non compila con quel supporto invece  se metti define forzi a compilare il supporto libata pure se....tremendo.

Ma su un disco scsi perchè non c'è il dma!?!??! viene sostituito dal controller scsi?!?

```

ata2: SATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xFFA8 irq 15

ata2: dev 0 cfg 49:0f00 82:4218 83:5000 84:4000 85:4218 86:1000 87:4000 88:0407

ata2: dev 0 ATAPI, max UDMA/33

ata2(0): applying bridge limits

ata2: dev 0 configured for UDMA/33

scsi1 : ata_piix

  Vendor: TSSTcorp  Model: CD/DVDW TS-L532A  Rev: TI51

  Type:   CD-ROM                             ANSI SCSI revision: 05

SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)

SCSI device sda: drive cache: write back

SCSI device sda: 156301488 512-byte hdwr sectors (80026 MB)

SCSI device sda: drive cache: write back

 sda: sda1 sda2 sda3 < sda5 sda6 sda7 >

Attached scsi disk sda at scsi0, channel 0, id 0, lun 0

sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray

Uniform CD-ROM driver Revision: 3.20

Attached scsi CD-ROM sr0 at scsi1, channel 0, id 0, lun 0

Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type 0

Attached scsi generic sg1 at scsi1, channel 0, id 0, lun 0,  type 5

```

devo attivare il dma!!!???

Grazie ragazzi, devo testarli un pò allora....ma come verifico se il dma è attivo....?!?!Guardando con top quando faccio una copia dal cdrom al disco o da una partizione all'altra è molto alto ide e il sistema è nullo.Questa notazione può eseere sufficiente a capire se lo spostamento passa solo per il bus della memoria!?!?

----------

## Cadoro

Finalmete crea dvd senza problemi anche a 8x,quindi potrei ritenermi soddisfatto.

Ma sto notando che masterizzando con k3b perfettamente con filesystem standard iso9660 anche non creando multisessioni(ho pensato pottesse essere un problema del cd aperto) non riesco a leggere i cd che creo,solo da linux però.

Quando monto il cdrom:

```
 wrong fs type, bad option, bad superblock on /dev/cdroms/cdrom0,

       missing codepage or other error

       
```

 ho gia' cambiato il link simbolico da hdc a sr0 e funziona la lettura.

Nei messaggi del kernel un'incomprensibile 

```

 isofs_fill_super: bread failed, dev=sr0, iso_blknum=16, block=16

SCSI error : <1 0 0 0> return code = 0x8000002

sr0: Current: sense key=0x3

ASC=0x11 ASCQ=0x0

Info fld=0x10

end_request: I/O error, dev sr0, sector 64

isofs_fill_super: bread failed, dev=sr0, iso_blknum=16, block=16

```

----------

## eddy89

Ma questo ti succede anche dopo aver aperto e richiuso il cassetto del lettore?

----------

## Cadoro

In verità il lettore finita la scrittura rimane chiuso presumo per il fatto che sia scsi.Provo ad aprirlo e va in loop nella lettura con l'errore che ho postato prima.Lo termino con fuser, apro chiudo, e sempre lo stesso errore ma stavolta ripetuto una sola volta

Ma la cosa che non capisco è che lo stesso identico supporto con i driver ata veniva scritto e poi viene e veniva letto tranquillamente..

Penso di ritornare al modulo atapi su hdc e provo ad attivare il dma direttamente dal codice di libata e con hdparm proverò a mettere Utradma

 mode 0 visto che sotto altri sistemi lavora così. Ma la cosa più strana vedendo questi sistemi operativi con le raccapricianti dll che il mio cdrom ha due driver uno scsi e l'altro ata/atapi.Ma come si spiega una cosa del genere?!!?

----------

## Cadoro

Oggi ho deciso di rimettere i drivere eide  atapi senza dma putroppo.Ho provato con hdparm vari tipi di dma ma non vuole proprio attivare niente dandomi sempre lo stesso errore Dopo aver perso non sò più quanti cd(provati dvd+r  dvd-r filesystem udf flsm iso) ho eliminato il supporto scsi per cdrom; Probabilmente non lo attiva perchè il disco è uno scsi o meglio è un sata e quindi dovrebbero esserci incompatibilità tra il canale dma e quello scsi(Stranamete però vengono utilizzate libata1.1 e pensavo avessero il supporto per accesso diretto all mem)

Ora per lo meno posso scrivere dvd e cd e poi leggerli senza quell'errore ma la cosa strana è che nella scrittura di un cd a 24x il sistema non s'imballa....

Vorrei farvi notare questo msg nel kernel

```

PCI: Setting latency timer of device 0000:00:1f.2 to 64

ata1: SATA max UDMA/133 cmd 0x1F0 ctl 0x3F6 bmdma 0xFFA0 irq 14

ata1: dev 0 cfg 49:0f00 82:746b 83:7fe8 84:4023 85:f469 86:3c48 87:4023 88:203f

ata1: dev 0 ATA, max UDMA/100, 156301488 sectors: lba48

ata1(0): applying bridge limits

ata1: dev 0 configured for UDMA/100

```

 nel  dev 0 è attivo udma?!?

----------

## nightshadow

Devi considerare che sui dischi scsi non esiste la modalita' ultraDMA. i dischi SCSI usano na tecnologia differente.

SATA viene gestito come un disco SCSI, quindi sul dev 0 nno esiste DMA. in ogni caso e' come se fosse attivo.

i problemi che hai riscontrato sono tutti derivati dal fatto che quelle due "undef" chew trovi in libata.h non e' che sono disattivate cosi per sport.

e' che si tratta di codice ancora da considerarsi sperimentale.. e per questo motivo viene per ora tenuto disabilitato. non appena sufficientemente maturo sara' sicuramente disponibile e attivato di default.

Ora, i tuoi problemini potrebbero derivare proprio da questo. *potrebbero*

il DMA non si attiva sulle interfacce PATA dei chipset intel 9xx (almeno questi sono gli unici su cui ho provato e NON funziona).

non so dirti esattamente il perche.. ma la mia ipotesi piu plausibile e' che il chipset utilizzi solo SATA e abbia una sorta di "emulatore" PATA per consentire il supporto a dischi EIDE normali.

sicuramente l'unica strada percorribile per il futuro sono le libata, non appena saranno sufficientemente mature. io sto attendendo il kernel 2.6.16 per vedere se ci sono miglioramenti..

ad esempio io ho il problema che con libata masterizzo solo i DVD.. mentre masterizzando CD, mi accade che nel log di k3b dice che cdrecord non ha i permessi per aprire il device.

eppure tutti i permessi sono OK

----------

## Cadoro

Ottime delucidazioni.

Infatti anche io ho lo stesso problema sulla masterizzazione dei cd e per lo meno adesso sarò più contento e motivato ad aggiornale il mio kernel sempre se questo risolverà il problema.

Ma a quanto si aggira circa un trasferimento tramite usb2 su un disco esterno montato con usb-storage quindi su sd*? In questo caso la velocità dipende solo dal controller usb? Su un bel disco ata133 su usb è normale un velocità di trasferimento all'incirca di 18mB/s??

----------

## nightshadow

 *Cadoro wrote:*   

> Ottime delucidazioni.
> 
> Infatti anche io ho lo stesso problema sulla masterizzazione dei cd e per lo meno adesso sarò più contento e motivato ad aggiornale il mio kernel sempre se questo risolverà il problema.
> 
> Ma a quanto si aggira circa un trasferimento tramite usb2 su un disco esterno montato con usb-storage quindi su sd*? In questo caso la velocità dipende solo dal controller usb? Su un bel disco ata133 su usb è normale un velocità di trasferimento all'incirca di 18mB/s??

 

Eeehhh.. non lo so.. a dire il vero non ho mai fatot test di velocita' su USB2 ma 18MB/sec mi sembrano davvero tanti...

probabilmente vedi quel transfer per via del disk caching. io credo che non possa fisicamente essere superiore ai 10MB/s teorici.. ma a occhio direi che va bene se sono la meta'... che rispetto ai 700KB/s di USB1 sono comunque transfer buoni..

----------

## nick_spacca

 *nightshadow wrote:*   

> 
> 
> Eeehhh.. non lo so.. a dire il vero non ho mai fatot test di velocita' su USB2 ma 18MB/sec mi sembrano davvero tanti...
> 
> probabilmente vedi quel transfer per via del disk caching. io credo che non possa fisicamente essere superiore ai 10MB/s teorici.. ma a occhio direi che va bene se sono la meta'... che rispetto ai 700KB/s di USB1 sono comunque transfer buoni..

 

Cazzata...   :Wink:   l'USB2 TEORICAMENTE copre velocita di trasferimento dati FINO a 480 Mbps, che è ben oltre i 18MB/s menzionati prima...quind in realta dovrebbe andare anche + veloce

----------

## Cadoro

Ma a me più di 18 proprio non va.

Ma anche se sposto un file da una partizione all'altra questa su per giù è la massima velocità. 

Ma come mai eppure il disco è un sata così come il disco esterno (ata 133 da 8mbCache)caricato con usb-storage?!?!!?  :Question: 

----------

## nightshadow

questo avviene perche il vero collo di bottiglia di un disco e' la sua parte meccanica.

se quello che ti serve si trova nella cache del disco la velocita' e' molto piu veloce rispetto a un file che deve essere caricato direttamente dal disco magnetico.

se trasferisci un file molto grande, ecco che la velocita' scende perche la cache hardware del disco smette di lavorare.

se invece trasferisci grandi quantita' di piccoli file, la testina e' costretta a spostarsi spesso tra i vari cilindri perche per ogni file deve recuperare la posizione che il file occupa fisicamente sul disco e poi andarlo a legere. il tempo perso e' di pochi millisecondi, ma in ogni caso sono sufficienti per veder calare di parecchio le prestazioni....

----------

