From 11249d715e6db0690ad106eb45859acf5f5b6810 Mon Sep 17 00:00:00 2001 From: Fabio Date: Thu, 17 Sep 2026 01:03:03 +0200 Subject: [PATCH] first commit --- README.md | 496 +++++++++++++++++++++++++++++++++++++++++++++++ checksums.sha256 | 1 + 2 files changed, 497 insertions(+) create mode 100644 README.md create mode 100644 checksums.sha256 diff --git a/README.md b/README.md new file mode 100644 index 0000000..06ae798 --- /dev/null +++ b/README.md @@ -0,0 +1,496 @@ +# Procedura di ripristino OpenCL + Vulkan — Orange Pi 5 Plus / Debian 12 + +## Obiettivo + +Ripristinare l'accelerazione GPU sulla Orange Pi 5 Plus con: + +- Debian 12 Bookworm +- kernel Rockchip 6.1.x già presente +- kernel Mali DDK g21p0-01eac0 +- firmware Mali g21p0 +- userspace Mali g24p0-00eac0 +- Vulkan 1.3 +- OpenCL 3.0 + +La procedura non deve modificare kernel, DTB o U-Boot. + +# Attenzione + +Non eseguire apt upgrade, apt full-upgrade, aggiornamenti del kernel o modifiche al bootloader come parte di questa procedura. + +--- + +## 1. Verificare il sistema prima di iniziare + +Controllare versione Debian: + +` +cat /etc/debian_version +` + +Controllare il kernel: + +` +uname -a +` + +Controllare il driver Mali: + +` +dmesg | grep -E 'mali fb000000.gpu: (Kernel DDK|GPU identified|Probed as mali0)' +` + +Il kernel funzionante utilizzato nella procedura deve riportare: + +` +Kernel DDK version g21p0-01eac0 +` + +Controllare che il firmware attivo sia quello g21: + +` +readlink -f /lib/firmware/mali_csffw.bin +sha256sum /lib/firmware/mali_csffw.bin +` + +SHA-256 atteso: + +` +8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 +` + +--- + +## 2. Verificare che il servizio firmware automatico sia disabilitato + +Il servizio set-mali-firmware.service non deve sostituire automaticamente il firmware g21. + +` +systemctl is-enabled set-mali-firmware.service +` + +Risultato atteso: + +` +disabled +` + +Se è enabled, fermarsi e verificare la configurazione prima di procedere. + +--- + +## 3. Installare il firmware g21 + +Il firmware deve essere disponibile in: + +` +/lib/firmware/mali_csffw_g21p0/mali_csffw.bin +` + +Creare il link al firmware g21: + +` +sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin \ + /lib/firmware/mali_csffw.bin +` + +Verificare: + +` +readlink -f /lib/firmware/mali_csffw.bin +sha256sum /lib/firmware/mali_csffw.bin +` + +Deve risultare il firmware g21 con SHA-256: + +` +8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 +` + +--- + +## 4. Backup prima di installare il nuovo userspace + +Creare una directory di backup: + +` +sudo mkdir -p /root/mali-backup-g24-restore +` + +Salvare l'ICD OpenCL eventualmente esistente: + +` +if [ -f /etc/OpenCL/vendors/mali-arm64.icd ]; then + sudo cp -a /etc/OpenCL/vendors/mali-arm64.icd \ + /root/mali-backup-g24-restore/mali-arm64.icd.g13 +fi +` + +Salvare il firmware g21 come file reale: + +` +sudo cp -L /lib/firmware/mali_csffw.bin \ + /root/mali-backup-g24-restore/mali_csffw-g21.bin +` + +Verificare il backup: + +` +sha256sum /root/mali-backup-g24-restore/mali_csffw-g21.bin +` + +--- + +## 5. Installare il userspace Mali g24p0 + +Il pacchetto utilizzato nella configurazione funzionante è: + +` +libmali-g610-g24p0-x11-wayland-gbm.deb +` + +Esempio di percorso: + +` +/tmp/libmali-g610-g24p0-x11-wayland-gbm.deb +` + +Installare: + +` +sudo dpkg -i /tmp/libmali-g610-g24p0-x11-wayland-gbm.deb +` + +Il pacchetto installa, tra le altre cose: + +- libMaliVulkan.so.1 +- libMaliOpenCL.so.1 +- mali.json +- configurazione del linker +- firmware Mali + +# Importante + +Il pacchetto può installare il proprio mali_csffw.bin. Non lasciarlo attivo: il kernel in uso richiede il firmware g21. + +--- + +## 6. Ripristinare immediatamente il firmware g21 + +Dopo l'installazione del pacchetto: + +` +sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin \ + /lib/firmware/mali_csffw.bin +` + +Verificare: + +` +readlink -f /lib/firmware/mali_csffw.bin +sha256sum /lib/firmware/mali_csffw.bin +` + +Deve essere: + +` +/usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin +8e7c821a55ca1c345cc79f61243616dd25fc35b81f090946f302886d67712df5 +` + +--- + +## 7. Aggiornare la cache del linker + +` +sudo ldconfig +` + +È possibile che venga mostrato il warning: + +` +ldconfig: /lib/librknnrt.so is not a symbolic link +` + +Questo warning è indipendente da Mali e non va corretto come parte di questa procedura. + +--- + +## 8. Configurare OpenCL + +Il pacchetto g24 deve fornire: + +` +/usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 +` + +Controllare: + +` +ls -l /usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so* +` + +Creare l'ICD OpenCL g24: + +` +sudo mkdir -p /etc/OpenCL/vendors + +echo '/usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1' | \ + sudo tee /etc/OpenCL/vendors/mali.icd +` + +Verificare: + +` +cat /etc/OpenCL/vendors/mali.icd +` + +Deve contenere esattamente: + +` +/usr/lib/aarch64-linux-gnu/mali/libMaliOpenCL.so.1 +` + +Se è presente il vecchio ICD g13: + +` +/etc/OpenCL/vendors/mali-arm64.icd +` + +non cancellarlo. Spostarlo nel backup: + +` +sudo mv /etc/OpenCL/vendors/mali-arm64.icd \ + /root/mali-backup-g24-restore/mali-arm64.icd.g13 +` + +In questo modo clinfo vedrà una sola piattaforma ARM proprietaria. + +--- + +## 9. Configurare Vulkan + +Verificare che esista: + +` +ls -l /usr/share/vulkan/icd.d/mali.json +` + +Il contenuto atteso è equivalente a: + +` +{ + "file_format_version" : "1.0.0", + "ICD" : { + "library_path" : "libMaliVulkan.so.1", + "api_version" : "1.3.276" + } +} +` + +--- + +## 10. Verifica OpenCL senza reboot + +Eseguire: + +` +clinfo | grep -E \ +'arm_release_ver|Number of platforms|Platform Version|Device Name' +` + +Risultato atteso: + +` +arm_release_ver: g24p0-00eac0, rk_so_ver: 10 +Number of platforms 1 +Platform Version OpenCL 3.0 v1.g24p0-00eac0... +Device Name Mali-G610 r0p0 +` + +--- + +## 11. Verifica Vulkan senza dipendere da X11 + +Per evitare problemi se la sessione grafica X11 non è disponibile: + +` +VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json \ +vulkaninfo --summary +` + +Risultato atteso: + +` +driverVersion = 24.0.0 +deviceName = Mali-G610 +driverID = DRIVER_ID_ARM_PROPRIETARY +driverName = Mali-G610 +apiVersion = 1.3.276 +` + +# Nota + +Un semplice vulkaninfo --summary può fallire con un errore XCB se non esiste una connessione al server X. In quel caso utilizzare il comando con VK_ICD_FILENAMES mostrato sopra. + +--- + +## 12. Verifica del kernel prima del reboot + +` +dmesg | grep -E 'mali fb000000.gpu: (Kernel DDK|Loading Mali firmware|Mali firmware git_sha|GPU identified|Probed as mali0)' +` + +Devono essere presenti almeno: + +` +Kernel DDK version g21p0-01eac0 +GPU identified as 0x7 arch 10.8.6 r0p0 status 0 +Probed as mali0 +` + +Dopo che il firmware è stato utilizzato, deve comparire anche il git SHA g21: + +` +Mali firmware git_sha: 221d2b3e5f4cf47df6227ccb24c82c4e4baa986e +` + +--- + +## 13. Riavvio + +Prima del reboot verificare: + +` +systemctl is-enabled set-mali-firmware.service +readlink -f /lib/firmware/mali_csffw.bin +` + +Devono risultare: + +` +disabled +/usr/lib/firmware/mali_csffw_g21p0/mali_csffw.bin +` + +A questo punto: + +` +sudo reboot +` + +--- + +## 14. Verifica dopo il reboot + +### Kernel e firmware + +` +dmesg | grep -E 'mali fb000000.gpu: (Kernel DDK|Loading Mali firmware|Mali firmware git_sha|GPU identified|Probed as mali0)' +` + +Atteso: + +` +Kernel DDK version g21p0-01eac0 +GPU identified as 0x7 arch 10.8.6 r0p0 status 0 +Probed as mali0 +` + +e, quando il firmware viene inizializzato: + +` +Mali firmware git_sha: 221d2b3e5f4cf47df6227ccb24c82c4e4baa986e +` + +### Vulkan + +` +VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/mali.json \ +vulkaninfo --summary +` + +### OpenCL + +` +clinfo | grep -E \ +'arm_release_ver|Number of platforms|Platform Version|Device Name' +` + +Devono essere presenti: + +` +arm_release_ver: g24p0-00eac0, rk_so_ver: 10 +Number of platforms 1 +Platform Version OpenCL 3.0 v1.g24p0-00eac0... +Device Name Mali-G610 r0p0 +` + +--- + +## 15. Verifica finale dei pacchetti + +` +dpkg -l | grep -E 'libmali|mali-g610-firmware' +` + +Configurazione funzionante di riferimento: + +` +libmali-g610-x11 +libmali-valhall-g610-g24p0-x11-wayland-gbm +mali-g610-firmware +` + +La presenza contemporanea del vecchio pacchetto libmali-g610-x11 non impedisce il funzionamento, purché il vecchio ICD OpenCL g13 non sia attivo. + +--- + +## 16. Rollback + +# Non usare apt autoremove per fare rollback. + +Se è necessario tornare al precedente userspace g13: + +1. Non modificare kernel, DTB o U-Boot. +2. Ripristinare il firmware g21. +3. Ripristinare l'ICD g13. +4. Ripristinare il pacchetto libmali-g610-x11 se necessario. +5. Verificare OpenCL e Vulkan prima di un eventuale reboot. + +Ripristino firmware: + +` +sudo ln -sfn /lib/firmware/mali_csffw_g21p0/mali_csffw.bin \ + /lib/firmware/mali_csffw.bin +` + +Ripristino ICD g13: + +` +sudo mv /root/mali-backup-g24-restore/mali-arm64.icd.g13 \ + /etc/OpenCL/vendors/mali-arm64.icd +` + +# Nota + +Il rollback completo del userspace g13 dipende dal fatto che il relativo .deb sia ancora disponibile. Non rimuovere manualmente librerie a caso: prima verificare lo stato dei pacchetti con dpkg -l. + +--- + +## 17. Stato finale desiderato + +La configurazione verificata è: + +` +Kernel Mali g21p0-01eac0 +Firmware g21p0 +Userspace Mali g24p0-00eac0 + +Vulkan 1.3.276 +OpenCL 3.0 +GPU Mali-G610 r0p0 +OpenCL platforms 1 +` + +Questa procedura non richiede modifiche a kernel, DTB o U-Boot. diff --git a/checksums.sha256 b/checksums.sha256 new file mode 100644 index 0000000..54d45f9 --- /dev/null +++ b/checksums.sha256 @@ -0,0 +1 @@ +1cf044571e4e37170dcdc336cae4a6a583bc6e52d158df98725a7e0105ec5781 ./README.md