Der neue ATI-Treiber

Dennis Wronka

Soulcollector
Hallo Leute,

nachdem es ja schon des oefteren Probleme mit den Linux-Treibern von ATI gegeben hat, war ich grad mal so mutig den neuen zu installieren.
Erstmal zu meinem System: Slackware 10.0, mit X.org 6.7.0 (huch, dachte die ganze Zeit waere schon 6.8, naja, egal) und Kernel 2.6.10
Als erstes habe ich den Treiber fuer X.org 6.8.0 probiert (da ich ja irgendwie der Meinung war das zu haben, hab's mal kompiliert, aber wohl nicht installiert :) ). Den konnte ich nicht zum laufen ueberreden, das Problem scheint dann aber recht klar zu sein, halt 'ne zu alte X.org-Version.
Danach habe ich den Treiber fuer XFree86 4.3.0 probiert, da konnte ich auch schon den alten benutzen, war also recht zuversichtlich.
Ich hatte gehofft, dass ATI aus meinem Posting gelernt hat und vielleicht meinen Patch fuer Kernel 2.6 beherzigt hat, aber Pustekuchen (lecker!).
Es stellt sich also wieder wie folgt dar, das Kernelmodul kompiliert nicht wenn man in der agpgart_be.c nicht ein paar Aenderungen vornimmt. (also Kernel 2.6! 2.4 sollte so laufen)
Der Patch sieht wie folgt aus:
Code:
diff -urN fireglx-xfree86-4.3.0-8.8.25/lib/modules/fglrx/build_mod/agpgart_be.c fireglx-xfree86-4.3.0-8.8.25.new/lib/modules/fglrx/build_mod/agpgart_be.c
--- fireglx-xfree86-4.3.0-8.8.25/lib/modules/fglrx/build_mod/agpgart_be.c 2004-12-14 18:55:47.000000000 +0100
+++ fireglx-xfree86-4.3.0-8.8.25.new/lib/modules/fglrx/build_mod/agpgart_be.c 2005-01-18 20:38:33.000000000 +0100
@@ -718,7 +718,7 @@
   *        AGP devices and collect their data.
   */
 
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
      device)) != NULL) {
   pci_read_config_dword(device, 0x04, &scratch);
 
@@ -839,7 +839,7 @@
   *        command registers.
   */
 
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
      device)) != NULL) {
   pci_read_config_dword(device, 0x04, &scratch);
 
@@ -5119,7 +5119,7 @@
   *        AGP devices and collect their data.
   */
 
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
      device)) != NULL) {
   pci_read_config_dword(device, 0x04, &scratch);
 
@@ -5217,7 +5217,7 @@
   *        command registers.
   */
 
- while ((device = pci_find_class(PCI_CLASS_DISPLAY_VGA << 8,
+ while ((device = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8,
      device)) != NULL) {
   pci_read_config_dword(device, 0x04, &scratch);
 
@@ -6494,10 +6494,10 @@
     // locate host bridge device
 #ifdef __x86_64__
     do {
-        dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
+        dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
     } while((dev) && !agp_check_supported_device(dev));
 #else
-    if ((dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
+    if ((dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, NULL)) == NULL)
         return -ENODEV;
 #endif
 
@@ -7040,7 +7040,7 @@
                     &agp_bridge.mode);
     return hp_zx1_setup(dev);
    }
-   dev = pci_find_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
+   dev = pci_get_class(PCI_CLASS_BRIDGE_HOST << 8, dev);
   } while (dev);
   return -ENODEV;
  }

Der Patch wird benoetigt da die Funktion pci_find_class im 2.6er Kernel pci_get_class heisst. Der Treiber fuer X.org hat das gleiche Problem.
Da ich annehme, dass die agpgart_be.c in den beiden Treibern identisch ist sollte der Patch auch auf den X.org Treiber anwendbar sein.

Falls jemand alles von Hand ersetzen moechte (sind nicht all zu viele Eintraege), einfach jeden Eintrag von pci_find_class durch pci_get_class ersetzen.

Auf jeden Fall laeuft mein X.org 6.7 jetzt mit dem Treiber fuer XFree86 4.3

Ich hoffe das war ausfuehrlich genug.

Nachtrag: Fertige Pakete (.tar.gz) fuer Kernel 2.6 kann ich auf Anfrage auch gern per Mail zukommen lassen. Einfach 'ne PM mit der eMail-Adresse und X-Version (kann fuer XFree86 4.3 und X.org 6.8 anbieten) an meine Wenigkeit und gut.
 
Zuletzt bearbeitet:
Also mit dem Kompilieren des Kernelmoduls hatte ich keine Probleme (Fedora Core 3 mit XOrg 6.8 und Kernel: 2.6.9 mit 16k STACKSIZE).
Allerdings bekomm ich keine 3D-Beschleunigung, weil es probleme mit AGP gibt, somit werde ich mal sehen was ich da machen kann (ASUS A7N8X -X mit Nforce2 Chipsatz)
Meine Ergebnisse werde ich dann hier posten.

Daniel
 
Hallo,
ich bin ein Linux Neuling und habe mal eine generelle Frage zur Treiberauswahl.
Es gibt einmal den offiziellen Treiber von ATI und von suse einen.
Ist der von Suse einfach nur speziell dem Suse OS angepasst oder steckt da noch mehr hinter?
Und wenn man ein Suse System hat, kann man auch den offiziellen ATI Treiber nehmen, oder ist man an den inoffiziellen gebunden?

Mein System:
ASUS NForce2
Radeon 9800 Pro
Suse Linux 9.2 FTP Install

MfG

BB

PS
mir fällt da noch eine Frage ein, ist aber ein wenig OffTopic, aber ich stell sie mal trotzdem.
Gibt es ein Programm für Linux, dass Festplatten spiegeln kann?
Wäre ganz praktisch, wenn man vor der Treiberinstallation ein Image macht und das dann einfach drüber bügeln kann, wenn was schief geht. Und bisher ging bei mir so einiges schief, aber es geht bergauf ^^
 
Hallo alle zusammen!

Erstmal vielen Dank an reptiler. Ich habe das ganze gerade mal eben ausprobiert und der Treiber läuft (viel besser als jeder Vorgängertreiber, den ich bisher versucht hatte). Allerdings habe ich noch eine kleine Anmerkung dazu. Ich habe folgendes System: ursprünglich Mandrake 10.0 / Kernel 2.6.10 / Xorg 6.8.1. Meine Grafikkarte ist eine Radeon 9200. Den ATI-Treiber für Xorg 6.8 habe ich nach der Anleitung von reptiler prima installiert bekommen, allerdings habe ich nach der Installation fglrxconfig ausgeführt. Evtl. hätte es ausgereicht in der XF86config-4 (bei meinem selbstgebauten X-Server ist die Xorg.conf nur eine Verknüpfung auf die XF86config-4) bei driver "radeon" durch "fglrx" zu ersetzen. Aber egal, fglrxconfig schreibt in die XF86config-4 bei dem Tastaturtreiber "keyboard", wobei für Xorg an dieser Stelle "kbd" angegeben sein muss. Effekt war, dass ich den X-Server nicht starten konnte (und mittels emacs in der Shell den Fehler beheben musste). Also, wenn ihr nach der Installation fglrxconfig ausführt, solltet ihr vor dem nächsten Neustart des X-Servers die /etc/XF86config-4 editieren und in der Section "Input Device" bei Keyboard den Eintrag für "Driver" von "keyboard" auf "kbd" abändern.

MfG Kleini
 
Erstmal nix zu danken. :)
Du beziehst Dich sicher auf die Anleitung die ich in dem anderen Thread (hier) verfasst habe.
Ja, ich hab erstmal vergessen, dass im config-file lediglich der Treiber geaendert werden muss und nicht unbedingt fglrxconfig ausgefuerht werden muss.
Hab es dann in 'nem etwas spaeteren Posting erwaehnt. Hoffe, dass es jeder der den Treiber nach meiner Anleitung installieren will dort finden kann.
Vielleicht sollte ich es noch als Nachtrag in die Anleitung setzen, damit es nicht uebersehen wird.
 
Hallo,

ich habe da mal eine Frage, du scheinst den Treiber ja zum laufen bekommen zu haben,
ich benutze Slack 10 mit dem Standard X.org ich denke es ist 6.7, kann das Kernelmodul
kompilieren nach der pci_find_class Änderung, nur X startet leider nicht,
weder mit dem Xorg6.8er oder dem X11 4.3 er Treiber, in der Xorg.0.log steht lediglich

> Fatal server error:
> Caught signal 11. Server aborting

Und im gesamten Bereich darüber sind auch keine (EE) Meldungen,

ich würde mich sehr über Hilfe freuen, falls du noch anderes wissen willst sag Bescheid,
bitte im Thread und nicht per Mail, da ich die Adresse seltenst abrufe
 
Da ich ja auch die Slack 10 hab, mit dem standard X-Server X.org 6.7 werd ich mich mal was damit beschaeftigen, vielleicht krieg ich den Fehler ja reproduziert.
Den Treiber fuer X.org 6.8 hab ich auch ausprobiert, ging nicht. Weiss aber die Fehlermeldung nicht mehr.
Ich hab aber den Treiber fuer XFree86 4.3 erfolgreich laufen.

Werd mal schauen ob ich was finden kann um Dir zu helfen.
 
Danke, würde mich eigentlich sehr freuen den ATI Treiber zum Laufen
zu kriegen, da es ein Notebook ist, und das umschalten sonst nicht geht, mal zu schweigen
von der 3D Performance, wie gesagt, wenn ich noch was testen soll, sag Bescheid..
 
Ich werd mich heute Abend mal damit befassen, muss jetzt gleich erstmal meine Ellies am Hotel einsammeln und denen dann weiter die Stadt zeigen.
Also 'ne Runde Tourist-Guide spielen. Naja, was macht man nicht alles fuer seine Eltern...
Wie ich immer sage, wenn unsere Eltern uns nicht haetten...
 

Neue Beiträge

Zurück