Войти

Показать полную графическую версию : ati mandriva и mtrr


sergkhr1
18-05-2006, 22:24
ноутбук rover b571wh: P4 2800 ht/ari radeon mobility 9700(m11) и т. д. . Дистрибутив mandriva 2006 LE(и кстати любой другой). Проблема -- BIOS ноутбука дает неправильные
значения для MTRR (Memory Transfer Registers, некая технология,
применяемая для быстрого копирования данных в видеопамять). По идее,
надо бы раздобыть "правильный" BIOS, но, на сайте ровер обнадежили что нового биоса не будет.
По инфе в интернете пишут, что можно обойтись подручными средствами: исправить таблицу записей MTRR вручную так, чтобы она содержала нужные ("правильные") значения. Эта
самая таблица живет в файле /proc/mtrr, который можно читать и писать от
имени root. Таким образом, нужно: а) удалить из этого файла
неправильную запись б) занести в него правильные значения. Это делает
следующий соответствующий скрипт:

#!/bin/sh
# Fix wrong MTRR setting
echo "disable=0" >| /proc/mtrr
echo "base=0x0 size=0x40000000 type=write-back" >| /proc/mtrr

После прописывания скрипта в /etc/rc.d/rc.local значения mtrr поменялись:

cat /proc/mtrr
reg00: base=0x00000000 ( 0MB), size= 512MB: write-back, count=1
reg01: base=0xe8000000 (3712MB), size= 128MB: write-combining, count=9
reg02: base=0xf8000000 (3968MB), size= 64MB: write-combining, count=1

До этого была одна строка:
reg00: base=0x00000000 ( 0MB), size=983552MB: write-back, count=1

Что не так делаю.
Возникала ли у кого нибудь подобная ситуевина. В принципе 3d нужно постольку поскольку т. к. ноут используется на 99,9% для работы. Но ситуация когда что то не работает гложет медленно но верно.

Помогите кто чем может !!! ;>) Век не забуду.

BuGfiX
19-05-2006, 13:38
Посмотрел файлик mtrr.txt в документации ядра, там делается disable=2 вместо disable=0. Попробуй?

sergkhr1
21-05-2006, 07:23
попробовал disable=2 не катит. По команде cat /proc/mtrr вылазит следующее:
reg00: base=0x00000000 ( 0MB), size= 512MB: write-back, count=1
и типа все.

BuGfiX
22-05-2006, 15:11
А откуда взялась цифра "size=0x40000000" ? Насколько я понимаю ее нужно выдирать из лога иксов?

sergkhr1
22-05-2006, 21:07
Переписывался, да и сейчас пишусь с журналом linux format (c главным редактором ниже кусок его письма).

Цитата:
"Проблема состоит в том, что BIOS вашего ноутбука дает неправильные
значения для MTRR (Memory Transfer Registers, некая технология,
применяемая для быстрого копирования данных в видеопамять). По идее,
надо бы раздобыть "правильный" BIOS, но, коль скоро это невозможно,
можно обойтись подручными средствами: исправить таблицу записей MTRR
вручную так, чтобы она содержала нужные ("правильные") значения. Эта
самая таблица живет в файле /proc/mtrr, который можно читать и писать от
имени root. Таким образом, Вам нужно: а) удалить из этого файла
неправильную запись б) занести в него правильные значения. Это делает
следующий простой скрипт:

#!/bin/sh
# Fix wrong MTRR setting
echo "disable=0" >| /proc/mtrr
echo "base=0x0 size=0x40000000 type=write-back" >| /proc/mtrr

Здесь 0x40000000 нужно заменить на размер вашей RAM (системной, не
видеокарты) в соответствии со следующей таблицей:
0x08000000 = 128Mb
0x20000000 = 512Mb <-- В оригинале этой строки нет - моя догадка
0x10000000 = 256Mb
0x40000000 = 1Gb
0x60000000 = 1.5Gb
0x80000000 = 2Gb"


у меня size=0x20000000 (40000000 - была ошибка) но это если честно сути не меняет выводы команд не меняются

BuGfiX
23-05-2006, 13:33
Вроде немного поразбирался, вот что понял:
echo "disable=0" >| /proc/mtrr
значит отключить строчку номер ноль в /proc/mtrr.
Далее: я так понял, ты хочешь использовать фичу биоса "использовать столько-то (допустим 128MB) системной памяти под видеопамять" ? Наверняка (пока не уверен) нужно сделать так:

echo "disable=0" >| /proc/mtrr
echo "disable=1" >| /proc/mtrr
echo "disable=2" >| /proc/mtrr
....
echo "base=0x00000000 size=0x20000000 type=write-back" > /proc/mtrr # вся память (512)
echo "base=0x18000000 size=0x08000000 type=write-back" > /proc/mtrr # кусок размером 128mb

последняя строчка должна выделить 128 MB из общей памяти с адреса 0x18000000 (384 MB)
В результате должно получиться вот это:

reg00: base=0x00000000 ( 0MB), size=512MB: write-back, count=1
reg01: base=0x18000000 ( 384MB), size=128MB: write-back, count=1

А вообще, base адрес видео-памяти все-таки надо выдирать из лога иксов, из строчки типа:

(--) SVGA: PCI: NVidia Riva TNT2 rev 17, Memory @ 0xee000000, 0xe2000000

Тут, например, он равен 0xee000000.

sergkhr1
23-05-2006, 21:19
Забыл сказать видюха дискретная ati radeon 9700 128 mb (память у нее своя 128 метров), так что системная память под видео не выделяется. Так как в таких глубинных настройках рублю не очень, то объяснить свои действия не могу. Выполнял инструкции гл. редактора linux format г-на Синицина. Если ты шаришь в настройках может тебе прислать выводы команд (lspci и т. д) ты только напиши что требуется, может у тебя получиться настроить видео. Месяцев 7 парюсь. Испробовал штук 20 дистрибутивов, и денег на журналы, книги и диски потратил 6000-7000 рублей. Всерьез подумывать стал о покупке второго ноута - этот бы жене отдал.

Спасибо за помощь.
С надеждой в будущее.




© OSzone.net 2001-2012