Jump to...
redirecting...

Log for Ubuntu 台灣社群

協助修復了 AMD GPU 在 Linux 下的睡眠喚醒掛起問題 (★ 106 分)

作者 nyanpasu64 詳述解決 AMD GPU 在 Linux 下因睡眠與喚醒操作而發生系統崩潰問題的過程,這項問題困擾多名使用者逾一年。文章主要記錄了作者如何協助找出驅動程式中的記憶體管理錯誤、參與上游除錯與測試,並成功協助推動核心修正提交。

問題主要源於自 Linux 進入 S3 睡眠模式時,系統會關閉 PCIe GPU 的電源,導致 VRAM(顯示記憶體)的資料遺失。為了儲存這些資料,驅動需要在系統睡眠前將 VRAM 中的資料轉存至系統 RAM,但由於 amdgpu 驅動在高 RAM 使用率下容易耗盡記憶體,導致睡眠失敗或系統掛起。即便嘗試釋放 RAM 至磁碟交換分頁(swap),仍因核心在某些階段停用 swap 而無法完全解決。

作者首先透過調查系統日誌與 amdgpu 驅動程式程式碼,結合使用串列控制檯、反編譯工具(如 Ghidra),定位問題的具體原因,包括記憶體分頁錯誤與函式呼叫順序不當。隨後,與 amdgpu 開發者(例如 Mario Limonciello)合作,提議並測試不同的方法,包括驅動層次的 VRAM 備份重構與使用者空間工作環境中的暫存替代方案。最終,Mario 開發的核心補丁透過 Linux 的電源管理通知(PM notifier)介面實現 VRAM 備份,成功解決了多數情境下的崩潰問題,修正程式將於 Linux 核心 6.14 穩定版本中發布。

本文也探討了替代解決方案如 `memreserver` 工具,並總結此項 bug 修復歷時一年以上,涉及多名開發者的合力調查與改進,充分顯示開源社群在解決複雜技術問題上的協作價值。

👥 10 則討論、評論 💬
https://news.ycombinator.com/item?id=43071983
好奇到底差到哪裡?
Gnome幾乎沒有自訂手勢可以選啊 三指四指上下滑左右滑之類的
哇!那真是糟透了
[sticker](media:AAMCBQADHQI9GfldAAECBX5ntCTHZogJc4IRPig2653gnoj_jgACgAoAAhdPQFW1LZVZioAwzAEAB20AAzYE@telegram)
因為developer 都是開terminal 打字,根本不用touchpad XD
好像有簡單的...幾年前有玩過