Satu set tambalan ke driver kernel AMDGPU Linux dan driver RADV Vulkan Mesa akan memungkinkan lebih mudah menyampaikan informasi tentang alasan mengapa GPU hang/reset terjadi sehingga perangkat lunak ruang pengguna dapat lebih mengetahui tentang masalah apa pun.
André Almeida dari perusahaan konsultan Igalia, yang bekerja dengan Valve dan pihak lain, telah mengirimkan draf tambalan ini untuk memperkenalkan informasi ioctl”bersalah”baru untuk mengkomunikasikan informasi tentang kejadian hang/reset GPU. Seri tambalan ini mengusulkan ioctl AMDGPU_INFO_GUILTY_APP untuk menyampaikan informasi tentang mengapa reset GPU terjadi dengan sumber daya terkait yang menyebabkan GPU hang.
Di ruang pengguna ada permintaan penggabungan Mesa ini untuk mengimplementasikan”get_guilty_info()”di dalam RADV driver Mesa Radeon Vulkan. Almeida berkomentar di MR tersebut:
Tujuan draf ini adalah untuk mengumpulkan umpan balik tentang antarmuka DRM yang diusulkan dan informasi yang dibuang. Seperti yang dinyatakan dalam deskripsi komit, tujuannya adalah untuk memudahkan Mesa devs untuk mencari tahu mengapa GPU mogok dengan lebih sedikit overhead, sehingga Mesa akan menjalankan panjang alamat umr-di [[email protected]]pada IB yang tepat yang menyebabkan hang jika aplikasi yang bersalah.
…
Saat ini, saat aplikasi mogok di Mesa, tidak banyak informasi tersedia untuk laporan bug. Pengguna dapat menjalankan aplikasi dengan RADV_DEBUG=hang dengan harapan untuk mendapatkan lebih banyak informasi, tetapi opsi ini memiliki beberapa overhead dan informasi yang dibuang tidak memiliki banyak konteks, membuat debug sesulit menemukan jarum di tumpukan jerami.Untuk mengatasi kedua masalah tersebut, perkenalkan fungsi kueri baru untuk menanyakan informasi kernel saat terjadi hang oleh aplikasi yang bersalah. Ini berarti bahwa aplikasi yang tidak bersalah tidak akan memiliki overhead dan sekarang kita hanya dapat membuang buffer tidak langsung yang bersalah, memudahkan pengembang untuk menemukan instruksi yang menyinggung yang menggantung GPU.
Satu-satunya informasi yang tersedia sejauh ini adalah IB alamat, ukurannya, dan id VM.
Kita akan melihat ke mana pekerjaan ini mengarah untuk membantu melacak penyebab hang/reset GPU AMD Radeon di Linux.