ATI e Kernel 2.6.15

by Aladino che ha spudoratamente copiato e pastato da Wolf

Il Kernel 2.6.15 ha dei problemi coi driver proprietari ATI.

ATTENZIONE: CON IL DRIVER ATI 8.22.5 NON C'È PIÙ BISOGNO DI QUESTA PATCH, LA LASCIO COMUNQUE NELLA DOCUMENTAZIONE.

Googlando un po' è possibile trovare una piccola patch per il driver, però a
differenza del driver Nvidia, che si può decomprimere e patchare, con il driver ATI questa procedura non è possibile.

Ecco invece la procedura corretta:

Modifica del codice

NOTA BENE: NON MI RITENGO RESPONSABILE PER EVENTUALI DANNI CAUSATI DALLA PROCEDURA SOPRACITATA, QUANTO FATE E' A VOSTRO ESCLUSIVO RISCHIO!

Questa procedura è stata scritta il 06-01-2006, il kernel usato è il 2.6.15
(appena uscito) e la versione del driver ATI è la 8.20.8 (l'ultima
disponibile).

  1. Caricate il sistema con il kernel 2.6.15 (o superiore).
  2. Installate il driver dall'installer con la procedura standard.
  3. ATTENZIONE: non riavviate.
  4. Entrate nella directory /lib/modules e installate la patch:
# patch -p0 < percorso_alla_patch

NOTA: se si dovesse incontrare qualche difficoltà con l'installazione
della patch è abbastanza semplice modificare i file a mano, editate
il file /lib/modules/fglrx/build_mod/firegl_public.c e cercate la parte
che riporto sotto:

#if 0
    // WARNING WARNINIG WARNNING WARNNING WARNNING WARNNING WARNNING WARNNING
    // Don't increment page usage count, cause ctx pages are allocated
    // with drm_alloc_pages, which marks all pages as reserved. Reserved
    // pages' usage count is not decremented by the kernel during unmap!!!
    get_page(pMmPage); /* inc usage count of page */
#endif

Un consiglio: se usate Vim fate prima ad usare la ricerca con /WARN e trovate l'inizio della seconda linea, e perciò tutto il blocco, comunque, modificate la parte:

#if 0

con

#if LINUX_VERSION_CODE >= 0x02060f

salvate il file e il gioco è fatto! Semplice, no?!

Installazione della versione modificata

  1. Entrate in fglrx/build_mod
  2. Lanciate lo script make.sh contenuto in tale directory
  3. Andate nella directory fglrx (la directory superiore)
  4. Lanciate lo script make_install.sh

Dovrebbe essere a posto, adesso il driver installato dovrebbe funzionare
correttamente!

Patch

La patch riportata qua sotto, potete copiarla e incollarla in un file:

diff -ru fglrx.orig/build_mod/firegl_public.c fglrx/build_mod/firegl_public.c
--- fglrx.orig/build_mod/firegl_public.c    2006-01-06 22:44:24.000000000 
+0100
+++ fglrx/build_mod/firegl_public.c 2006-01-06 22:35:19.000000000 +0100
@@ -2621,7 +2621,7 @@

     pMmPage = virt_to_page(kaddr);

-#if 0
+#if LINUX_VERSION_CODE >= 0x02060f
     // WARNING WARNINIG WARNNING WARNNING WARNNING WARNNING WARNNING WARNNING
     // Don't increment page usage count, cause ctx pages are allocated
     // with drm_alloc_pages, which marks all pages as reserved. Reserved