LINUX.ORG.RU

Диагностика проблем с видеокартой AMD Radeon

 , , , ,


0

2

Доброго дня, ЛОРчане!

Есть уже достаточно древняя видео карточка AMD Radeon R9 270X, от ASUS (R9270X-DC2T-4GD5) c 4-мя ГиБ GDDR5 памяти. На днях произошла некая поломка, которую я пытаюсь идентифицировать. Хоть карточка и древняя, но время сейчас не самое удачное для покупки новой. Да и в любом случае было бы интересно разобраться в причинах.

Система работала нормально, просто рабочий стол и зависла совершенно полностью, помог только Reset. После включения на экране появились надписи POST вперемешку с красными горизонтальными линиями высотой в символ (на экране текстовый режим) и шириной в половину экрана. Дальше появился GRUB так же в текстовом режиме. Хотя до этого всегда работал в графическом. Между буквами меню отображались артефакты похожие на символы псевдографики (но не они) зелёного цвета. В UEFI (BIOS) setup войти не удалось, вероятно из-за того, что он работает в графическом режиме. А может быть и удалось. Непонятно, после нажатия Delete просто чёрный экран.

Карточку извлёк, разобрал, почистил от пыли. Поменял термопасту (оригинальная совсем высохла). Собрал. В процессе никаких видимых повреждений, вроде проблемных конденсаторов или следов явного перегрева, я не обнаружил. Естественно разборка и сборка не помогла.

В UEFI (BIOS) setup выставил встроенную в процессор, после этого система стала загружаться нормально. Но R9 279X, естественно, от этого работать не начала. Драйвер ядра её определяет, но выдаёт жалобы:

[    8.186075] [drm] amdgpu kernel modesetting enabled.
[    8.186151] amdgpu: Topology: Add CPU node
[    8.186241] amdgpu 0000:01:00.0: enabling device (0000 -> 0003)
[    8.186375] amdgpu 0000:01:00.0: amdgpu: Trusted Memory Zone (TMZ) feature not supported
[    8.408867] amdgpu 0000:01:00.0: amdgpu: Fetched VBIOS from ROM BAR
[    8.408873] amdgpu: ATOM BIOS: 113-AD61600-110
[    8.419350] amdgpu 0000:01:00.0: amdgpu: VRAM: 4096M 0x000000F400000000 - 0x000000F4FFFFFFFF (4096M used)
[    8.419354] amdgpu 0000:01:00.0: amdgpu: GART: 1024M 0x000000FF00000000 - 0x000000FF3FFFFFFF
[    8.419654] [drm] amdgpu: 4096M of VRAM memory ready
[    8.419656] [drm] amdgpu: 4096M of GTT memory ready.
[    8.420271] amdgpu 0000:01:00.0: amdgpu: PCIE GART of 1024M enabled (table at 0x000000F400000000).
[    8.420606] [drm] amdgpu: dpm initialized
[    8.619939] [drm:uvd_v3_1_hw_init [amdgpu]] *ERROR* amdgpu: UVD Firmware validate fail (-22).
[    8.620110] [drm:amdgpu_device_ip_init [amdgpu]] *ERROR* hw_init of IP block <uvd_v3_1> failed -22
[    8.620282] amdgpu 0000:01:00.0: amdgpu: amdgpu_device_ip_init failed
[    8.620313] amdgpu 0000:01:00.0: amdgpu: Fatal error during GPU init
[    8.620589] amdgpu: probe of 0000:01:00.0 failed with error -22

После загрузки карточка в системе никак не задействуется.

По совету я попробовал её перепрошить на ту же версию VBIOS и это даже помогло один раз. Я прошил, перезагрузил комп, посмотрел dmesg, указанных ошибок там больше не было. Я запустил DRI_PRIME=1 glxgears (DRI_PRIME, т.к. основной была выставлена встроенная), шестерёнки отображались корректно. Проверил glxinfo - информация корректная. Я запустил ещё штук 5 glxgears чтобы немного нагрузить карточку. И система опять намертво зависла, пришлось использовать Reset. После перезагрузки карточка опять оказалась не задействованной, и в dmesg я обнаружил такие же ошибки, как и были (как и написаны выше). Попробовал прошить ещё раз, но это уже не помогло. Сначала я упёрся в ошибку утилиты amdvbflash* сообщающую, что прошивка уже была проведена. Обойти эту проблему помог ключ -fa и прошивка прошла. Однако в этот раз пробема никуда не делась и карточка осталась в нерабочем состоянии. Я попробовал и другую версию VBIOS - ничего. Правда я не уверен, что прошивка действительно в эти разы работала нормально. Несмотря на то, что утилита для прошивки писала
20000/20000h bytes programmed
20000/20000h bytes verified
,
при явной проверке контрольной суммы она отличалась от контрольной суммы файла с прошивкой.

Пробовал в этом же слоте другую карточку от NVIDIA - работает нормально. Т.е. с большой вероятностью, это не проблема слота или материнской платы. Карточку AMD пока не пробовал в другом системнике, надо его ещё собрать.

Поскольку одна перепрошивка всё же помогла, у меня есть мысль заменить микросхему памяти. Однако я не уверен, что дело всё таки в микросхеме памяти с прошивкой, ведь работа карточки нарушалась уже после загрузки. Хотя я не знаю, используется ли VBIOS после того как карточка была инициализирована или он нужен только в самом начале после включения.

Что ещё можно попробовать с ней сделать кроме как выбросить?

Примечания:
* - Почему-то amdvbflash_linux_4.69 карточку не видит вообще, что с загруженным драйвером, что без него. Поэтому все манипуляции с прошивкой пришлось проводить из FreeDOS.

★★★★★

Последнее исправление: ls-h (всего исправлений: 4)

Плату нужно разобрать, промыть изопропиловым спиртом в ультразвуковой ванне, продуть сжатым воздухом и затем хорошенько прогреть паяльным термофеном. Потом всё собрать, перепрошить и проверить работу.

iZEN ★★★★★
()
Ответ на: комментарий от GPFault

Плавающая проблема взаимодействия GPU с памятью.

Так что указывать последним числом? Количество чипов или общий объём памяти? Вот в статье написано, что общий объём памяти. Ссылку на статью дал выше unixnik, там и скачал этот скрипт.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

В этом скрипте путанный код и параметры на самом деле вообще имеют мало значения. Наиболее полная дискуссия о нём тут - https://vlab.su/viewtopic.php?f=48&t=100822

Но там 30 страниц, едва ли вам оно надо.

Ещё у меня есть менее замороченный вариант скрипта https://github.com/galkinvv/galkinvv.github.io/blob/master/direct-mem-test.py

Существенно из вывода вот что: Доля ошибок порядка 1/8.9 - то есть менее чем 1/8, то есть скорее всего проблема взаимодействия только с одной микросхемой памяти.

Первая ошибка по адресу 1537=0x601

Дальше надо значть соотвествие между адресами и чипами, а оно известно только для более новых amd gcn4 RX470-590:

Адреса против часовой стрелки он нижнего левого: 0x200, 0x300, 0x0, 0x100, 0x400, 0x500, 0x600, 0x700.

То есть там диапазоны памяти по 0x100 на микросхему.

И именно это пытались захардкодить в dmgg.py

Но! Для серии 270x (gcn1) экспериментов думаю никто не проводил, автор dmgg.py - так точно.

Если для gcn1 оно такое же - то у вас проблема взаимодействия с предпоследним чипом (против часовой стрелки, т.е. верхний, второй слева).

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

GPFault ★★
()
Ответ на: комментарий от GPFault

Также если есть визуальные артефакты без активного драйвера - то адреса можно вычислять прямо по монитору без всяких программ.

Отсчёт от верхнего левого угла, смотрим первую гризонтальную линию пикселей. Каждый пиксель - 4 байта.

GPFault ★★
()
Последнее исправление: GPFault (всего исправлений: 1)
Ответ на: комментарий от GPFault

Ещё у меня есть менее замороченный вариант скрипта

А его с какими параметрами запускать надо?

0x601

Имеет смысл попробовать принудительно прошить VBIOS от версии с 2GiB, как тут советовали? По идеи на ремонтопригодность это не должно повлиять. Как-нибудь всё таки отнесу её.

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

можно вообще ничего не прошивать, а прокидывать ее в виртуалку, «дав» ей любой желаемый биос.

$ virsh dumpxml win10 |rg rom
      <rom file='/usr/share/qemu/1080_patched.rom'/>

всё лучше постоянных ребутов и шитья в досе

s-o
()
Последнее исправление: s-o (всего исправлений: 2)
Ответ на: комментарий от ls-h

Ещё у меня есть менее замороченный вариант скрипта

А его с какими параметрами запускать надо?

Начальный адрес вида d0000000 и количество мегабайт для теста вида 20

Он менее замороченный в плане «1 программа - 1 задача» - он не содержит таблицу соотвествия адресов и чипов, а просто выводит адрес с ошибкой и диапазоны адресов с отсутствием ошибок. Интерпретация адресов на чипы - остаётся на усмотрение пользователя. Поэтому параметра «количество чипов» у него нет

GPFault ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.