Всем привет.
Столкнулся с проблемой. После обновления пакетов на свежеустановленной ubuntu 24.04 с видео от AMD, вдруг появились вртефакты. Выглядит это
так.
Очевидно что проблемы в драйвере. Удаление и переустановка драйвера из репозитория не помогла. Решил поставить драйвер с
сайта AMD.
Скачал, установил пакет установщика
sudo dpkg -i amdgpu-install_6.2.60200-1_all.deb
Запустил установку:
sudo amdgpu-install
Но в процессе установки лрайвер не собрался. Выглядит это примерно так:
Building module:
Cleaning build area...(bad exit status: 2)
. /tmp/amd.iUoR6MTH/.env && make -j48 KERNELRELEASE=6.8.0-44-generic TTM_NAME=amdttm SCHED_NAME=amd-sched -C /lib/modules/6.8.0-44-generic/build M=/tmp/amd.iUoR6MTH.......(bad exit status: 2)
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/amdgpu-dkms.0.crash'
Error! Bad return status for module build on kernel: 6.8.0-44-generic (x86_64)
Consult /var/lib/dkms/amdgpu/6.8.5-2009582.24.04/build/make.log for more information.
dkms autoinstall on 6.8.0-44-generic/x86_64 succeeded for broadcom-sta
dkms autoinstall on 6.8.0-44-generic/x86_64 failed for amdgpu(10)
Error! One or more modules failed to install during autoinstall.
Refer to previous errors for more information.
* dkms: autoinstall for kernel 6.8.0-44-generic
...fail!
run-parts: /etc/kernel/postinst.d/dkms exited with return code 11
dpkg: error processing package linux-image-6.8.0-44-generic (--configure):
installed linux-image-6.8.0-44-generic package post-installation script subprocess returned error exit status 11
Errors were encountered while processing:
linux-headers-6.8.0-44-generic
linux-headers-generic-hwe-24.04
linux-generic-hwe-24.04
linux-image-6.8.0-44-generic
В логах примерно такое:
CC [M] /tmp/amd.H03KThtD/amd/amdgpu/../display/dc/basics/dc_common.o
CC [M] /tmp/amd.H03KThtD/amd/amdgpu/../display/dc/basics/dce_calcs.o
/tmp/amd.H03KThtD/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c: In function ‘dm_helpers_dp_mst_send_payload_allocation’:
/tmp/amd.H03KThtD/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:563:64: error: passing argument 2 of ‘drm_dp_add_payload_part2’ from incompatible pointer type [-Werror=incompatible-pointer-types]
563 | ret = drm_dp_add_payload_part2(mst_mgr, mst_state->base.state, new_payload);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| struct drm_atomic_state *
In file included from /tmp/amd.H03KThtD/include/kcl/header/drm/display/drm_dp_mst_helper.h:6,
from /tmp/amd.H03KThtD/include/kcl/backport/kcl_drm_dp_mst_helper_backport.h:25,
from /tmp/amd.H03KThtD/amd/backport/backport.h:57,
from <command-line>:
./include/drm/display/drm_dp_mst_helper.h:854:64: note: expected ‘struct drm_dp_mst_atomic_payload *’ but argument is of type ‘struct drm_atomic_state *’
854 | struct drm_dp_mst_atomic_payload *payload);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
/tmp/amd.H03KThtD/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:563:15: error: too many arguments to function ‘drm_dp_add_payload_part2’
563 | ret = drm_dp_add_payload_part2(mst_mgr, mst_state->base.state, new_payload);
| ^~~~~~~~~~~~~~~~~~~~~~~~
./include/drm/display/drm_dp_mst_helper.h:853:5: note: declared here
853 | int drm_dp_add_payload_part2(struct drm_dp_mst_topology_mgr *mgr,
| ^~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:243: /tmp/amd.H03KThtD/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.o] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [scripts/Makefile.build:481: /tmp/amd.H03KThtD/amd/amdgpu] Error 2
make[1]: *** [/usr/src/linux-headers-6.8.0-44-generic/Makefile:1925: /tmp/amd.H03KThtD] Error 2
make: *** [Makefile:240: __sub-make] Error 2
make: Leaving directory '/usr/src/linux-headers-6.8.0-44-generic'
DKMSKernelVersion: 6.8.0-44-generic
Date: Wed Sep 11 23:30:34 2024
DuplicateSignature: dkms:amdgpu-dkms:1:6.8.5.60200-2009582.24.04:/tmp/amd.H03KThtD/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm_helpers.c:563:64: error: passing argument 2 of ‘drm_dp_add_payload_part2’ from incompatible pointer type [-Werror=incompatible-pointer-types]
Package: amdgpu-dkms 1:6.8.5.60200-2009582.24.04
PackageVersion: 1:6.8.5.60200-2009582.24.04
SourcePackage: amdgpu-dkms
Title: amdgpu-dkms 1:6.8.5.60200-2009582.24.04: amdgpu kernel module failed to build
Оказалось что проблема в ядрах старше 6.8.0-41
И тут два варианта решения.
1. Откатить ядро:
#Устанавливаем старое ядро
sudo apt install linux-headers-6.8.0-41-generic linux-headers-6.8.0-41 linux-image-6.8.0-41-generic linux-modules-6.8.0-41-generic linux-modules-extra-6.8.0-41-generic linux-tools-6.8.0-41-generic linux-tools-6.8.0-41 -y
#Удаляем новое ядро
sudo apt remove linux-headers-6.8.0-44-generic linux-headers-6.8.0-44 linux-image-6.8.0-44-generic linux-modules-6.8.0-44-generic linux-modules-extra-6.8.0-44-generic linux-tools-6.8.0-44-generic linux-tools-6.8.0-44 -y
#Обновляем grub
sudo update-grub
После перезагрузки получите старое ядро, и необходимо повторить установку.
Что бы ядро не обновлялось его надо заморозить:
sudo apt-mark hold linux-*-6.8.0-41
Но есть второй вариант:
2. Пропатчить код драйвера:
#Перейдем в каталог сборки драйвера
cd /usr/src/amdgpu-6.8.5-2009582.22.04/amd/display/amdgpu_dm/
#Сделаем бэкам исходника
cp amdgpu_dm_helpers.c amdgpu_dm_helpers.c.orig
#Патчим
sed -i "s@mst_state->base.state,@\ @g" amdgpu_dm_helpers.c
И снова запускаем установку.
На этом все.