немного длинное повествование. просто хочу описать как это примерно получалось, процесс.
1) скачал дрова 17.40 пробовал варианты rhel7 и ubuntu.
2) распаковал.
3) прошивки firmware новые на место положил, в buildroot/output/build/linux-firmware-2e87d5268df346f92s48.
4) библиотеки в оверлей + систему линков сделал чётко, «/opt/amdgpu-pro» > "../usr" для убунту «/usr/lib/x86_64-linux-gnu» > "." для RHEL «/usr/lib64 > „lib“ это позволяет обходиться полностью без LD_LIBRARY_PATH
---
если собираю билдрут обычным макаром - то всё работает почти нормально, RX580 определяется, выставляется разрешение но две проблемы.
1) в dmesg видно что ругается на powerplay и можно управлять только скоростью вентилляторов (разгон карты и частоты не работает - в /sys/class/drm/... просто отсутствуют файлы для управления этими параметрами)
2) при попытки обращения к opencl (простейший clinfo например) в лучшем случае ловим segfault а обычно просто сразу моментальный ребут.
---
ясное дело - нужно пересобирать сам драйвер в ядре. делаю:
1) скопировал драйвера из скачанного распакованного пакета в разные места. пути вида usr/src/amdgpu-17.40-492261/amd > buildroot/output/build/linux-4.13.12/drivers/gpu/drm/amd/ также ttm, ещё пара каких-то фигней...
ps. если честно, я с трудом вникаю в огород который там нагородили из полуневнятных аббревиатур. моя задача проста - заставить пахать OpenCL на голом ядре.
2) также скопировал include в linux-4.13.12/include
3) в оригинальном linux-headers все те же файлы лежат, в том числе и .с исходники. поэтому я продублировал все эти же действия в linux-headers
4) пересобираю ядро на чистую (из состояния конфигурировано-скачано-распаковано-пропатчено) и не собирается ни amdgpu ни amdkfd. и действительно, компилятор прав - я посмотрел - там различается и число параметров, и типы... что за фигня? у стандартного ядра один интерфейс вызовов а дрова амдейцы пишут под какойто свой другой. о_О
куда копать, какие патчи применять? как превратить кракозябры от амд в нечто что ставится на простое обычное ядро?