# Problema con hdparm [resuelto]

## elsdello

Hola buenas, 

os escribo porque tengo el siguiente problema con hdparm, cuando intento activar el dma me da el siguiente error.

hdparm -d1 /dev/hda

/dev/hda:

 setting using_dma to 1 (on)

 HDIO_SET_DMA failed: Operation not permitted

 using_dma    =  0 (off)

Me he estado mirando la documentación siguiente:

https://forums.gentoo.org/viewtopic.php?t=289203

http://gentoo-wiki.com/HOWTO_Use_hdparm_to_improve_IDE_device_performance

Y mi disco duro es el siguiente:

ATA device, with non-removable media

        Model Number:       Maxtor 6Y120L0                          

        Serial Number:      Y40NV1XE            

        Firmware Revision:  YAR41VW0

Si alguien sabe a que es debido, agradeceria que me lo comentarais.

Muchas gracias de antemano.

I'm a friki.Last edited by elsdello on Sun May 13, 2007 1:10 pm; edited 1 time in total

----------

## elsdello

Hola buenas,

Ya me funciona lo del hdparm, la solucion ha sido mas facil de lo que creia, y la encontre en un howto en ingles que encontre por internet, el cual no tengo la direccion porque reinicie el ordenador i ahora no lo encuentro.

Hice:

lspci | grep -i ide

saliendo por pantalla lo siguiente:

00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE]

busque en el kernel el controlador SiS 5513 lo añadi al nucleo y ahora funciona perfectamente.

I'm a friki

----------

## idcarlos

Hola.

Tengo la misma controladora que tu y he añadido en mi fichero de configuración la siguiente linea

```
hdparm -c1 -d1 -X69 -m16 /dev/hda
```

Sin embargo si ejecuto hdparm -i /dev/hda me informa que el HDD esta en udma2 y no en udma5 como debería.

¿A ti te pasa lo mismo o tengo algo mal configurado?

----------

## elsdello

Hola buenas,

a mi me ocurria que no tenia el bien configurado en el kernel del gnu/linux el chip de mi controladora de disco duro, tienes que buscar dentro del kernel, donde esta lo del chip de tu disco duro, si no recuerdo mal esta en:

Device Drivers -> ATA/ATAPI/.... i casi abajo de todo veras que pone SiS5513 chipset support.

Yo tengo el ultimo nucleo bajado haciendo emerge gentoo-sources asi que si no tienes este ya que pone que el modulo es new a lo mejor en tu kernel no sale, y tienes que bajarte el kernel actualizado i recompilarlo de nuevo.

Luego es tant facil como seguir esta guia:

https://forums.gentoo.org/viewtopic.php?t=289203

mirar que paremetros te admite tu disco duro activarlos, probarlos y si funcionan guardarlos en el fichero de arranque como cuenta en la guia.

Es muy importante activar el modulo de SiS ya que si no lo haces muchas de las opciones no te iran.

Cuidate i suerte.

I'm a friki

----------

## idcarlos

Hola.

Tengo el modulo correcto, ya que el udma si que funciona.

Si ejecuto -X69 no da ningún error, pero al ejecutar  hdparm -i /dev/hda me informa que el HDD esta en udma2 y no en udma5 como debería. 

¿Que valores te devuelve la instrucción hdparm -i /dev/hda?

----------

## idcarlos

Hola

Acabo de localizar el error

```
May 14 23:54:05 localhost kernel: [   65.223877] hda: DMA timeout retry

May 14 23:54:05 localhost kernel: [   65.223919] hda: timeout waiting for DMA

May 14 23:54:05 localhost kernel: [   65.286780] hda: set_drive_speed_status: status=0x58 { DriveReady SeekComplete DataRequest }

May 14 23:54:05 localhost kernel: [   65.286951] ide: failed opcode was: unknown

May 14 23:54:05 localhost kernel: [   65.409883] hda: set_drive_speed_status: status=0x58 { DriveReady SeekComplete DataRequest }

```

Da un timeout y ademas si  ejecuto:

```
dmesg | grep ide 

[    0.000000] BIOS-provided physical RAM map:

[    0.000000] ACPI: IRQ0 used by override.

[    0.000000] ACPI: IRQ2 used by override.

[    0.000000] ACPI: IRQ9 used by override.

[   22.683732] Boot video device is 0000:01:00.0

[   24.778405] sisfb: Video ROM found

[   24.778603] sisfb: Video RAM at 0xd8000000, mapped to 0xffffc20000080000, size 32768k

[   25.532125] ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

[   25.532518]     ide0: BM-DMA at 0xffa0-0xffa7, BIOS settings: hda:DMA, hdb:DMA

[   25.532637]     ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:DMA

[   25.532752] Probing IDE interface ide0...

[   26.323257] ide0 at 0x1f0-0x1f7,0x3f6 on irq 14

[   26.347076] Probing IDE interface ide1...

[   66.539799] ide: failed opcode was: unknown

[   66.567062] ide: failed opcode was: unknown

[   66.580488] ide: failed opcode was: unknown

[ 2036.966263] ide: failed opcode was: unknown

[ 2036.966296] ide: failed opcode was: unknown

[ 2036.966326] ide: failed opcode was: unknown

[ 2036.966363] ide: failed opcode was: unknown

[ 2037.300898] ide0: reset: success

```

En windows si tengo UDMA5, con lo cual de entrada no es el cable ni el disco. Si pudieras confirmarme, ejecutando hdparm -i /dev/hda  que tu udma5 esta activado, descartaría alguna limitacion del driver del kernel y buscaría el error en otro lado.

Un saludo

Carlos

----------

## elsdello

Buenas,

voy a intentar ayudarte con el hdparm a ver si lo consigo  :Very Happy: .

con esta orden te da información sobre tu disco duro.

hdparm -I /dev/hda

de aqui tienes que sacar todos los datos que le puedes dar a tu disco duro, como el udma maximo que soporta, el R/W multiple sector transfer maximo y el nivel de ruido que quieres que tenga el disco duro, como mas ruidoso mas rendimiento, tambien hay algunas opciones para que se desconecte la alimentacion del disco duro i se ponga en sleep, pero esto si no tienes un portatil no es muy muy importante, aunque tampoco esta mal pensado ya que ser un poco cuidadoso con no gastar demasiada electricidad i hacer que el mundo sea mas sostenible no va a ser malo, si te interesa esta opcion me das un toque y lo buscaremos.

Hago un paste de la guia.

-d1 Sirve para activar el dma, esto reducira el uso de la CPU y aumentara notablemente la velocidad de nuestro disco.

-Xudma5 Sirve para el modo de transferencia, podemos saber cual es el adecuado para nuestro sistema mirando la linea

"DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5" en la informacion de nuestro disco (hdparm -I /dev/hda para los despistados) Simplemente debeis poner el ultimo valor, que es el mas alto.

-c3 Sirve para activar las transferencias de 32bits con sync, aunque realmente yo no noto ninguna diferencia.

-m16 Sirve para establecer las "cuentas de sector", en mi caso el maximo es 16, lo podeis ver en la informacion de vuestro disco en la linea "R/W multiple sector transfer: Max = 16 Current = 16" Nota: Como comenta RadikalQ3 mas abajo, en algunos casos esta opcion puede crear un sensacion de lentitud en vuestro sistema aunque las mediciones sean mayores, si es vuestro caso lo mejor es no usar esta opcion.

-M128 Sirve para ajustar el nivel de ruido del disco, lo podeis consultar en la linea "Recommended acoustic management value: 128, current value: 0" 

Pos bueno suponiendo que tu disco duro como me dijiste usa udma5, tienes 16 en el R/W multiple i que no te importa que el disco duro haga ruido.

hdparm -d1 -Xudma5 -c3 -m16 -M256 /dev/hda

Luego ejecuta hdparm -Tt para ver que rendimiento tiene tu disco duro y comparalo con el test que hiciste antes de poner estos valores.

Coge los valores estos que te  han ido tan bien y los pones en el fichero de configuracion.

nano -w /etc/conf.d/hdparm

el fichero hay un ejemplo i es facil de entender, si no recuerdo mal es algo asi como:

hda_args="-d1 -Xudma5 -c3 -m16 -M256"

luego añade el hdparm al boot.

rc-update add hdparm boot

Y ya tendria que funcionar perfecto.

Si quieres aprofundir mas man hdparm, o los links que te deje hace unos dias.

Cuidate!

I'm a friki

----------

## idcarlos

Hola.

Siento ser tan pesado con este tema, a lo mejor no me he explicado bien.

Mi duda no es por el uso de hdparm, lo único que necesito saber, ya que tu tienes la controladora SIS, es la salida que te da el comando hdparm -i /dev/hda  (i minúscula, no mayúscula, ya que me dan resultados diferentes en cuanto al modo udma activo)

Con que me postees la salida del comando ya me es suficiente.

Un saludo

Carlos Garcés

----------

## Inodoro_Pereyra

Perdón por la intromisión en esta conversación, pero UDMA Modo 5 o 6 en un SIS5513? No hay forma, es una limitación del hardware, de hecho. ni vale la pena ponerle un cable de 80 al disco, con uno de 40 va bien para el tope soportado por tu chipset, que es UDMA Modo 4, también conocido como UDMA66.

 *Quote:*   

> En windows si tengo UDMA5

 

Que te hace suponer esto?

Saludos!

----------

## idcarlos

Coño!

Una mala noticia pero al menos me puede ayudar a clarificar la situación....

Voy a googlear un poco, pero... ¿tienes algun enlace donde se detalle la limitación del chip SIS5513?

En Windows se que tengo UDMA5 por que lo puedo ver en las propiedades del disco duro, pero a lo mejor me he confundido , lo miro cuando llegue a casa para asegurarme, aunque me obligara a arrancar windows...

----------

## elsdello

Lo siento te entendi mal, debe ser que iba dormido por la mañana, aqui tienes mis dos salidas.

HDA

---------

/dev/hda:

 Model=Maxtor 6Y120L0, FwRev=YAR41VW0, SerialNo=Y40NV1XE

 Config={ Fixed }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=57

 BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=16

 CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=240121728

 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio1 pio2 pio3 pio4 

 DMA modes:  mdma0 mdma1 mdma2 

 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 udma3 udma4 udma5 *udma6 

 AdvancedPM=yes: disabled (255) WriteCache=enabled

 Drive conforms to: ATA/ATAPI-7 T13 1532D revision 0:  ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7

 * signifies the current active mode

HDB

------

/dev/hdb:

 Model=ST3300831A, FwRev=3.03, SerialNo=3NF1AJB4

 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16

 CurCHS=4047/16/255, CurSects=16511760, LBA=yes, LBAsects=268435455

 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio1 pio2 pio3 pio4 

 DMA modes:  mdma0 mdma1 mdma2 

 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 udma3 udma4 *udma5 

 AdvancedPM=no WriteCache=enabled

 Drive conforms to: Unspecified:  ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6 ATA/ATAPI-7

 * signifies the current active mode

espero que te sirva.

I'm a friki.

----------

## idcarlos

Gracias.

Descarto el driver como fuente del problema... al parecer no soy el único que le da timeout, a ver si se me aparece la virgen de guadalupe.

----------

## Inodoro_Pereyra

Metí la pata... Es verdad, el chipset SIS 5513 si soporta UDMA5, perdón por entorpecer.

Saludos!

----------

## idcarlos

Hola

Tirando del hilo he llegado a este post.

http://kerneltrap.org/node/4925

Aconsejan modificar el fichero  /etc/modules, para poner el modulo de mi controladora en 1º lugar.

El caso es que lo he echo y para mi  sorpresa ahora hdparm si que me indica que tengo udma5 (cosa que no me creo debido a los malos resultados del propio test.

La pregunta es... ¿Tiene sentido modificar el fichero /etc/modules teniendo en cuenta que la controladora esta dentro del kernel (compilado a mano con todo el cariño, no cargado como modulo)?

----------

## elsdello

Hola buenas,

pues la verdad no le veo la logica, como muy bien dices tu, tienes el sis puesto en el nucleo del kernel i no como un modulo.

Asi que cambar lo que has dicho no tendria que tener ninguna repercusion.

Postea tu fichero /etc/conf.d/hdparm a ver que valores has puesto, y mira si en el inicio te da algun error al cargar el hdparm o si te da algun error de que no ha podido habilitar el dma o alguna cosa asi.

Luego supongo que has añadido al rc-update el hdparm.

rc-update add hdparm boot.

Ya comentaras si algo de aqui te funciona  :Very Happy: 

cuidate!

I'm a friki.

----------

