Linux 15.036 Themen, 107.107 Beiträge

UDMA-Betrieb unter Linux klappt nicht

Monster / 4 Antworten / Baumansicht Nickles

Hi Linux-Freaks,
bin vor kurzem in die Welt der Linux User eingestiegen. Klappte eigentlich auch fast alles. Nun habe ich aber ein Problem, das ich nicht lösen kann.
Meine IDE-Geräte lassen sich nicht mit UDMA betreiben. Schon beim booten erscheint folgende Meldung:
Ali 15x3 Bus Master (DMA Disabled) Bios

Wenn ich dann versuche unter der Shell den UDMA-Modus zu aktivieren
hdparm -d 1 /dev/hda
erscheint folgende Meldung:
HDIO_SET_DMA failed: Die Operation ist nicht erlaubt.

Der Chipsatz ist ein Ali1543. Was mache ich falsch?

Gruß Monster

bei Antwort benachrichtigen
(Anonym) Monster „UDMA-Betrieb unter Linux klappt nicht“
Optionen

Hi,

der DMA-Support ist im Standardkernel (2.2.x) nicht enthalten.
Du mußt den Kernel patchen um DMA einschalten zu können.
Anschließend beim Kernelkompilieren DMA Unterstützung einschalten.
Zu deinem Board gibt es bei ww.ali.com.tw einen Treiber (Beta 3), ich weiß allerdings nicht, ob es noch andere Treiber gibt.

Funktioniert bei meinem Asus P5A (mit ALI 1543) ganz gut.
Da es aber noch eine Beta-Version ist (auch schon etwas älter), wäre etwas Vorsicht nicht ganz schlecht.

bei Antwort benachrichtigen
Monster Nachtrag zu: „UDMA-Betrieb unter Linux klappt nicht“
Optionen

Danke für die Antwort! Aber das mit dem neucompilieren des Kernels hab ich gemacht. Dabei habe ich den Treiber für Ali15x3 aktiviert und natürlich auch UDMA aktiviert.
Dabei hab ich mich an das Buch von Suse gehalten. Klappt aber trotzdem nicht. Die Meldungen beim Booten bleiben die gleichen!

Was mache ich falsch?

bei Antwort benachrichtigen
(Anonym) Monster „Danke für die Antwort! Aber das mit dem neucompilieren des Kernels hab ich...“
Optionen

Hi,

der neu übersetzte Kernel muß auch entsprechend umkopiert werden (bei Suse /boot Verzeichnis) etc. ...
Das steht aber ansich im Suse-Handbuch alles recht gut drin.

Was mir jetzt noch einfällt ist, daß ich das Patch-Skript aus dem Treiber etwas überarbeitet habe.
Der beta 3 Treiber ist glaube ich für 2.2.12 gewesen. Im Patch-Skript habe ich alles mit "2.2.12" gegen meine Kernelversion "2.2.16" getauscht (Texteditor - Alles Ersetzen).

Dann sollte beim Booten dieses Kernels folgende Meldung kommen:

ALI15X3: IDE controller on PCI bus 00 dev 78
ALI15X3: not 100% native mode: will probe irqs later
ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:DMA, hdb:pio

************************************
* ALi IDE driver (1.0 beta3) *
* Chip Revision is C1 *
* Maximum capability is - UDMA 33 *
************************************

ALI15X3: simplex device: DMA disabled
ide1: ALI15X3 Bus-Master DMA disabled (BIOS)
hda: Maxtor 93073U6, ATA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ALI15X3: Ultra DMA enabled
hda: Maxtor 93073U6, 29311MB w/2048kB Cache, CHS=3736/255/63, (U)DMA

#

Natürlich mit den entsprechenden Werten deiner angeschlossenen Geräte (bei mir wie ersichtlich nur eine UDMA Festplatte).

Eventuell hilft noch

"hdparm -c1 -m16 -d1 -X66 /dev/hda"

Das aktiviert 32-bit IO-Mode, 16 Sector ahead lesen, DMA aktivieren im allgemeinen und mit -X66 UDMA2 für den ersten IDE-Controller.
Steht bei meiner Suse 6.4 in /sbin/init.d/boot.local und wird so bei jedem Start ausgeführt.

Ich hoffe das hilft weiter.

bei Antwort benachrichtigen
Monster Nachtrag zu: „UDMA-Betrieb unter Linux klappt nicht“
Optionen

Danke für die Hilfe!
Hat endlich geklappt. Meine LW arbeiten jetzt im UDMA-Modus. Die Transferrate hat sich nahezu verdoppelt und die CPU Auslastung ist um ca. 20-30% zurückgegangen.

Gruß Dirk

bei Antwort benachrichtigen