Мой Nvidia dGPU не обнаруживается после обновления к 19,10

Как может быть предположен от предмета, у меня есть ноутбук Optimus. Пока я работал 19.04, я смог переключиться на Nvidia dGPU и назад, с помощью Главного (через prime-select {intel|nvidia} команда). Вещи, измененные после обновления 19,10, хотя : день после обновления, система заморозилась с ядром, жалующимся на некоторые задачи, являющиеся stucked, такой как rmmod один. Мне удалось возвратить мою систему путем выполнения prime-select nvidia в chroot базируются среда входа в систему.

Я не получу слишком много в детали стороны, такие как удаление iGPU/dGPU драйверов от initramfs (что они должны сделать в initramfs так или иначе ?), но теперь это загружается, по крайней мере, с или без главно активированного dGPU.

И это - то, куда я прихожу к проблеме : если мои начальные загрузки системы с активированным профилем Intel, переключаясь на профиль Nvidia не работают, так как dGPU не обнаруживается в аппаратных средствах. И действительно, это отсутствует в списке lspci. Я должен перезагрузить, чтобы dGPU был обнаружен снова. Следовательно, когда я завершаю работу своей системы, я должен всегда думать об активации профиля Nvidia заранее, или я должен буду перезагрузить, чтобы смочь использовать его в следующий раз.

Это - моя основная проблема. Другой, менее раздражающий, то, что я всегда должен перезапускать gdm сервис при переключении от Nvidia до Intel. Я могу жить с этим, но это - проблема, которую я не имел в 19,04.

Советы относительно этой проблемы приветствуются ! Или препятствуйте тому, чтобы dGPU исчез из аппаратного списка или метода, чтобы обнаружить его снова системой, не перезагружая, который является.

Fwiw, мой iGPU является Intel HD Graphics 4600, и моим dGPU является GTX Nvidia 880M.

РЕДАКТИРОВАНИЕ : @Syfer Polski, спасибо за Ваш информативный ответ !

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

Таким образом, я сразу попробовал тот профиль по запросу. Сначала это не работало, так как у меня было 430 драйверов, которые не поддерживают его. Должна была быть некоторая проверка драйвера, отказывающаяся включить профиль для людей, которые не выполняют версию поддержки, и я подозреваю вот почему свою разрушенную систему, потому что тот профиль по запросу был автоматически активирован во время обновления (только принятие, я не проверял в то время).

Так или иначе..., таким образом, я установил 435 драйверов и действительно работы профиля по запросу. Однако я не нахожу его удовлетворяющий достаточно, так как мой GPU не выключается, когда это не используется, и пытающийся привести в действие, если от меня не работает. Я пытался выключить его через прямой вызов ACPI, и действительно это выключилось, но :

NVRM: GPU at PCI:0000:01:00: GPU-9b8a3387-4913-0c33-619e-da118e532a5f
NVRM: Xid (PCI:0000:01:00): 79, pid=29013, GPU has fallen off the bus.
NVRM: GPU 0000:01:00.0: GPU has fallen off the bus.
NVRM: A GPU crash dump has been created. If possible, please run
NVRM: nvidia-bug-report.sh as root to collect this data before
NVRM: the NVIDIA kernel module is unloaded.

Так, к сожалению для меня пока собственные драйверы не могут выключить мой dGPU, когда он не используется, я предполагаю, что буду придерживаться классической системы профилей intel/nvidia.

Который возвращает меня моему исходному вопросу, когда я загружаюсь с включенным режимом Intel : как я могу получить свой dGPU назад без перезагрузки ?

Пересканирование (echo 1 >/sys/bus/pci/rescan) шоу это в журналах :

pci 0000:01:00.0: [10de:1198] type 00 class 0x030000
pci 0000:01:00.0: reg 0x10: [mem 0xf6000000-0xf6ffffff]
pci 0000:01:00.0: reg 0x14: [mem 0xe0000000-0xefffffff 64bit pref]
pci 0000:01:00.0: reg 0x1c: [mem 0xf0000000-0xf1ffffff 64bit pref]
pci 0000:01:00.0: reg 0x24: [io  0xe000-0xe07f]
pci 0000:01:00.0: reg 0x30: [mem 0xf7000000-0xf707ffff pref]
pci 0000:01:00.0: 32.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s x16 link at 0000:00:01.0 (capable of 126.016 Gb/s with 8 GT/s x16 link)
pci 0000:01:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none

Но lspci остается тихим. Я могу привести в действие устройство вкл\выкл по желанию через вызовы ACPI, ядро показывает его на пересканирование, но оно не обнаруживается драйверами, которые, следовательно, не загрузятся. Должно быть что-то, чтобы сделать, но что ?

3
задан 6 November 2019 в 19:25

2 ответа

Решение найдено! Я не делал некоторых вещей в порядке. Таким образом, процедура, чтобы иметь dGPU назад:

  1. Установите профиль на также nvidia или on-demand (если поддерживается Вашим драйвером): prime-select {nvidia|on-demand}

  2. Включите dGPU. BIOS обычно включает его при начальной загрузке, следовательно здесь не должно быть никакой проблемы. Если Вы выключили его тем временем, я предполагаю, что Вы знаете, как снова включить его. В случае, если это остается неизменным по некоторой другой причине, можно попытать счастья с apt install acpi-call-dkms. Вы найдете полезные примеры в /usr/share/doc/acpi-call-dkms/examples. Обращаться с осторожностью, поскольку это может разрушить Вашу систему плохо! В моем случае следующий вызов ACPI включает мой dGPU: \_SB_.PCI0.PEG0.PEGP._ON. Я даю мой как пример, Ваш не может быть тем же. Не забывайте выходить из обратной косой черты, если у Вас есть кто-либо.

  3. Повторно просканируйте свою шину PCI: echo 1 >/sys/bus/pci/rescan. Может быть достаточно повторно просканировать только часть шины все же.

  4. (может быть дополнительным), Загрузка модуль Nvidia: modprobe nvidia

ПРЕДУПРЕЖДЕНИЕ : не выключайте свой GPU с прямым вызовом ACPI, если Вы не уверены, что он не связывается ни с каким драйвером (помещенный проще, модуль Nvidia должен быть разгружен), или драйвер откажет (пример катастрофического отказа, данный в вопросе).

Пока это загружается, это - драйвер, который управляет GPU, и Вы застающий руль врасплох не будете обычно делать много хорошего.

Однако драйвер Nvidia имеет функцию управления питанием, которая это прочь по умолчанию, но он может быть активирован путем передачи следующего параметра nvidia модуль : NVreg_DynamicPowerManagement=0x01. К сожалению, это работает на Turing и более новые GPU только (т.е. не мой Kepler)... Взятый от /usr/src/nvidia-435.21/nvidia/nv-reg.h :

/*
 * Option: DynamicPowerManagement
 *
 * This option controls how aggressively the NVIDIA kernel module will manage
 * GPU power through kernel interfaces.
 *
 * Possible Values:
 *
 *  0: Never allow the GPU to be powered down (default).
 *  1: Power down the GPU when it is not initialized.

 *  2: Power down the GPU after it has been inactive for some time.

 */
1
ответ дан 1 December 2019 в 15:32

nvidia-prime изменился все снова и снова между Ubuntu 19.04 и 19.10.

Между Ubuntu 16.04 и Ubuntu 18.04, Ubuntu использовала bbswitch, сообщество создало модуль ядра, для выключения GPU Nvidia в ноутбуках Optimus. Однако модуль прекратил сохраняться, и таким образом, в Ubuntu 18.10 (так как бэкпортированный к Ubuntu 18.04), переключаясь между GPU был обработан путем загрузки драйверов открытого исходного кода nouveau. Однако это не полностью выключало GPU (он все еще использовал ~2W).

Одновременно, Nvidia наконец работала над сосуществованием с другими драйверами GPU. GLVND (Графический Поставщик Библиотеки Нейтральный Дисплей) стал вещью в Xorg 1.20 и позволил нескольким драйверам GPU быть загруженными и включение сервера дисплея. Это позволяет детализированное управление - каждое приложение может использовать отдельные драйверы. На практике это - почти всегда о Intel и Nvidia GPU в ноутбуках Optimus. Существует теперь три режима prime-select, позволяет Вам выбрать из:

  • intel
  • , по запросу
  • , режим nvidia

intel физически поворачивает GPU Nvidia прочь, экономя дополнительную электроэнергию, но требует, чтобы перезагрузка включила его, и не только журнал. nvidia реверс.

Для людей, которые часто переключают режимы, режим по запросу рекомендуется - в on-demand, GPU, используемый для рисования программы, определяется переменными среды. Существуют различные переменные среды для OpenGL и приложений Вулкана, и если они не установлены, интегрированное (Intel) GPU используется. См. README Nvidia для полного объяснения на включенных переменных среды (__NV_PRIME_RENDER_OFFLOAD, __GLX_VENDOR_LIBRARY_NAME и __VK_LAYER_NV_optimus)

, В зависимости от которого серии драйверов поддерживают Ваш GPU, профиль по запросу не мог бы работать на Вас - самый старый поддерживаемый драйвер, кажется, 435 рядов.

4
ответ дан 1 December 2019 в 15:32

Другие вопросы по тегам:

Похожие вопросы: