Ich habe ein Problem mit dem Xserver von X11.
Ich nutze SuSe 10.0 und als Xserver xorg-x11 Version 6.8.2-100.2.
Xine-check weist auf den fehlenden MTRR support hin (was auch immer das ist?):
“Xserver didn’t set any ranges for the graphics card.”
Als Hardware habe ich eine etwas betagte Grafikkarte:
ELSA ERAZOR III LT mit einem RIVA-TNT2-M64 Grafikprozessor.
Vielleicht hat jemand eine Idee oder weiss, wo ich mehr Informationen bekomme?
Ansonsten, noch schöne Feiertage.
Gruß, drifter
Hi,
MTRR steht für “Memory Type Range Register”. Mehr Wissenwertes
über MTRR steht unter anderem auf Deinem System unter
/usr/src/linux/Doumentation/mtrr.txt.
Als erstes muss Deine CPU MTRR unterstützen.
Darum setze mal das Kommando
cat /proc/cpuinfo | grep mtrr
ab und sieh’ nach, ob grep etwas findet.
Wenn ja:
Der Kernel muss so compiliert sein, dass er die mtrr-Fähigkeit (…)
der CPU unterstützt.
Dazu suche mal unter /proc die Datei mtrr.
Ist sie dort, unterstützt der Kernel bereits mtrr und X hat irgendwie
Probleme, dieses zu erkennen (siehe /var/log/… ).
Falls nicht, musst Du gegebenenfalls den Kernel umkonfigurieren.
Meines Wissens nach findest Du unter “Processor type and features”
im Konfig-Tool des Kernels (“make xconfig” oder “make menuconfig”)
die entsprechende Einstellung.
Viel Erfolg!
mcc
Hi MCC,
Vielen Dank für die unterstützenden Hinweise. Ja, die CPU unterstützt MTRR.
cat /proc/cpuinfo | grep mtrr ergab unter anderem den flag: k6_mtrr.
Ich habe ausserdem mal cat /proc/mtrr gestartet:
re00: 0xe60000000 (3680MB), size= 4MB: write-combining, count=1
Was ich nicht verstehe, warum dort nur 4 MB angezeigt werden, wenn Xorg. log korrekter Weise 32 MB Grafikspeicher registriert.
Keine Ahnung wonach ich in den Logfiles suchen soll? Asche auf mein Haupt…
Eventuell noch ein Tipp?
Bis demnächst,
drifter
Hi Thomas,
sorry für die längere Pause…die Arbeit nimmt mich
gerade sehr gefangen (ein Release steht ins Haus…).
Also…
Ich habe mal ein bischen gegoogelt und — es wird dir
wenig im praktischen Sinne helfen — Du bist nicht alleine.
Ein Problem mit den MTRR haben wohl mehrere speziell mit x.org.
XFree86 scheint inzwischen so weit zu sein, die MTRR unter /proc selber
zu “füttern”.
Ich selber benutze gentoo linux mit ein paar eigenen Erkern udn Anbauten.
Auf diesem läuft ebenfalls X.org 6.8.2. Meine mttr’s sind richtig gefüllt.
Was ich damit sagen will: Es ist kein /grundsätzlicher Fehler/ in X.org
bezügich der MTRRs vorhanden. Das Problem resultiert aus Deiner
Hardware/Software-Kombination oder aus einem völlig banalen Fehler:
Kann es sein, dass xine keinen Zugriff auf /proc/mtrr hat ??????
In /usr/src/linux/Documentation/mtrr.txt steht, wie man /proc/mttr
von Hand mit sinnvollen Werten füllen kann.
Desweiteren steht dort, dass Applikationen das ioctl-Interface benutzen,
um die mtrrs zu beeinflussen, was mich wiederum dazu verleitet, Dich
zu fragen:
a) Von welcher Version sind die Kernelheaderfiles unter /usr/include/*
in Relation zu der Version des Kernels, der tatsächlich auf Deinem
System läuft?
und
b) Wann wurde Xine das letzte Mal compiliert? Vielleicht nutzt der
ein ioctl-interface, was aufgrund eines neueren Kernels gar nicht
mehr funktioniert (Header wurden geändert…)?
An Deiner Stelle würde ich zuersteinmal Xine von Hand aus den
Sourcen neu kompilieren und dann das Teil ersteinmal als root
(ja ich weiss, das tut man nicht, aber…) von /tmp aus starten
und zwar so:
strace -f -o logfile xine
und andschließend xine gleich dazu bringen, über die angeblich fehlenden
mtrrs zu stolpern und ihn danach beenden.
Dann musst Du noch als root das logfile chownern und es Dir ansehen:
Interessant sind alle Zeile die “= -” enthalten (Fehlercode-Rückgabe
von SysCalls) und die den String “perm” (Gross/Klein egal) enthalten, wenn
Du das gleiche Spielchen nocheinmal als Otto Normaluser machst.
Achtung! Das Logfile kann recht groß werden.
Auch würde ich die ioctl-Aufrufe verfolgen und prüfen, ob diese mit einem
Nicht-Fehlercode aus dem kernelspace zurückkommen.
Vielleicht hilft es Dir, der Sache auf die Spur zu kommen.
Falls Du merken solltest, das beispielsweise die Kernelheader unter
/usr/include von Kernel 2.0 sind und Dein Kernel ein echter 2.6er ist…
NICHT einfach die Header auswechseln! Dat geit nej !
In einem solchen Fall ist eine Systemneuinstallation notwendig, weil Du
das Fundament auswechselst (gcc,binutils,linker,kernel).
Und wenn Du ohnehin gerade dabei bist: Wie wäre es dann gleich mit
Gentoo ??? ;O))))
Viel Erfolg!
mcc