# Der neue ATI-Treiber



## Dennis Wronka (18. Januar 2005)

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:

```
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.


----------



## Daniel Toplak (18. Januar 2005)

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


----------



## Bigbutcher (18. Januar 2005)

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 ^^


----------



## Dennis Wronka (19. Januar 2005)

Daniel Toplak hat gesagt.:
			
		

> Allerdings bekomm ich keine 3D-Beschleunigung, weil es probleme mit AGP gibt, ...



Wird denn das Modul geladen?
Wenn nicht, mit welcher Begruendung?


----------



## Kleini (23. Januar 2005)

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


----------



## Dennis Wronka (24. Januar 2005)

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.


----------



## saeckereier (25. Januar 2005)

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


----------



## Dennis Wronka (26. Januar 2005)

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.


----------



## saeckereier (27. Januar 2005)

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..


----------



## Dennis Wronka (27. Januar 2005)

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...


----------



## Dennis Wronka (27. Januar 2005)

So, back in plastic.

Ich dachte mir grad mal, dass bevor ich meinen X-Server zerhacke Du doch mal das Logfile vom X-Server posten koenntest, damit zu sehen an welcher Stelle denn der Fehler genau auftritt.


----------



## saeckereier (28. Januar 2005)

Okay hier ist die Logdatei (als Anhang zur Nachricht)


----------



## Dennis Wronka (28. Januar 2005)

Hmm, also der scheint soweit alles zu machen was mit Grafik zu tun hat, danach kommt bei mir

```
(**) Option "Protocol" "ExplorerPS/2"
(**) Mouse1: Device: "/dev/mouse"
(**) Mouse1: Protocol: "ExplorerPS/2"
(**) Option "CorePointer"
(**) Mouse1: Core Pointer
(**) Option "Device" "/dev/mouse"
(==) Mouse1: Emulate3Buttons, Emulate3Timeout: 50
(**) Option "ZAxisMapping" "4 5"
(**) Mouse1: ZAxisMapping: buttons 4 and 5
(**) Mouse1: Buttons: 5
(II) Keyboard "Keyboard1" handled by legacy driver
(II) XINPUT: Adding extended input device "Mouse1" (type: MOUSE)
(II) Mouse1: ps2EnableDataReporting: succeeded
Could not init font path element /usr/X11R6/lib/X11/fonts/local, removing from list!
SetClientVersion: 0 8
```
Also die Eingabegeraete.
Hast Du schonmal probiert in der config den Treiber wieder auf radeon oder vesa zu aendern und geguckt ob er dann startet?
Bevor Du den fireglx installiert hast lief Dein X-Server nehme ich an. Richtig?
Hast Du fglrxconfig benutzt oder die config von Hand geaendert?


----------



## saeckereier (28. Januar 2005)

Ja, mit normalem radeon Treiber läufts, einzige
 Änderung ide ich gemacht habe war den Driver Eintrag auf fglrx zu ändern..
 Von Hand, nicht mit fglrxconfig


----------



## Dennis Wronka (29. Januar 2005)

Okay, danke fuer die Info.
Dann werd ich wohl wirklich mal schauen, dass ich meinen X-Server irgendwie dazu bringe die gleiche Meldung zu produzieren.


----------



## Daniel Toplak (29. Januar 2005)

Just for info:

Ich hatte mich tagelang mit Fedora Core rumgeärgert und bin jetzt "wieder" bei Suse (9.2) gelandet.
Hier hab ich den Xorg Treiber installiert und er baute das Kernelmodul ohne Probleme.
Danach hab ich mit fglrxconfig die xorg.cfg erstellen lassen. (External AGP).
Anschließen hab ich diese editiert und den Tastaturtreiber auf "kbd" umgestellt. 
Nun hab ich mit "modprobe" fglrx das Modul geladen.
Dann hab ich meinen X-Server gestartet und siehe da ich hatte 3D-Beschleunigung. Seitdem läuft das problemlos.
Meine Hardware ist folgende:
Asus A7N8X Mainboard mit Nforce 2 Chipsatz (angeblich die schlimmste Kombination mit ATI)
ATI Radeon 9600 XT
AMD 2500 Barton.

Gruß Daniel


----------



## Thendram (3. Februar 2005)

Hallo an alle!
 Ich bin neu hier im Forum.
 Ich habe die 3D-Beschleunigung unter Gentoo Linux (2.6.10-r5) und Xorg 6.8.0-r3 mit meiner ATI Radeon 9200 leider noch nicht zum Laufen gebracht. (Trotzdem einmal "Danke!" für die ausführlichen Anleitungen! Ich bin sie Schritt für Schritt durchgegangen.)

 Die 3D Beschleunigung lief bereits mit Xfree86, seitdem ich jedoch auf Xorg umgestiegen bin geht nix mehr. 

 Wenn ich zum Testen glxgears starte, bekomme ich immer folgende Meldung:

```
Xlib:  extension "XFree86-DRI" missing on display ":0.0"
```
 
 Kann mir von Euch vielleicht jemand weiterhelfen?
 Danke im Voraus für jede Antwort!

 Lg Martin


----------



## generador (3. Februar 2005)

Hi
Also ich habe jetzt auf meinem Suse 9.1 den Treiber installiert.
Allerdings habe ich ein Problem mit den Auflösungen.
Ich stelle im fglrxconfig 1280*1024 ein und wenn ich dann x starte kriege ich nur nen schwarzen Bildschirm
In Windows habe ich diese Auflösung laufen bei 32 Bit
Kann es sein das die Radeon Treiber für Linux keine 32 Bit unterstützen sondern nur 24 Bit

Habe übrigens nen TFT Monitor
Auf 1024*768 läuft X aber ich weiss nicht ob mit oder ohne 3D
Wie kann ich das testen

Danke


----------



## Dennis Wronka (3. Februar 2005)

Thendram hat gesagt.:
			
		

> Wenn ich zum Testen glxgears starte, bekomme ich immer folgende Meldung:
> 
> ```
> Xlib:  extension "XFree86-DRI" missing on display ":0.0"
> ...



Guck mal in der xorg.conf nach der folgenden Zeile (ich find sie recht weit oben):

```
Load       "dri"
```
Falls die mit einem # auskommentiert ist einfach den Gartenzaun entfernen.

Dann guck mal ob Du diese Zeilen findest (bei mir ganz unten):

```
Section "DRI"
    Mode 0666
 EndSection
```

Ich bin nicht sicher ob Du die brauchst, aber ich denk schaden kanns nicht.
Falls Du die hast und die auskommentiert sind (wir erinnern uns an #) auch wieder den Gartenzaun loeschen.

Anschliessend X neustarten und schon solltest Du auch DRI haben. Normalerweise.
Es kann aber auch sein, dass Du garkeine DRI-Unterstuetzung im Kernel hast, aber schau erstmal nach dem Kram den ich hier jetzt behandelt hab, falls es dann immer noch nicht geht schauen wir weiter.

Nachtrag: Zitat wegen unsinniger Ueberlaenge gekuerzt


----------



## Dennis Wronka (3. Februar 2005)

generador hat gesagt.:
			
		

> Habe übrigens nen TFT Monitor
> Auf 1024*768 läuft X aber ich weiss nicht ob mit oder ohne 3D
> Wie kann ich das testen
> 
> Danke



Wenn Du glxinfo ausfuehrst solltest Du in einer der ersten Zeilen (vielleicht sogar der ersten, weiss nicht mehr genau) die Info bekommen die Du suchst.
Da steht dann was von Direct Rendering, und da sollte ein Yes hinterstehen wenn der Treiber richtig installiert wurde.


----------



## Thendram (3. Februar 2005)

Erstmals danke für Deine schnelle Antwort!



			
				reptiler hat gesagt.:
			
		

> Guck mal in der xorg.conf nach der folgenden Zeile (ich find sie recht weit oben):
> 
> ```
> Load       "dri"
> ...


 
   Ich habe beides in meiner xorg.conf drinnen und es ist nicht auskommentiert. (sollte also aktiviert sein)

 Habe nochmals im Kernel nachgesehen: "Direct Rendering Manager" ist eingebaut und für "ATI Radeon" ist ein Modul kompiliert (das "drm-radeon" heißen sollte, aber nicht auffindbar ist). 
   Muss das DRI sonst noch irgendwo extra eingebaut werden?

   LG Martin


----------



## The Hacky (3. Februar 2005)

Schon allein dort müsste der Fehler liegen. Denn der DRM muss auf yes stehen, aber es darf kein weiteres Modul geladen sein, ansonsten funktioniert der Treiber nicht.


----------



## Thendram (5. Februar 2005)

Hi!

 Habe die 3D-Beschleunigung nun endlich zum Laufen gebracht! (Danke nochmals für die Tipps)
 Ich hatte einen peinlichen Copy-Paste Fehler in meiner xorg.conf:  
 die Option "no_dri" war zwar auf "no" gesetzt, ein paar Zeilen später jedoch wieder auf "yes" ... *imErdbodenversink*

 Lg Martin


----------

