Содержание
Введение
Mmiotrace (отображение трассировки в памяти ввода/вывода) позволяет проследить, что проприетарный драйвер посылает и читает из/в видеокарту.
Mmiotrace (который, как правило, состоит из нескольких миллионов строк) позволяет разработчикам pscnv/nouveau получить рабочий способ настройки оборудования. Это только отправная точка. Если вам удалось заставить работать, то обычно пытаются понять, что каждый регистр делает.
Без отправной точки, мы ничего не можем сделать. Так что, когда спрашивают mmiotrace или если вы хотите предоставить разработчикам трассировку только что выпущенного оборудования (например, Fermi), выполните следующие действия описаны ниже.
Предварительно требования
Какая-либо одна установленная видеокарта NVIDIA из следующих поколениях - NV50, nv8x, nv9x. Примечание: Любые дополнительные карты (NV3x, NV4x, NVAX) в настоящее время выходит за рамки проекта. Если вы готовы, чтобы добавить их, пожалуйста будьте нашими гостями. Если вы не знаете поколение вашей карты посмотрите ее здесь;
Установка необходимым пакетов
Проверяем что установлен проприетарный драйвер 190.42 или выше, в том числе-dev пакет, предоставляемый вашим дистрибутивом
aptitude search nvidia | grep ^i | grep -v "settings" i nvidia-310-updates - NVIDIA binary Xorg driver
sudo aptitude install nvidia-310-updates-dev
Проверяем что Linux ядро скомпилировано с опцией CONFIG_MMIOTRACE
cat /boot/config-`uname -r` | grep CONFIG_MMIOTRACE
Устанавливаем мета-пакет для сборки программ
sudo aptitude install build-essential
Устанавливаем файлы для разработки Xorg X server
sudo aptitude install xserver-xorg-dev
Устанавливаем git
sudo aptitude install git
Скачиваем из git необходимые компоненты
git clone git://nouveau.git.sourceforge.net/gitroot/nouveau/nouveau nouveau
Компилируем программы
cd nouveau/nouveau-pm make
Переключаемся на первую консоль и входим в систему
Ctrl+Alt+F1
Останавливаем X сервер
sudo service lightdm stop
Выполняем следующий скрипт от root
sudo ./init-trace.sh
Запускаем X сервер
sudo service lightdm start
==== Открываем виртуальный терминал и запускаем скрипт от пользователя root ==== sudo ./run-trace.sh
При тестировании желательно не запускать приложения, чтобы не увеличивать время тестирования и размер дампа.
В течение двух-трех минут вы увидите сообщение «Dumping done. Stopping tracer», но сценарий будет продолжать работать (сжатие данных и сбор другой информации).
При возникновении ошибки во время вышеупомянутого процесса обратитесь к FAQ
Если вы случайно прервали выполнение сценария trace.sh, обратите внимание, что могут быть две новые папки в текущей рабочей директории - nouveau-pm.XXXXXXXXXX и nvXX-0xYYYYYYYY-ZZZZ. Не стесняйтесь, чтобы удалить эти папки (вам понадобится доступ с правами администратора) и повторите процедуру, начиная с шага «sudo ./init-trace.sh». Перезагрузка системы рекомендуется, но не обязательна.
В конце концов, там должен быть создатся файл в текущем каталоге с именем nvXX-0xYYYYYYYY-ZZZZ.tar.gz Где nvXX это поколение видеокарты (см. [1] для списка), и YYYYYYYY это BOOT_0 и ZZZZ от PCI_ID/DEVICE_ID
Скрипт создаст дамп, который будет выглядить примерно так: nva0-0xa0300b1-05e6-downclock.tar.gz. Параметр nva0 запомним.
Переходим в домашнюю папку пользователя
cd
Скачиваем компоненты vbtracetool
git clone git://people.freedesktop.org/~stuart/vbtracetool
Переходим в проект vbtracetool
cd vbtracetool
Компилируем
make
Получаем bios видеокарты, в имени файла пишем тот параметр, который запомнили ранее
./vbtracetool -w 2>nva0_vbios.rom
Пожалуйста, присылайте этот файл (дамп), ваш vbios, а также некоторые дополнительные сведения, которые вы считаете, иметь отношение на эту почту mmio[точка]dumps[собака]gmail[точка]com.
ПРИМЕЧАНИЕ: При отправке дампа он будет загружен на XXX так, что другие люди и разработчики смогут смотреть и помогать. Ваш ЭЛЕКТРОННЫЙ адрес БУДЕТ ПУБЛИЧНО доступен. If you wish it may excluded just state in your email.