Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Обновление PCI GPU; передача

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Обновление PCI GPU; передача, Proxmox Виртуальная Среда
     
    levix
    Guest
    #1
    0
    08.07.2020 04:28:00
    Я купил новую видеокарту для обновления моего игрового Windows VM. У меня была Radeon RX 560, а теперь я установил Radeon 5500 XT. Карта установлена, работает с драйверами vfio-pci, и я смог добавить устройство в свой Windows VM. Затем мне нужно перезагрузить весь сервер, и VM загружается, показывая карту в "Диспетчере устройств" как базовый адаптер. Я устанавливаю драйвера для карты, и устройство наконец-то переключается на распознанное в "Диспетчере устройств" как 5500 XT и показывает, что работает правильно, но программное обеспечение AMD говорит, что драйвера AMD не установлены. Я перезагружаю свой VM, думая, что ему просто нужен хороший перезапуск после установки, чтобы начать работать. Перезагрузка VM зависает на экране загрузки Windows с вращающимися точками и никогда не восстанавливается. Поэтому я снова перезагружаю весь сервер, что позволяет VM наконец загрузиться, но устройство не работает с кодом 43, и AMD продолжает заявлять, что драйвера не установлены. Я снова вручную устанавливаю драйвер, однако карта говорит, что работает всего несколько секунд, а затем снова перестает работать. Я также не могу выключить VM без полной перезагрузки сервера, чтобы снова запустить VM; ничего из этого у меня не было с RX 560. Кроме того, я создал совершенно новый VM и переустановил Windows с теми же проблемами. Похоже, всё идет не так, как только на гостевую операционную систему устанавливаются драйвера. И я все еще вижу терминальный вывод с карты, так что я знаю, что устройство тоже не полностью монтируется в VM. Да, я добавил все конфигурационные файлы для всего этого и заблокировал все драйвера, которые могли бы быть проблемой. Я в замешательстве. Если у кого-то есть идеи, буду признателен. Работает это на последнем Proxmox 6.2 с: AMD Ryzen 5 1600 на материнской плате MSI B450. Спасибо!
     
     
     
    bonix
    Guest
    #2
    0
    26.07.2020 19:02:00
    Поскольку я использую старые сервера HP (DL160G6 и DL390pG8), я обычно перекомпилирую текущий ядро Proxmox с патчем для драйвера intel-iommu, чтобы убрать проверки RMRR. После многих мучительных и разочаровывающих попыток передать старую видеокарту Nvidia (750Ti) в виртуальную машину с Windows 10 и столкнувшись с этой знаменитой ошибкой 43, я заменил карту на Radeon 5500 XT. Теперь я столкнулся с проблемами из-за очень странного способа сброса GPU. К счастью, я нашел эту тему и ссылку на патч ядра. Даже если этот патч предназначен только для Navi10, я обнаружил, что он работает и для 5500XT (Navi14)! Мне просто нужно было добавить PCI Id моей карты в список Id в конце патча: Код: static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
           { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
                    reset_intel_82599_sfp_virtfn },
    @@ -3836,6 +3961,14 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
           { PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
           { PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
                   reset_chelsio_generic_dev },
    +       { PCI_VENDOR_ID_ATI, 0x7310, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x7312, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x7318, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x7319, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x731a, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x731b, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x731f, reset_amd_navi10 },
    +       { PCI_VENDOR_ID_ATI, 0x7340, reset_amd_navi10 },  <== мое добавление к оригинальному патчу (см. вывод lspci)!
           { 0 }
    }; Теперь я могу перезапускать свою виртуальную машину с Windows 10 без проблем, и процедуру сброса можно наблюдать, следя за вентиляторами моей карты - при запуске виртуальной машины они приятно останавливаются и перезапускаются... @levix: если тебе интересно, я могу предоставить мой пакет deb ядра (5.4.44-2-pve) для тестирования... с наилучшими пожеланиями, Ральф
     
     
     
    jw-it
    Guest
    #3
    0
    18.09.2020 22:25:00
    Я только что прошел процесс создания патч-файла, который учитывает уже существующие патчи в 'pve-kernel/patches/kernel'. Я решил написать об этом, чтобы помочь следующему, кто столкнется с этой задачей, сделать это немного быстрее. Чтобы создать патч, я клонировал pve-kernel с помощью "git clone git://git.proxmox.com/git/pve-kernel.git", один раз выполнил "make" (чтобы загрузить все исходные файлы и применить тот дурацкий патч, который также затрагивает "quirks.c" — потому что мне было лень разбираться другим способом), добавил необходимый код в копию "quirks.c", создал патч с помощью "diff -u quirks.c.ORIGINAL quirks.c.PATCHED >> 0008-fix-navi-reset-bug-v2.patch" и исправил неверные пути к файлам в патч-файле. Теперь я удалил все лишнее, оставив только патч, начал с клонирования, добавил патч в "./pve-kernel/patches/kernel/", снова выполнил "make", чтобы получить несколько deb-файлов, которые установил с помощью "dpkg -i *.deb", перезагрузил систему и наконец смог запустить-остановить-перезапустить свою Windows VM с 5500XT (как "0x7340") в режиме passthrough (как моя единственная видеокарта в pve-системе) как нормальный человек. Спасибо @gnif на форуме level1techs за создание кода в первую очередь; вы можете найти его v2 патч здесь в теме о сбое сброса navi. Также спасибо всем остальным за всю информацию, которую я смог выкачать из интернета в процессе .. слишком много, чтобы перечислять, но тем не менее спасибо всем, кто делится знаниями (даже после того, как они решили свою проблему). Чтобы самостоятельно патчить ядро, просто скопируйте и создайте патч-файл (см. ниже) и выполните следующие команды: ПРИМЕЧАНИЕ и для справки: коммит pve-kernel "ceee458 (HEAD -> master, origin/master, origin/HEAD) bump version to 5.4.60-2", пока могу только сказать, что это работает. Bash: cd /usr/src/ git clone git://git.proxmox.com/git/pve-kernel.git cd pve-kernel cp /PATH/TO/0008-fix-navi-reset-bug-v2.patch patches/kernel/ make # подождите и смотрите на bpytop ;) netdata и любой другой хороший инструмент, чтобы увидеть, как машина потеет dpkg -i *.deb reboot # профит патч-файл "0008-fix-navi-reset-bug-v2.patch" Diff: --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -4086,6 +4086,133 @@ return 0; } + +/* + * Графические процессоры AMD серии Navi 10 требуют специфической для производителя процедуры сброса. + * Согласно AMD, сброс в режиме PSP 2 должен быть достаточным, однако на данный момент детали того, как это сделать, нам недоступны. + * Вместо этого мы можем сигнализировать SMU о входе и выходе из BACO, что дает тот же желаемый эффект. + */ +static int reset_amd_navi10(struct pci_dev *dev, int probe) +{ + const int mmMP0_SMN_C2PMSG_81 = 0x16091; + const int mmMP1_SMN_C2PMSG_66 = 0x16282; + const int mmMP1_SMN_C2PMSG_82 = 0x16292; + const int mmMP1_SMN_C2PMSG_90 = 0x1629a; + + u16 cfg; + resource_size_t mmio_base, mmio_size; + uint32_t __iomem * mmio; + unsigned int sol; + unsigned int timeout; + + /* + * если у устройства есть FLR, возвращаем -ENOTTY, указывая на то, что у нас нет метода сброса, специфичного для устройства. + */ + if (pcie_has_flr(dev)) + return -ENOTTY; + + /* сбросы шины все еще вызывают сбой navi */ + dev->dev_flags |= PCI_DEV_FLAGS_NO_BUS_RESET; + + if (probe) + return 0; + + /* мапим BAR5 */ + mmio_base = pci_resource_start(dev, 5); + mmio_size = pci_resource_len(dev, 5); + mmio = ioremap_nocache(mmio_base, mmio_size); + if (mmio == NULL) { + pci_disable_device(dev); + pci_err(dev, "Navi10: не удалось iomap устройство\n"); + return 0; + } + + /* сохраняем состояние PCI и включаем доступ к памяти */ + pci_read_config_word(dev, PCI_COMMAND, &cfg); + pci_write_config_word(dev, PCI_COMMAND, cfg | PCI_COMMAND_MEMORY); + + #define SMU_WAIT() \ + for(timeout = 1000; timeout && (readl(mmio + mmMP1_SMN_C2PMSG_90) & 0xFFFFFFFFL) == 0; --timeout) \ + udelay(1000); \ + if (readl(mmio + mmMP1_SMN_C2PMSG_90) != 0x1) \ + pci_info(dev, "Navi10: ошибка SMU 0x%x (строка %d)\n", \ + readl(mmio + mmMP1_SMN_C2PMSG_90), __LINE__); + + pci_set_power_state(dev, PCI_D0); + + /* важно ждать, когда SOC будет готов */ + for(timeout = 1000; timeout; --timeout) { + sol = readl(mmio + mmMP0_SMN_C2PMSG_81); + if (sol != 0xFFFFFFFF) + break; + udelay(1000); + } + + if (sol == 0xFFFFFFFF) + pci_warn(dev, "Navi10: время ожидания истекло, продолжая все равно\n"); + + /* проверяем индикатор признаков жизни */ + if (sol == 0x0) { + goto out; + } + + pci_info(dev, "Navi10: выполняем сброс BACO\n"); + + /* сохраняем состояние вокруг сброса */ + pci_save_state(dev); + + /* SMU может быть уже занят, ждем его */ + SMU_WAIT(); + + /* отправляем PPSMC_MSG_ArmD3 с параметром */ + writel(0x00, mmio + mmMP1_SMN_C2PMSG_90); + writel(0x00, mmio + mmMP1_SMN_C2PMSG_82); // BACO_SEQ_BACO + writel(0x46, mmio + mmMP1_SMN_C2PMSG_66); + SMU_WAIT(); + + /* отправляем PPSMC_MSG_EnterBaco с параметром */ + writel(0x00, mmio + mmMP1_SMN_C2PMSG_90); + writel(0x00, mmio + mmMP1_SMN_C2PMSG_82); // BACO_SEQ_BACO + writel(0x18, mmio + mmMP1_SMN_C2PMSG_66); + SMU_WAIT(); + + /* ждем, пока регуляторы выключатся */ + mdelay(1000); + + /* отправляем PPSMC_MSG_ExitBaco */ + writel(0x00, mmio + mmMP1_SMN_C2PMSG_90); + writel(0x19, mmio + mmMP1_SMN_C2PMSG_66); + SMU_WAIT(); + + #undef SMU_WAIT + + /* ждем, пока регистр SOC станет действительным */ + for(timeout = 1000; timeout; --timeout) { + sol = readl(mmio + mmMP0_SMN_C2PMSG_81); + if (sol != 0xFFFFFFFF) + break; + udelay(1000); + } + + if (sol != 0x0) { + pci_err(dev, "Navi10: регистр sol = 0x%x\n", sol); + goto out; + } + +out: + /* размапим BAR5 */ + iounmap(mmio); + + /* восстанавливаем состояние и регистр команд */ + pci_restore_state(dev); + pci_write_config_word(dev, PCI_COMMAND, cfg); + return 0; +} + + +static const struct pci_dev_reset_methods pci_dev_reset_methods[] = { + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF, + reset_intel_82599_sfp_virtfn }, @@ -4097,9 +4224,18 @@ + { PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr }, + { PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID, + reset_chelsio_generic_dev }, + { PCI_VENDOR_ID_ATI, 0x7310, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x7312, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x7318, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x7319, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x731a, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x731b, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x731f, reset_amd_navi10 }, + { PCI_VENDOR_ID_ATI, 0x7340, reset_amd_navi10 }, + { 0 } }; + + /* + * Эти методы сброса, специфичные для устройства, находятся здесь, а не в драйвере, + * потому что когда хост присваивает устройство гостевой виртуальной машине, хост может нуждаться
     
     
     
    r.jochum
    Guest
    #4
    0
    18.09.2020 23:20:00
    У меня тоже есть видеокарта на базе Navi 10 (5700 XT), ваши результаты пригодятся, когда я захочу ее использовать в режиме passthrough.
     
     
     
    r.jochum
    Guest
    #5
    0
    19.09.2020 01:56:00
    @t.lamprecht есть ли шанс получить этот патч в pve-kernel?
     
     
     
    jw-it
    Guest
    #6
    0
    20.09.2020 15:55:00
    возможно, людям, которым повезло с этим (v2 в целом), стоит добавить свой идентификатор (например, 0x7340) сюда, это поможет большему количеству людей и сделает это более логичным (например, я не знаю ID 5700XT). хотя мне не важно, если это уже собрано с репозитория, рассылаемого kernel deb. ps @r.jochum: 5700xt и 5500xt — это Navi14, патч также работает для этого поколения, и это всего лишь имя/комментарий в скрипте, так что никаких особенностей аппаратного обеспечения из этого [отредактировано] и просто стараюсь сделать это более понятным.
     
     
     
    r.jochum
    Guest
    #7
    0
    20.09.2020 17:19:00
    Its: 1002:731f Код: 2d:00.0 VGA совместимый контроллер: Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT] (rev c1)
     
     
     
    t.lamprecht
    Guest
    #8
    0
    21.09.2020 12:38:00
    Я помню, что комментировал это где-то еще: по таким вопросам я предпочел бы обратиться к разработчикам, мне будет приятно перенести исправление из дерева Linus или дерева мейнтейнеров графики/AMD. Это имеет свои преимущества: * одобрено людьми с глубокими знаниями этой подсистемы и/или оборудования * помогает более широкой аудитории, чем специфичный для дистрибутива патч. Так каков статус работы над этим патчем в upstream?
     
     
     
    r.jochum
    Guest
    #9
    0
    21.09.2020 13:06:00
    Upstream задерживается, так как у людей проблемы с патчем, смотрите: [1]. 1: https://forum.level1techs.com/t/navi-reset-kernel-patch/147547/31
     
     
     
    t.lamprecht
    Guest
    #10
    0
    21.09.2020 13:52:00
    Мы определенно не хотим включать патч, который известно вызывает зависание некоторых систем при загрузке, ради функции, которая скорее экспериментальная.
     
     
     
    r.jochum
    Guest
    #11
    0
    21.09.2020 14:16:00
    Kernel 5.10 будет иметь "изменение в обработке сбросов", см. [1] 1: https://www.phoronix.com/scan.php?page=news_item&px=AMDGPU-Linux-5.10-First
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры