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