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

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

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

FIXME Пожалуй, стоит переименовать этот раздел. В нем явно не про тестирование.

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

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

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

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

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

Процесс тестирования

Создание дампа mmiotrace

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

    1. Проверьте, что у вас установлен проприетарный драйвер версии 190.42 или выше, а так же его dev-пакет

      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
    2. Проверьте, что Linux ядро скомпилировано с опцией CONFIG_MMIOTRACE

      cat /boot/config-`uname -r` | grep CONFIG_MMIOTRACE
    3. Установите мета-пакет для сборки программ

      sudo apt-get install build-essential
    4. Установите файлы для разработки X-сервера Xorg

      sudo apt-get install xserver-xorg-dev
    5. Установите Git

      sudo apt-get install git
  2. Скачайте из репозитория Git необходимые компоненты

    git clone git://nouveau.git.sourceforge.net/gitroot/nouveau/nouveau nouveau
  3. Скомпилируйте скачанные из Git компоненты

    cd nouveau/nouveau-pm
    make
  4. Переключитесь в первую консоль комбинацией клавиш Ctrl+Alt+F1 и войдите в систему

  5. Выполните init-trace.sh скрипт от root

    sudo ./init-trace.sh
  6. Откройте терминал и снова скрипт run-trace.sh от суперпользователя

    sudo ./run-trace.sh

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

    В течение двух-трех минут вы увидите сообщение Dumping done. Stopping tracer. После этого сообщения скрипт сожмет полученные данные и соберет дополнительную информацию.

При возникновении ошибки во время вышеупомянутого процесса обратитесь к FAQ FIXME а где сам FAQ? Может лучше это вообще убрать?

Если вы случайно прервали выполнение сценария trace.sh, вы можете заметить, что текущей рабочей директории появились две новые папки – nouveau-pm.XXXXXXXXXX и nvXX-0xYYYYYYYY-ZZZZ. Вы можете удалить эти папки (вам понадобятся права администратора) и повторить процедуру, начиная с шага sudo ./init-trace.sh. Перед этим рекомендуется перезагрузить систему.

В конце концов, должен создастся файл в текущем каталоге с именем nvXX-0xYYYYYYYY-ZZZZ.tar.gz, где nvXX это поколение видеокарты и YYYYYYYY это BOOT_0 и ZZZZ от PCI_ID/DEVICE_ID FIXME я не понял о чем тут в конце :(

Пример названия файла созданного скриптом: nva0-0xa0300b1-05e6-downclock.tar.gz

Запомните параметр nva0.

Получение BIOS видеокарты

  1. Перейдите в домашнюю папку

    cd
  2. Скачайте vbtracetool

    git clone git://people.freedesktop.org/~stuart/vbtracetool
  3. Перейдите в папку с исходными кодами vbtracetool

    cd vbtracetool
  4. Скомпилируйте vbtracetool

    make
  5. Получите BIOS видеокарты. В имени файла укажите параметр, который запомнили ранее

    ./vbtracetool -w 2>nva0_vbios.rom

Отправка информации

Полученную информацию (дамп и BIOS), а также все сведения, которые вы посчитаете полезными необходимо отправить на адрес mmio.dumps@gmail.com.

Отправленная вами информация будет загружена XXX для того, чтобы разработчики и другие люди могли просмотреть даные, и адрес вашей электронной почты будет публично доступен.

Ссылки

Помощь в улучшении поддержки 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-репозитория исходный код envytools и скомпилируйте программу

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)
Любые дополнительные карты (NV3x, NV4x, NVAX) в настоящее время выходит за рамки проекта.