Linux 15.069 Themen, 107.534 Beiträge

DMA aktivieren

Synthetic_codes / 27 Antworten / Baumansicht Nickles

Moinsen allseits

vor kurzem bin ich mit 3 Freunden von einem vServer auf einen Rootserver umgezogen.
Nachdem der root fertig war, wollten wir die Benutzerprofile migrieren.
Beim kopieren der Dateien(mittels ftp über die Midnight commander oberfläche) fiel mir die miserable datenrate von 900kb/sec auf. Ich dachte mir dass das wohl an vorübergehenden Carrier problemen liegen könnte, und vertagte das ganze. am abend probierte ich es erneut, und wieder nur 900kb. also testete ich den download per ftp von einem neutralen server(in den usa, da liegt mein hosting paket). Der vserver übertrug das 1GB Testfile mit knapp 9MB/sekunde.
der rootserver hingegen wieder nur mit 900k-1MB. daraufhin war klar es liegt am root. ein hdparm -t /dev/hda schlug fehl, da hdparm in der grundkonfiguration des servers fehlte. schnell per apt geholt, test gemacht und siehe da... die platte schaufelte die daten nur mit 1.8mb/sec.
dann habe ich mir die konfiguration der platte angesehen mit
hdparm -i /dev/hda
dies zeigte mir an, dass die platte im 16bit modus ohne DMA läuft
also habe ich zuerst den 32 bit modus angeschaltet mit
hdparm -c1 /dev/hda
was den durchsatz der platte auf 4MB/s anhob
und daraufhin den DMA Modus mit hdparm -d1 /dev/hda

und hier beginnt die krux:

nx-net:~# hdparm -d1 /dev/hda

/dev/hda:
setting using_dma to 1 (on)
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)


okay, google ist dein freund dachte ich mir und guugelte ein bissel nach
wie es scheint, muss das kernelmodul für den IDE Controller geladen werden.

hier mal ein output von lspci -v:

nx-net:~# lspci -v
00:00.0 Host bridge: Silicon Integrated Systems [SiS] 741/741GX/M741 Host (rev 0 3)
Subsystem: ASRock Incorporation Unknown device 0741
Flags: bus master, medium devsel, latency 0
Memory at d0000000 (32-bit, non-prefetchable) [size=64M]
Capabilities: [c0] AGP version 3.5

00:01.0 PCI bridge: Silicon Integrated Systems [SiS] SiS AGP Port (virtual PCI-t o-PCI bridge) (prog-if 00 [Normal decode])
Flags: bus master, 66MHz, fast devsel, latency 32
Bus: primary=00, secondary=01, subordinate=02, sec-latency=32
I/O behind bridge: 0000c000-0000cfff
Memory behind bridge: cfd00000-cfefffff
Prefetchable memory behind bridge: bfa00000-cfbfffff

00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS963 [MuTIOL Media IO] (r ev 25)
Flags: bus master, medium devsel, latency 0

00:02.1 SMBus: Silicon Integrated Systems [SiS] SiS961/2 SMBus Controller
Flags: medium devsel
I/O ports at 0c00 [size=32]

00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (prog-if 80 [ Master])
Subsystem: ASRock Incorporation Unknown device 5513
Flags: bus master, medium devsel, latency 128
I/O ports at ff00 [size=16]

00:04.0 Ethernet controller: Silicon Integrated Systems [SiS] SiS900 PCI Fast Et hernet (rev 90)
Subsystem: ASRock Incorporation Unknown device 0900
Flags: bus master, medium devsel, latency 32, IRQ 10
I/O ports at dc00 [size=256]
Memory at cfffb000 (32-bit, non-prefetchable) [size=4K]
Expansion ROM at cffc0000 [disabled] [size=128K]
Capabilities: [40] Power Management version 2

01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS] 661/741/760/ 761 PCI/AGP VGA Display Adapter (prog-if 00 [VGA])
Subsystem: ASRock Incorporation Unknown device 6331
Flags: 66MHz, medium devsel, IRQ 11
BIST result: 00
Memory at c0000000 (32-bit, prefetchable) [size=128M]
Memory at cfee0000 (32-bit, non-prefetchable) [size=128K]
I/O ports at cc00 [size=128]
Capabilities: [40] Power Management version 2
Capabilities: [50] AGP version 3.0



und ein output von lsmod

nx-net:~# lsmod
Module Size Used by
ipv6 228320 70
loop 15496 0
analog 11104 0
rtc 12788 0
i2c_sis96x 5700 0
sis_agp 8708 1
agpgart 30216 1 sis_agp
gameport 14920 1 analog
evdev 9408 1
parport_pc 32612 0
parport 33672 1 parport_pc
pcspkr 3392 0
i2c_core 20096 1 i2c_sis96x
shpchp 33312 0
pci_hotplug 29056 1 shpchp
floppy 53668 0
ide_disk 15168 3
processor 29128 0
3c59x 40808 0
3c509 12116 0
sky2 37252 0
skge 35152 0
natsemi 25632 0
bnx2 77104 0
b44 24716 0
netconsole 3744 0
ne2k_pci 11040 0
8390 9728 1 ne2k_pci
8139too 25600 0
e1000 109376 0
e100 32904 0
sis900 22080 0
via_rhine 23112 0
mii 5696 6 3c59x,b44,8139too,e100,sis900,via_rhine
forcedeth 38788 0
r8169 28872 0
ext2 59784 0
ext3 120584 1
jbd 52968 1 ext3
mbcache 8644 2 ext2,ext3
sd_mod 19456 0
linear 6080 0
raid456 115984 0
xor 14536 1 raid456
raid10 22080 0
raid1 21632 0
raid0 8064 0
faulty 4416 0
multipath 8576 0
md_mod 71060 7 linear,raid456,raid10,raid1,raid0,faulty,multipath
dm_zero 2560 0
dm_mirror 19600 0
dm_snapshot 15904 0
dm_emc 6272 0
dm_round_robin 3648 0
dm_multipath 17032 2 dm_emc,dm_round_robin
dm_crypt 11272 0
dm_mod 50776 5 dm_zero,dm_mirror,dm_snapshot,dm_multipath,dm_crypt
iscsi_tcp 22848 0
libiscsi 22848 1 iscsi_tcp
scsi_transport_iscsi 27532 2 iscsi_tcp,libiscsi
raid_class 6272 0
sata_vsc 9156 0
sata_via 10372 0
sata_uli 8324 0
sata_sx4 13636 0
sata_svw 8452 0
sata_sis 8644 0
sata_sil 11784 0
sata_sil24 14788 0
sata_qstor 9860 0
sata_promise 11972 0
sata_nv 11332 0
sata_mv 18248 0
ata_piix 14216 0
ahci 18372 0
libata 90772 14 sata_vsc,sata_via,sata_uli,sata_sx4,sata_svw,sata_sis,sata_sil,sata_sil24,sata_qstor,sata_promise,sata_nv,sata_mv,ata_piix,ahci
3w_xxxx 25248 0
3w_9xxx 30596 0
scsi_mod 124872 9 sd_mod,iscsi_tcp,libiscsi,scsi_transport_iscsi,raid_class,ahci,libata,3w_xxxx,3w_9xxx
piix 9732 0 [permanent]
sis5513 12680 0 [permanent]
via82cxxx 8708 0 [permanent]
ide_generic 1728 0 [permanent]
ide_core 110984 5 ide_disk,piix,sis5513,via82cxxx,ide_generic


Die Frage die ich nun habe... ist das modul bereits geladen?
wenn ja woran könnte es sonst noch liegen dass ich DMA nicht einschalten kann(die platte ist laut hdparm udma5 fähig)
falls das modul nicht geladen ist: wie lautet der name für das passende modul, und wo kriege ich es(falls es nicht schon mit dem kernel kam) her?

'); DROP TABLE users;--
bei Antwort benachrichtigen
the_mic Synthetic_codes „DMA aktivieren“
Optionen

Ein SIS-Chipset in einem Rootserver? Lustige Hoster gibt's ;-)

ist das modul bereits geladen?
Ja, ist es:
sis5513 12680 0 [permanent]
Allerdings scheint es nicht verwendet zu werden.

woran könnte es sonst noch liegen dass ich DMA nicht einschalten kann
1. Die Hardware könnte fehlerhaft sein, prüfe die Platte mit den smartmontools: smartctl -H /dev/hda oder etwas ausführlicher: smartctl -a /dev/hda. Den Vorschlag, die IDE-Kabel zu ersetzen lass ich jetzt mal, wenn der Server in einem RZ in den USA steht, ist das wohl etwas schwierig :-)
2. Der Chip wird womöglich nur mangelhaft unterstützt. Bietet die Distribution evtl ein Upgrade oder neuere Kernel-Versionen in ihren Repositories?

Die Liste geladener Module ist allgemein sehr strub, da ist sehr, sehr viel Zeugs geladen, das garantiert nicht gebraucht wird. Da sind z.B. sämtliche SATA-Treiber geladen, zahlreiche Treiber für Netzwerkkarten etc pp... Das ist natürlich ein Chaos, welches zu Problemen führen kann. Welche Distribution und welche Kernelversion verwendet ihr (uname -a ist dein Freund)?

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
gelöscht_189916 Synthetic_codes „DMA aktivieren“
Optionen

Also geladen ist es mal, siehe hier:

00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (prog-if 80 [ Master])
Subsystem: ASRock Incorporation Unknown device 5513
Flags: bus master, medium devsel, latency 128
I/O ports at ff00 [size=16]

sis5513 12680 0 [permanent]

ide_core 110984 5 ide_disk,piix,sis5513,via82cxxx,ide_generic

Das Modul ist das viertletzte von unten und ganz unten, das läuft sogar dauernd.
Bevor Du textest, ist im BIOS DMA freigegeben bzw. auf auto und hast Du auch die 80-adrigen Kabel, um UDMA5 zu erreichen?
Wenn ein CD_Laufwerk am IDE-Strang hängt, kann auch dieses den Modus runterziehen.
Da unter dem IDE-Eintrag dann ein Subsystem: ASRock Incorporation Unknown device 5513 steht, begrenzt der Kernel möglicherweise automatisch den Übertragungsmodus, da er nicht sicher den maximalen Modus ermittelt.
Theoretisch könntest Du mit hdparm -X* /dev/hda die DMA-Modi sukzessive hochsetzen, aber wenn ein zu hoher Modus aktiviert ist, kann es schiefgehen.

bei Antwort benachrichtigen
Synthetic_codes gelöscht_189916 „Also geladen ist es mal, siehe hier: 00:02.5 IDE interface: Silicon Integrated...“
Optionen

moin. der Server per se steht nicht in den USA, er steht in einem RZ in Frankfurt am Main. Ich weiss das atm zu viele Kernelmodule geladen sind, bin aber noch beim einrichten des Servers. Ich habe den Server eig genommen, weil er in punkto ausstattung leistungsfähiger schien als mein bisheriger vserver.
ich werde mich da mal mit meinem Kundensupport beschnacken. ausser natürlich einem von euch fällt noch was ein.

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „moin. der Server per se steht nicht in den USA, er steht in einem RZ in...“
Optionen

Ich kann dir nur raten einen eigenen Kernel zu übersetzen und alle unnötigen Treiber zu deaktivieen. Manchmal vertragen sich bestimmte Treiber nicht , wenn sie gemeinsam geladen werden.
Die Standdardkernel sind in der Regel mit nutzlosen Treibern überfüllt, für die im Rechner gar keine Hardware vorhanden ist.
Ich habe einen ALI 1543 Chipsatz in meinem alten K6 500 MHz eingebaut.
Bei Debian etch ist ein älterer 2.6.18er Kernel dabei.
Bei den älteren Linuxkerneln gibt es eine Option "USE DMA BY DEFAULT" mit der man den UDMA Modus der Festplatte einschalten kann.
Wenn ich diese Option für meinen ALI 1543 Chipsatz aktiviere , bekomme ich beim Rechnerstart eine Kernelpanic und der Rechner hängt sich auf.
Alternativ kann man mit hdparm -d1 /dev.. den UDMA Modus aktivieren. Das funktioniert aber auch nicht immer.
Es liegt aber auch nicht immer am Treiber . Die Ursache können auch die Anschluß-Kabel der Festplatte sein.

Die besten Erfahrungen habe ich mit NForce Chipsätzen von NVidia gemacht. Da hat bis jetzt immer alles funktioniert, auch UDMA.


Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „Ich kann dir nur raten einen eigenen Kernel zu übersetzen und alle unnötigen...“
Optionen

also hier bin ich mal wieder...

smartctl -a liefert mir folgendes:
http://cms.tf150.com/smartlog.log

da ist ein error drin, ich werde allerdings nicht ganz schlau draus.
smartctl -H sagt wiederum dass der SMART Test [Passed] ist, also alles ok.

eigener kernel ist atm in arbeit, wie gesagt, ich bin noch dabei das grundzeugs zu migrieren.

@Distro: ich hab das tatsächlich vergessen zu erwähnen: Distro ist ein Debian Etch in minimalkonfiguration. kernel ist 2.6.18-6 für k7 optimiert.
Eigener kern wird heute abend in arbeit genommen.

Durch smartctl weiss ich jetzt wenigstens was in dem teil für ne platte steckt. Laut handbuch verträgt das teil UDMA2, das heisst der sollte machbar sein. Ich werde hdparm -X gleichmal probieren, diese Option kannte ich bisher noch nicht.

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „also hier bin ich mal wieder... smartctl -a liefert mir folgendes:...“
Optionen

Wenn du den eigenen Linuxkernel erstmal konfigurierst, dann würde ich vorschlagen die Option "USE DMA BY DEFAULT" zu deaktivieren. Installier erstmal nur das Paket hdparm.
Im /etc Verzeichnis gibt es dann eine Konfigurationsdatei hdparm.conf. In dieser Datei kann man den UDMA Modus für die einzelnen ATAPI Brenner und IDE Festplatten beim Rechnerstart aktivieren.

Teste vorher erstmal ob der UDMA Modus überhaupt funktioniert.

Schalte mit hdparm -d1 /dev... den UDMA Modus der Festplatte temporär ein und kopier mal testweise ein goßes Verzeichnis wie /usr. Wenn dabei keine Fehlermeldungen vom Kernel angezeigt werden, funktioniert UDMA.
Du kannst dann die Datei /etc/hdparm.conf mit einem Editor bearbeiten , ODER auch die Option "USE DMA BY DEFAULT" im Linuxkernel aktivieren.

PS: Du kanst auch Kernelversion 2.6.24 unter Debian etch installieren.



Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „Wenn du den eigenen Linuxkernel erstmal konfigurierst, dann würde ich...“
Optionen

ich backe mir grade einen 2.6.25, den benutze ich hier zu hause am rechner ohne weitere probleme, und die sourcen hatte ich so oder so rumliegen. USE DMA BY DEFAULT werd ich vorerst mal abgeschaltet lassen.

'); DROP TABLE users;--
bei Antwort benachrichtigen
Synthetic_codes Nachtrag zu: „ich backe mir grade einen 2.6.25, den benutze ich hier zu hause am rechner ohne...“
Optionen

Wo ich grade dabei bin...

Ich habe ja am Server erst zugriff, wenn das System gestartet ist.
d.h. ich sehe nicht, wenn der Kernel nicht booten sollte, warum er nicht bootet.

Gibt es da die möglichkeit ein log erstellen zu lassen?

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „Wo ich grade dabei bin... Ich habe ja am Server erst zugriff, wenn das System...“
Optionen

dmesg zeigt die Meldungen vom Starten des Rechners. In der manpage von dmesg steht:


man dmesg


NAME
dmesg - print or control the kernel ring buffer

SYNOPSIS
dmesg [ -c ] [ -n level ] [ -s bufsize ]

DESCRIPTION
dmesg is used to examine or control the kernel ring buffer.

The program helps users to print out their bootup messages. Instead of copying the
messages by hand, the user need only:
dmesg > boot.messages
and mail the boot.messages file to whoever can debug their problem.


......

Und dann gibt es noch diverse Logdateien im /var/log Verzeichnis.

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „dmesg zeigt die Meldungen vom Starten des Rechners. In der manpage von dmesg...“
Optionen

Das ist mir klar. jedoch hilft mir dmesg nur, wenn der kernel komplett geladen wurde und ich zugriff auf das system habe.
Das problem gerade ist, dass der neue kernel nicht booten will. starte ich dann das system neu(im rescuemodus um die bootreihenfolge wieder umzustellen), wird der kernel ring buffer geleert und somit ist der output von dmesg weg.

ein initrd image hab ich angelegt, und die menu.lst von grub angepasst.

tatsächlich scheint der neue kernel nicht weitgenug zu kommen, um /var/log/dmesg anzulegen. die vorhandenen logfiles betreffen nur den vorinstallierten kern

weiss jemand weiter?

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „Das ist mir klar. jedoch hilft mir dmesg nur, wenn der kernel komplett geladen...“
Optionen

Ich weiß nicht warum der Linuxkernel nicht startet, aber du brauchst mit Sicherheit keine RAM Disk (initrd image) nutzen.
Der Sinn der RAM DISK ist das Linuxtreiber als Modul geladen werden können, obwohl die / Partition von Linux zu diesem Zeitpunkt noch gar nicht gemounted ist.
Ich übersetze meinen eigenen Kernel weil die RAM Disk auch immer wieder Probleme im Serverbereich macht.
Die Maintainer bei Debian wollen den Standardkernel /boot/vmlinuz??? nicht mit nutzlosen Treibern überfüllen für die im Rechner gar keine Hardware vorhanden ist. Normalerweise müssen alle Treiber für die / Partition monolitisch im Kernel /boot/vmlinuz??? sein, weil man ein Kernelmodul aus /lib/modules/kernel??? erst laden kann nachdem die / Partition gemounted wurde (dazu muß das Programme modprobe im userspace ausgeführt werden)

Der eine User startet von SATA , der Andere von SCSI und Weitere von einer IDE Festplatte.
Die Treiber werden in die RAM Dsik beim Standardkernel gepackt, damit sie als Modul geladen werden können , auch wenn die / Partition zu diesem Zeitpunkt noch gar nicht gemounted ist. Die RAM DISK wird noch vor dem Mounten der / Partition geladen.

Aber wenn du einen eigenen Kernel übersetzt, dann kannst du ja selbst entscheiden welche Treiber überhaupt in den Kernel müssen und welche von diesen Treiber als Modul (Sound , USB) übersetzt werden können und welche Treiber monolitisch in /boot/vmlinuz??? sein müssen.
Zumindest müssen alle Treiber für die / Partition (Treiber für die Festplatte, den Chipsatz und Treiber für das Dateisystem) monolitisch im Kernel /boot/vmlinuz sein.
Wobei man bei einem Server ohnehin keine Module übersetzen soll, sondern einen monolitischen Betriebsystemkern. Der Grund dafür ist, das die rootkits einen modularen Betriebsystemkern leichter angreifen können , als einen monolitischen Betriebsystemkern.

Also auf die RAM DISK kannst du verzichten und übersetzt einen monolitischen Betriebsystemkern (aus Sicherheitsgründen).

PS: Eventuell ist auch beim Programmcode deines 2.6.25er Kernels ein Programmierfehler. Du kannst auch von Debian lenny den Sourcecode installieren. Man kann das Paket vom Internetserver downloaden und mit "dpkg -i ..deb" installieren.

http://packages.debian.org/testing/linux-source-2.6.26

In diesem Kernel ist auch die UDMA Unterstützung verbessert worden.

PPS: Hier sind die wichtigsten Kerneloptionen in deutsch erklärt:


http://de.gentoo-wiki.com/wiki/Kernel_manuell_kompilieren



Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „Ich weiß nicht warum der Linuxkernel nicht startet, aber du brauchst mit...“
Optionen

richtig. ich war mir nur bei einigen optionen nicht zu 100% sicher, daher habe ich sie lieber als modul kompiliert. nach meinem Verständnis sollte yaird die module, die ich tatsächlich benötige, jedoch nicht monolithisch im kernel habe, in die initrd packen. Meine weitere intention war es, mir einige optionen offen zu lassen. zb benötige ich atm keine tun tap devices, was sich aber ändern wird, wenn ich mich dazu entschliesse den openvpn server zu migrieren. ähnlich ist es mit den loop/cloop devices, da einer der nutzer seine Studienarbeiten nur sehr ungerne ungeschützt auf einem Server im internet ablegen möchte. da verschlüsselte container ja nur bei notwendigkeit verwendet werden sollen, ist es m.E. sinnlos, diese statisch in den kernel zu packen. da verbrauchen sie 95% der zeit nur unnütz speicher. ich bin grad dabei eine neue, und solidere config zu erstellen und werde mich melden, obs funktioniert.

'); DROP TABLE users;--
bei Antwort benachrichtigen
the_mic Synthetic_codes „DMA aktivieren“
Optionen

Wieso nimmst du nicht den etchnhalf-Kernel? Das ist ein 2.4.24, bereits vorkompiliert und verpackt, einfach über aptitude zu installieren. Das ist wesentlich stressfreier als selbst rumbasteln.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Synthetic_codes the_mic „Wieso nimmst du nicht den etchnhalf-Kernel? Das ist ein 2.4.24, bereits...“
Optionen

der etchnhalf kernel führt ebenso zu einem nicht startenden system. ursache: Unbekannt. ich installiere gerade etch in einer vm auf dem server, vllt bringt mich das weiter.

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „der etchnhalf kernel führt ebenso zu einem nicht startenden system. ursache:...“
Optionen

Ich habe hier Debian lenny mit einem Linuxkernel 2.6.26 und habe unter

Device Drivers-->ATA/ATAPI/MFM/RLL support--->;SiS5513 chipset support folgende Erklärung gefunden:

SiS5513 chipset support
CONFIG_BLK_DEV_SIS5513:

This driver ensures (U)DMA support for SIS5513 chipset family based
mainboards.

The following chipsets are supported:
ATA16: SiS5511, SiS5513
ATA33: SiS5591, SiS5597, SiS5598, SiS5600
ATA66: SiS530, SiS540, SiS620, SiS630, SiS640
ATA100: SiS635, SiS645, SiS650, SiS730, SiS735, SiS740,
SiS745, SiS750

Please read the comments at the top of file:drivers/ide/pci/sis5513.c

Wie es ausschaut wird nur ATA 16 unterstützt und nicht ATA 100 oder ATA 133. Deshalb ist wahrscheinlich auch die Datentransferrate so langsam. Also SiS scheint keine so gute Wahl zu sein. Ich würde NForce Chipsätze von NVidia bevorzugen. Frage doch mal den Hoster ob er auch einen Server mit NForce Chipsätzen von Nvidia hat.




/usr/src/linux-source-2.6.26/drivers/ide/pci# cat sis5513.c

.....


* Original tests and design on the SiS620 chipset.
* ATA100 tests and design on the SiS735 chipset.
* ATA16/33 support from specs
* ATA133 support for SiS961/962 by L.C. Chang <lcchang@sis.com.tw>
* ATA133 961/962/963 fixes by Vojtech Pavlik <vojtech@suse.cz>
*
* Documentation:
* SiS chipset documentation available under NDA to companies only
* (not to individuals).
*/

/*
* The original SiS5513 comes from a SiS5511/55112/5513 chipset. The original
* SiS5513 was also used in the SiS5596/5513 chipset. Thus if we see a SiS5511
* or SiS5596, we can assume we see the first MWDMA-16 capable SiS5513 chip.
*
* Later SiS chipsets integrated the 5513 functionality into the NorthBridge,
* starting with SiS5571 and up to SiS745. The PCI ID didn't change, though. We
* can figure out that we have a more modern and more capable 5513 by looking
* for the respective NorthBridge IDs.
*
* Even later (96x family) SiS chipsets use the MuTIOL link and place the 5513
* into the SouthBrige. Here we cannot rely on looking up the NorthBridge PCI
* ID, while the now ATA-133 capable 5513 still has the same PCI ID.
* Fortunately the 5513 can be 'unmasked' by fiddling with some config space
* bits, changing its device id to the true one - 5517 for 961 and 5518 for
* 962/963.
*/


....

Wenn es eine Fehlerquelle gibt , dann UDMA. Ich würde UDMA erstmal deaktivieren und nur testweise mit hdparm einschalten.

Ich weiß nicht ob du was damit anfangen kannst, aber ich würde mal eine aktuelle Version 2.6.26 versuchen. Ich habe mit NForce Chipsätzen gute Erfahrungen gemacht, weil NVidia selbst die Entwicklung von Linuxkerneltreibern unterstützt:

http://www.nvidia.de/object/linux_nforce_1.23_de.html






Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „Ich habe hier Debian lenny mit einem Linuxkernel 2.6.26 und habe unter Device...“
Optionen

sodele es gibt mal wieder neuigkeiten.

Ich bin jetzt mal drauf gekommen zu überprüfen welcher treiber da rennt. also ein cat /proc/ide/ide0/model gemacht, was mir ein generic auswirft. daraufhin hab ich versucht aus der initrd.img des default kernels das ide-generic modul rauszuhauen. soweit erstmal fehlanzeige system startete nicht. Also ins rescuesystem gegangen. aus jux und dollerei habe ich dann mal versuch in diesem den DMA Modus auf die Platte zu aktivieren.
hmm, was soll ich sagen... ES FUNKTIONIERT.

also mal kurz lsmod geschaut, was sehen meine äuglein: sis5513 ist nicht geladen. ok, dann habe ich mir nochmal proc/ide/ide0/model angeschaut, das steht jetzt auf pci. die ausgabe von lsmod gibt an dass nur defaulttreiber geladen wurden. daraufhin habe ich die original initrd nochmal angepasst, und den SIS treiber rausgenommen. system bootet wieder nicht. Wie krieg ich das hin. kann ich evtl den rescue mode kernel verwenden?

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „sodele es gibt mal wieder neuigkeiten. Ich bin jetzt mal drauf gekommen zu...“
Optionen

Die RAM Disk brauchst du überhaupt nicht bei einem selbstkompilierten Kernel. Das ist auch der Hauptgrund warum man im Serverbereich einen eigenen Kernel übersetzen sollte. Diese RAM Disk macht immer wieder Probleme.
Diese SIS Treiber taugen nichts. SIS unterstützt die Kernelentwickler wahrscheinlich nicht richtig.
Viele Linuxtreiber sind reverse engineered. Das bedeutet nichts Anderes als Ausprobierprogrammierung bis der Treiber funkioniert (weil der Programmierer keine genaue Kenntnis des jeweilgen Chipsatzes hat).
Nimm am besten einen Server mit NForce Chipsatz, weil NVidia die Entwicklung von Linuxtreibern unterstützt.
Die NForce Treiber heißen so im Linuxkernel:

http://www.nvidia.de/object/linux_nforce_1.23_de.html

Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „Die RAM Disk brauchst du überhaupt nicht bei einem selbstkompilierten Kernel....“
Optionen

Den server hab ich nunmal schon, und ich hätte schon längst einen eigenen kern ohne init ramdisk in betrieb, wenn ich ihn lauffähig kriegen würde. ich weiss nicht woran das ganze liegt, ich habe meinen jetzigen kandidaten sogar schon per VMWare bei mir getestet, wo er ohne weiteres durchstartet. Langsam zweifle ich echt an meiner intelligenz

'); DROP TABLE users;--
bei Antwort benachrichtigen
KarstenW Synthetic_codes „Den server hab ich nunmal schon, und ich hätte schon längst einen eigenen kern...“
Optionen

/usr/src/linux-source-2.6.26/drivers/ide/pci# cat sis5513.c

.....


* Original tests and design on the SiS620 chipset.
* ATA100 tests and design on the SiS735 chipset.
* ATA16/33 support from specs
* ATA133 support for SiS961/962 by L.C. Chang <lcchang@sis.com.tw>
* ATA133 961/962/963 fixes by Vojtech Pavlik <vojtech@suse.cz>
*
* Documentation:
* SiS chipset documentation available under NDA to companies only
* (not to individuals).
*/

Ich will es dir mal übersetzen:

SiS chipset documentation available under NDA to companies only
(not to individuals).
Ein Linuxkernel Entwickler bekommt von der Firma SIS keine Dokumentation wie dier Treiber programmiert werden muß. Die Spezifikationen von SIS bekommen nur Firmen und keine Privatperson.

Wie soll dann ein Programmeirer einen guten Linuxtreiber programmieren ?

Wenn der Treiber nichts taugt, dann kannst du nichts machen als die Hardware wechseln.
Ich kann dir nur empfehlen erstmal auf UDMA zu verzichten und nur den PIO Modus zu nutzen.
Es gibt bei IDE eine IDE Spezifikation und im Linuxkernel gibt es einen Standard IDE Treiber , mit dem zumindest der PIO Modus einer IDE Festplatte laufen sollte. Ich habe nur gehört das manche Chipsatzhersteller sich leider nicht an diese IDE Spezifikation halten und dehalb muß der Standard IDE Treiber im Linuxkernel immer wieder an Spezialfälle angepasst werden.
PCs sind spotbillig. Du mußt mal die Preise von Sun Microsystems für ihre Server sehen. Aber da bekommst du Support und mußt dir keine Gedanken über irgendwelche Treiber machen, wenn du Solaris 10 im Serverbereich nutzt.

Aktiviere erstmal nur im Linuxkernel den Standard IDE Treiber und verzichte auf UDMA.
Der PIO Modus sollte rein theoretisch mit jedem IDE Chipsatz funktioniern. Für UDMA braucht man schon wieder spezielle Treiber (die in diesem Fall wohl nicht richtig funktionieren).





Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
Synthetic_codes KarstenW „/usr/src/linux-source-2.6.26/drivers/ide/pci cat sis5513.c ..... Original tests...“
Optionen

Ich beschwer mich ja gar nicht über andere nur über mich selbst.
was mich aber eben wunderte, ist dass das Rescuesystem mit dem Kernel von Gentoo in version 2.6.27 r2 keine spezialtreiber mitbringt. Dennoch lässt sich DMA im rescue modus aktivieren, und der hdparm benchmark zeigt auch einen performance sprung von 6.45mb/s(multicount auf 16, transfermodus auf 32bit) nach 54MB/s(multcount 16, transfermodus 32 bit, DMA _EIN_)
Das wiederum legt nahe dass der Standarttreiber(also IDE_Generic) funktioniert, und auch DMA erlaubt, während der sis5513 _NICHT_ funktioniert, und sogar den kernel behindert. Das Problem ist nur dass ich im Betrieb den sis5513 nicht auswerfen kann, weil er in betrieb ist. und ein rmmod -f hilft mir da leider nicht sehr viel...

'); DROP TABLE users;--
bei Antwort benachrichtigen
the_mic Synthetic_codes „Ich beschwer mich ja gar nicht über andere nur über mich selbst. was mich aber...“
Optionen

Womöglich wurde zwischen Kernel 2.6.18 (Version von Debian Etch) und 2.6.27 die Unterstützung für dein Chipset massiv verbessert. Kannst du (zumindest testweise) auf Debian Lenny aktualisieren? Das kommt nämlich auch mit dem 2.6.27er daher.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Synthetic_codes the_mic „Womöglich wurde zwischen Kernel 2.6.18 Version von Debian Etch und 2.6.27 die...“
Optionen

Ist vom Provider so nicht vorgesehen. Und an eine manuelle installation will ich mich so nicht unbedingt ranwagen. Allerdings habe ich heute mal testweise ein Gentoo image installiert. Der Gentoo kernel schaltet DMA Automatisch ein. Der Etch kernel nicht. Der unterschied dabei ist dass Etch für ide den sis5513 treiber läd, während gentoo den nicht läd. ich gehe also davon aus, dass es tatsächlich an diesem Treibermodul hängt. jetzt ist die frage ob ich das ide subsystem im betrieb neu initialisieren kann. Ich würde nur als allerletzte lösung Gentoo installieren, da ich nunmal mit debian grossgeworden bin. Ein Hardwaredefekt kann damit auch ausgeschlossen werden, es scheint sich wohl um ein problem zwischen etch und dem verbauten board(Asrock KS741GX, soweit ich das rausgefunden habe) zu handeln. Es muss doch eine möglichkeit geben, den output des kernels beim booten direkt umzuleiten, oder bin ich da auf verlorenem posten? Ich meine, mein selbstkompilierter kernel bootet in der VM ohne stress zu machen, obwohl er auf die Hardware des Servers eingestellt ist. und selbst ein kernel den ich mit der konfig des originalkernels erstelle startet nicht. Da is doch irgendwas faul...

'); DROP TABLE users;--
bei Antwort benachrichtigen
the_mic Synthetic_codes „Ist vom Provider so nicht vorgesehen. Und an eine manuelle installation will ich...“
Optionen

Das ist doch kein Problem...

Installier das Etch-Image, dann mach ein Distributions-Upgrade auf Lenny.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Synthetic_codes the_mic „Das ist doch kein Problem... Installier das Etch-Image, dann mach ein...“
Optionen

jap. da hätte ich eigentlich selbst dran denken können. dist-upgrade läuft gerade.
ich war jetzt grade iwie ein bissel auf die debootstrap methode gekommen

'); DROP TABLE users;--
bei Antwort benachrichtigen
Synthetic_codes Nachtrag zu: „jap. da hätte ich eigentlich selbst dran denken können. dist-upgrade läuft...“
Optionen

so, distupgrade erfolgt, und ich hätte es mir fast schon denken können, das system startet nicht mehr. ARGH!!!

was mir gerade so aufgefallen ist wenn ich mir die menu.lst vom grub ansehe...


title Debian GNU/Linux, kernel 2.6.26-1-686
root (hd0,1)
kernel /boot/vmlinuz-2.6.26-1-686 root=UUID=f7b34f35-6fd8-42aa-9e55-b6c05995ac2c ro
initrd /boot/initrd.img-2.6.26-1-686


ist das korrekt dass der root parameter ersetzt wurde? das wurde auch für den alten kernel so gemacht.

'); DROP TABLE users;--
bei Antwort benachrichtigen
the_mic Synthetic_codes „so, distupgrade erfolgt, und ich hätte es mir fast schon denken können, das...“
Optionen

Beanstande den Server als defekt.

Das mit dem root-Parameter ist korrekt, Platten werden neu über ihre UUID angesprochen. Diese ist im Gegensatz zum Device-Node statisch, ergo wenn die Platte woanders angehängt wird, bootet das System trotzdem einwandfrei.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
Synthetic_codes the_mic „Beanstande den Server als defekt. Das mit dem root-Parameter ist korrekt,...“
Optionen

was soll ich denn für einen defekt beanstanden? Das System läuft ja mit Gentoo einwandfrei. nur debian weigert sich...

'); DROP TABLE users;--
bei Antwort benachrichtigen