Это старая версия документа.


Содержание

Nouveau — проект по созданию свободных драйверов видеокарт компании Nvidia с поддержкой ускорения вывода трёхмерной графики. Изначально основан на распространяемом по свободной лицензии, но нечитаемом драйвере «nv» 2D-графики от nVIDIA.

FIXME возможно надо расписать зачем нужен Nouveau и какие у него плюсы перед проприетарным драйвером.

Тестирование управления энергопотреблением Mmiotrace

Mmiotrace (отображение трассировки в памяти ввода/вывода) позволяет проследить, что проприетарный драйвер посылает и читает из/в видеокарту.

Вывод mmiotrace, который, как правило, состоит из нескольких миллионов строк, позволяет разработчикам pscnv/nouveau получить рабочий способ настройки оборудования. Это только отправная точка. Если вам удалось заставить работать, то обычно пытаются понять, что каждый регистр делает1).

Без отправной точки, мы ничего не можем сделать. Так что, когда спрашивают mmiotrace или если вы хотите предоставить разработчикам трассировку только что выпущенного оборудования (например, Fermi), выполните следующие действия описаны ниже.

Предварительные требования

Какая-либо видеокарта NVIDIA следующих поколений2): NV50, nv8x, nv9x. Если вы готовы, чтобы добавить их, пожалуйста будьте нашими гостями. Если вы не знаете поколение вашей карты посмотрите ее здесь;

Установка необходимым пакетов

Проверьте что установлен проприетарный драйвер версии 190.42 или выше, в том числе dev-пакет, предоставляемый вашим дистрибутивом :!: не стоит спользовать aptitude, он не является программой установленной по умолчанию

apt-cache search nvidia | grep ^i | grep -v "settings"
i   nvidia-310-updates              - NVIDIA binary Xorg driver
sudo apt-get install nvidia-310-updates-dev

Проверяем что Linux ядро скомпилировано с опцией CONFIG_MMIOTRACE

cat /boot/config-`uname -r` | grep CONFIG_MMIOTRACE

Устанавливаем мета-пакет для сборки программ

sudo apt-get install build-essential

Устанавливаем файлы для разработки Xorg X server

sudo apt-get install xserver-xorg-dev

Устанавливаем Git

sudo apt-get 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.

Ссылки

Разработчикам Nouveau нужна ваша помощь. Призыв к владельцам ноутбуков с видеокартами NVidia помочь в улучшении поддержки MXM (Mobile PCI Express Module) в Nouveau

Источник

Введение от Миронова Ивана:

Если у вас есть ноутбук с установленным Linux и видеокартой NVidia (в том числе с поддержкой технологии NVidia Optimus), а также немного свободного времени, вы можете помочь проекту, выполнив несколько относительно несложных действий по инструкции (оригинал на английском в письме, вольный перевод на русский — далее).

Меры предосторожности

У меня нет ноутбука с видеокартой NVidia, поэтому не могу проверить, подправить текст wiki-статьи. Поэтому прошу действовать осторожно.

Чтобы узнать, можете ли вы помочь, сначала проверьте наличие строки «MXMS» в файлах /sys/firmware/acpi/tables:

sudo grep MXMS /sys/firmware/acpi/tables/*

Если файлы с данной строкой нашлись (grep выдал «Binary file XYZ matches»/«Двоичный файл XYZ совпадает»), скопируйте их куда-нибудь. Если ничего не нашлось, попробуйте проделать следующее при помощи i2c-tools (должен быть запущен драйвер nouveau):

  • Запустите:
modprobe i2c-dev
i2cdetect -l

Вывод должен выглядеть примерно так:

i2c-0	smbus     	SMBus I801 adapter at 1860 SMBus adapter
i2c-1	i2c       	nouveau-0000:01:00.0-2     I2C adapter
i2c-2	i2c       	nouveau-0000:01:00.0-0     I2C adapter
i2c-3	i2c       	nouveau-0000:01:00.0-10    I2C adapter
i2c-4	i2c       	nouveau-0000:01:00.0-6     I2C adapter
i2c-5	i2c       	nouveau-0000:01:00.0-11    I2C adapter
i2c-6	i2c       	nouveau-0000:01:00.0-12    I2C adapter
i2c-7	i2c       	nouveau-0000:01:00.0-8     I2C adapter
  • Для каждой полученной строки «nouveau» запустите
i2cdetect BUS

Где BUS — число из i2c-BUS (например для i2c-3 нужно запустить «i2cdetect 3»).

  • Если вы увидели в выводе числа 0x54 и/или 0x56, то сохраните дампы в файл:
# Если в выводе было число 0x54
i2cdump BUS 0x54 >i2c-BUS-0x54.dump
 
# Если в выводе было число 0x56
i2cdump BUS 0x56 >i2c-BUS-0x56.dump

Далее для получения дампов VBIOS загрузите и соберите envytools

Для сборки потребуются установить дополнительные пакеты:

sudo apt-get install git libpci-dev libpciaccess-dev libxml2-dev \
cmake flex bison libx11-dev libvdpau-dev libxext-dev
git clone git://github.com/pathscale/envytools.git
cd envytools
cmake .
make
cd ..

Снимите дампы:

sudo ./envytools/nva/nvagetbios -s PRAMIN >vbios_pramin.rom
sudo ./envytools/nva/nvagetbios -s PROM >vbios_prom.rom

Если nvagetbios выдал ошибку, например:

# nvagetbios -s PROM >vbios.rom
Attempt to extract the vbios from card 0 (nva8) using PROM
Invalid signature(0x55aa). You may want to try another retrieval method.

то можете попробовать снять дампы с ACPI. Простейший метод — перезагрузить систему с добавлением «nouveau.vbios=ACPI» к опциям ядра, а затем:

mount -t debugfs debugfs /sys/kernel/debug
cp /sys/kernel/debug/dri/0/vbios.rom ~/

Полученные файлы (со строкой «MXMS», вывод i2cdump, дампы VBIOS) отправьте на mmio[точка]dumps[собака]gmail.com.

Если возникнут какие-то вопросы — можете ответить на письмо в списке рассылки или связаться с Беном Скеггсом в IRC-канале #nouveau на irc.freenode.net (ник Бена — darktama).

Ссылки

1)
FIXME что удалось заставить работать?
2)
Любые дополнительные карты (NV3x, NV4x, NVAX) в настоящее время выходит за рамки проекта.