Введение

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.

Ссылки