Tu sei qui

Asus A2K, ATI Mobility Radeon 9700 e mtrr


Per scrivere questo post ho preso spunto da uno analogo di mastro che ha avuto una rogna simile sul suo notebook

Dopo vari tentativi infruttuosi, sono finalmente riuscito ad installare i driver proprietari ATI Linux per la scheda grafica del portatile (Asus A2K).

La rogna grossa che ho dovuto risolvere non era tanto nell'installazione, quanto nella configurazione degli mtrr.

Gli mtrr sono dei registri di controllo usati dal sistema operativo per capire quali sono le modalità di accesso della CPU ai registri di memoria.

Il sistema operativo imposta questi registri a seconda di quello che gli dice il BIOS. Sembra che il mio BIOS sia un po' bacato e imbrogli Linux. Il risultato che si ottiene è che questi registri sono ingarbugliati e cosa ancora peggiore sono tutti occupati.

Quando il driver ATI tenta di allocare uno di questi (per inserire informazioni sulla memoria della scheda video) va in errore. Ecco cosa dice dmesg


mtrr: no more MTRRs available
[fglrx:firegl_addmap] *ERROR* mtrr allocation failed (-22)
[fglrx] Internal AGP support requested, but kernel AGP support active.
[fglrx] Have to use kernel AGP support to avoid conflicts.
[fglrx] AGP detected, AgpState = 0x1f00421b (hardware caps of chipset)
mtrr: no more MTRRs available
[fglrx:firegl_unlock] *ERROR* Process 4167 using kernel context 0

Per ovviare al problema la soluzione più intelligente sembra essere quella di riconfigurare gli mtrr a mano.

Il punto dove andare ad operare è il file /proc/mtrr. Le operazioni che seguono devono essere fatte senza che il server X sia attivato. Per fare questo in Ubuntu è sufficiente partire in modalità failsafe.

Per prima cosa si deve cancellare quello che è scritto sul file. Per questo è sufficiente fare:

echo "disable=0" >| /proc/mtrr

La procedura va ripetuta per tutti i registri presenti nel file.

Infine il file va reinizializzato:

echo "base=0x00000000 size=0x40000000 type=write-back" >| /proc/mtrr

Il valore che vedete (0x40000000), corrisponde alla memoria fisica presente nel portatile (non quella della scheda video!).

In questo modo tutto ritorna a posto...fino al prossimo riavvio. Eh sì perché il file viene riscritto ad ogni boot.

L'unica via è quella di fare un piccolo script e farlo girare all'avvio della portatile. Lo script è il seguente:

#!/bin/sh
# eh, lo so, si potrebbe usare un ciclo for...

echo "disable=0" >| /proc/mtrr
echo "disable=1" >| /proc/mtrr
echo "disable=2" >| /proc/mtrr
echo "disable=3" >| /proc/mtrr
echo "disable=4" >| /proc/mtrr
echo "disable=5" >| /proc/mtrr
echo "disable=6" >| /proc/mtrr
echo "base=0x00000000 size=0x40000000 type=write-back" >| /proc/mtrr

Questo script va piazzato in /etc/init.d/, va reso eseguibile e poi va fatto il seguente link simbolico:

sudo ln -s /etc/init.d/fix-mtrr /etc/rcS.d/S03fix-mtrr

In questo modo il driver si dovrebbe caricare correttamente.

Programmazione: 

Commenti

Speriamo che con l'acquisot di ATI da parte di AMD alcune cosette migliorino. Questa e' una di quelle...

Comunque molto utile questo post!!!

Bravo GTtrev!

Mi sa che stavolta non è colpa di ATI. Il problema sta nel mio bios che è un po' sciocco.

Comunque per quel che riguarda ATI non vedo grossi cambiamenti in vista. Il capoccia ha già detto che siccome gli utenti linux sono molti meno di quelli windows, le persone che sviluppano i driver per linux continueranno a rimanere poche.

Chi e' il capoccia?

Il capoccia è Terry Makedon.

Per avere un riassunto delle posizioni di ATI/Amd sui driver linux ti consiglio di andare qua.

Intervista molto interessante. COme biasimarli?

Apprezzo l'onesta'.

Purtroppo il giorno in cui Linux avra' una percentuale rilevante di parco macchine da lui controllate e' ancora lontano.

Maledizione...

ciao, sono il "mastro" di cui parli nel tuo articolo sono felice di esserti servito il tuo script fa esattamente quello che fa il mio :) quindi anche l'A2K ha lo stesso problema, interessante... che altri problemi hai? (così, per curiosità)

ciao mastro, grazie di essere passato di qua. L'a2k è un buon portatile (devo dire così perché me lo ha venduto era77 che scrive nel blog Laughing) però non è molto Linux Ready.

Una cosa che non sono mai riuscito a vedere sono i dati della temperatura della CPU (Non che sia così importante invero visto che il sistema di ventilazione è buono) e poi ho avuto qualche rogna con la scheda wifi che riesco a far andare solo in modalità 802.11B e non 802.11G.

Invero non ho mai provato né la porta infrarossi né quella PCMCIA e neppure la firewire. Il winmodem ovviamente sotto linux non va. So che ci sono dei driver per farlo funzionare ma sono a pagamento...

Se dovessi consigliare un laptop per lInux ne proporrei uno con scheda video nvidia o intel. Il supporto di ATI è ancora scarso.

Aggiungi un commento

About This Site

Questo sito pubblica i propri contenuti con licenza Creative Commons.
Per maggiori informazioni andate qua.
Per contattarmi: Scrivimi!
Questo sito è gratuito, e non usa alcun tipo di pubblicità.
Se mi vuoi aiutare a tenerlo vivo, se hai trovato qualcosa di utile, oppure se sei Bill Gates e non sai più dove buttare i soldi, prova a pensare ad una donazione:

Cool stuff

feed rss feed dei commenti gtrev on feedburner cocomment enabled on this site gtrev on technorati creative commons license Get Firefox! Dilbert: striscia quotidiana The Ubuntu Counter Project - user number # 9630 le mie foto su flickr i miei link su del.icio.us i miei link su stumbleupon View Andrea Nasato's profile on LinkedIn gtrev on twitter

Built with

Drupal cms Apache web server Php 4 mysql dbms

Upcoming events

gtrev@parancoe calendar

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer