[TiLUG] Re: ATI mobility radeon 9700 - fglrx.. RISOLTO!!!

Daniele notebook.daniele@infinito.it
Lun 4 Set 2006 21:51:55 CEST


ho finalmente trovato una soluzione al problema

$ fglrxinfo
display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON 9700 Generic
OpenGL version string: 2.0.6011 (8.28.8)

$ glxgears -printfps
4986 frames in 5.0 seconds = 997.141 FPS
5000 frames in 5.0 seconds = 999.952 FPS
4991 frames in 5.0 seconds = 998.152 FPS
5058 frames in 5.0 seconds = 1011.551 FPS
5014 frames in 5.0 seconds = 1002.752 FPS
4957 frames in 5.0 seconds = 991.347 FPS
5058 frames in 5.0 seconds = 1011.463 FPS
5051 frames in 5.0 seconds = 1010.043 FPS
5051 frames in 5.0 seconds = 1010.152 FPS
4946 frames in 5.0 seconds = 989.060 FPS
5059 frames in 5.0 seconds = 1011.642 FPS
5047 frames in 5.0 seconds = 1009.352 FPS
5045 frames in 5.0 seconds = 1008.862 FPS
4942 frames in 5.0 seconds = 988.244 FPS
5054 frames in 5.0 seconds = 1010.751 FPS

in realtà si tratta di una pezza..
a quanto pare è un bug del bios a causare il tutto..

il problema risiede nell'allocazione dei registri MTRR che nel mio
notebook è stranamente piena..

non ci sono più spazi liberi, tutti e 8 i blocchi occupati..

reg00: base=0x00000000 (   0MB), size=  16MB: write-back, count=1
reg01: base=0x01000000 (  16MB), size=  16MB: write-back, count=1
reg02: base=0x02000000 (  32MB), size=  32MB: write-back, count=1
reg03: base=0x04000000 (  64MB), size=  64MB: write-back, count=1
reg04: base=0x08000000 ( 128MB), size= 128MB: write-back, count=1
reg05: base=0x10000000 ( 256MB), size= 256MB: write-back, count=1
reg06: base=0x20000000 ( 512MB), size= 512MB: write-back, count=1
reg07: base=0x40000000 (1024MB), size=1024MB: write-back, count=1

una volta appurato che il problema stava proprio nella mancanza di MTRR
disponibili ho fatto alcune ricerche mirate..

e mi sono imbattuto in questo post:
http://ubuntuforums.org/showthread.php?t=8993

in cui in qualche punto parlano di questo problema, e alla pagina 6 un
tipo dice come fare a far credere al modulo fglrx che il supporto MTRR
non sia presente nel kernel..

disattivare l'MTRR dal kernel non è consigliabile.. quindi, finché una
VERA soluzione sarà trovata (rilasceranno un bios senza bug per l'A4K, o
qualunque computer con questo problema)
sospetto che se si potesse utilizzare il supporto MTRR le prestazioni
sarebbero più alte..

visto che quest'e-mail finisce pubblicata sul web.. (lo so perchè son
stato contattato da altre persone con il mio stesso problema che si sono
imbattute nel mio post precedente) cercherò di spiegare come risolvere
in termini semplici..

do per scontato che abbiate installato i driver fglrx scaricati dal sito
www.ati.com
che siano stati installati correttamente

e che sia stato compilato il modulo fglrx per il kernel (con
module-assistance o come vi pare)
ci sono un sacco di guide che spiegano come farlo..

inoltre do per scontato che /etc/X11/xorg.con sia configurato così (se
seguite le guide ve lo fanno configurare in questo modo):
........................
Section "Device"
        <qualcosa>

        Driver                          "fglrx"

        <qualcos'altro>
........................

io ho un kernel debian configurato e compilato a mano, versione 2.6.17 e
ho installato fglrx 2.28.8

cominciamo..

il tutto va fatto con privilegi di root

allora.. il tipo del post che vi ho indicato diceva di andare a
modificare il file:
/usr/src/modules/fglrx-kernel/fglrx/build_mod/firegl-public.c

ovunque trovate scritto CONFIG_MTRR dovete cambiarlo in XCONFIG_MTRR
quindi salvare e uscire

NOTA: se non esiste questa directory leggete più sotto.. (nel mio caso
non era questa...)

---------------------
x chi non sa come fare:
io ho usato "vi", qualsiasi editor va bene anche un editor grafico,
purché lo utilizziate con i privilegi di root.. io spiegherò come fare
usando "vi"

cd /usr/src/modules/fglrx-kernel/fglrx/build_mod/
su
[inserire la password di root]
cp firegl-public.c firegl-public.c.backup    <--------- sempre meglio
farsi un backup
vi firegl-public.c

oppure

sudo cp firegl-public.c firegl-public.c.backup
sudo vi firegl-public.c

a questo punto per cercare con vi digitate "/CONFIG_MTRR" e date invio

premete "i" (la prima volta potrebbe chiedervi conferma, perchè il file
è in sola lettura, se ve la chiede date INVIO)

posizionatevi davanti a CONFIG_MTRR e inserite la X, se sbagliate potete
usare il tasto BACKSPACE per cancellare, e potete spostarvi con le frecce.
quando la modifica è a posto premete ESC per uscire dalla modalità di
inserimento

premete "n" per cercare il successivo CONFIG_MTRR.. al primo senza la X
all'inizio digitate di nuovo "i", modificatelo in XCONFIG_MTRR e premete
"ESC" quando avete finito..

ripetete il procedimento ("n", "i", modifica, "ESC") finche tutti i
CONFIG_MTRR non avranno una bella X davanti..

a questo punto per uscire e salvare digitate ":wq!" e date INVIO
--------------------------

ora dovete spostarvi in /usr/src/modules/fglrx-kernel/fglrx/build_mod/2.x.x
ovviamente al posto delle x dovete metterci la vostra versione del kernel..
deve si trova il file "Makefile"
(se la cartella non esiste leggete sotto)


e digitare:
make

oppure

sudo make

se tutto va a buon fine (non vi da errori) dovrebbe aver compilato un
nuovo modulo: fglrx.ko

ora dovete sostituire il modulo precedente con quello che avete appena
ricompilato

il modulo precedente potrebbe essere in
/lib/modules/2.x.x-blabla/kernel/drivers/video/

ATTENZIONE.. se la cartella non contiene già un file che si chiama
fglrx.ko questa non è la cartella giusta.. in tal caso leggete sotto...

2.x.x-blabla va sostituito con la vostra versione del kernel...
ad esempio: 2.6.17-11-amd64-k8

--->supponendo che la cartella sia quella giusta<----
digitate
cp -i fglrx.ko /lib/modules/2.x.x-blabla/kernel/drivers/video/

oppure

sudo cp -i fglrx.ko /lib/modules/2.x.x-blabla/kernel/drivers/video/

se dopo questo comando non vi ha chiesto di sovrascrivere il file
fglrx.ko la cartella non era quella giusta.. leggete sotto

####### SE LE CARTELLE NON VI CORRISPONDONO ###########

nel mio caso le cartelle non erano quelle che ho messo nella guida sopra...
quelle della guida sopra sono prese paro paro dal post che vi ho indicato..

nel mio caso (non so se dipenda dalla distro, io uso Debian sid, o dalla
versione di fglrx) il file firegl-public.c era situato in:
/usr/src/modules/fglrx/firegl-public.c

dovevo dare il comando make in:
/usr/src/modules/fglrx/
(cioè nella stessa cartella dove si trova firegl-public.c) perché è in
questa cartella che si trova Makefile

e il modulo da sovrascrivere (fglrx.ko) si trovava in questa cartella:
/lib/modules/2.6.17-good-one/misc/

o se preferite
/lib/modules/2.x.x-blabla/misc/

----------> cosa fare se neppure queste sono le cartelle giuste????
<----------
allora..
voi dovete trovare firegl-public.c
per farlo cercate con qualche programma tale file all'interno di
/usr/src/modules/
io ho usato:
updatedb (servono privilegi di root)
locate firegl-public.c
ma potete usare qualunque tool di ricerca preferiate...

diciamo che trovate tale file nella cartella:
/usr/src/module/fglrx/pippo/

ora dovete cercare il file Makefile (e di solito un file eseguibile
chiamato make.sh)
all'interno di /usr/src/module/fglrx/pippo/ o in qualche sua
sottodirectory per capire dove lanciare il comando "make" una volta che
avrete modificato firegl-public.c

infine dovrete cercare fglrx.ko all'interno di /lib/modules/2.x.x-blabla/

una volta trovato.. diciamo in
/lib/modules/2.x.x-blabla/paperino/minni/pluto/
dovete copiare il file fglrx.ko che avete appena creato all'interno di
questa directory


se non riuscite a trovare questi file non avete installato correttamente
i driver proprietary ATI.. fate un passo indietro e seguite qualche
guida in rete su come installarli..
---------------------------------

riavviate

===== Verificare il tutto =====

appena si riavvia e vi ritrovate davanti al vostro desktop con il mouse
pronto a muoversi come voi preferite, aprite una finestra di terminale e
digitate:
fglrxinfo

display: :0.0  screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: MOBILITY RADEON 9700 Generic
OpenGL version string: 2.0.6011 (8.28.8)

vuol dire che ha funzionato!!! :D :D

display: :0.0  screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.2 (1.5 Mesa 6.4.2)

vuol dire che non ha funzionato o avete sbagliato qualcosa :(((((

buona fortuna a chi ha avuto i miei stessi problemi...
spero di esservi stato utile!

--
ciao,
Daniele



Maggiori informazioni sulla lista Tilug