1 poin oleh GN⁺ 2025-02-18 | 1 komentar | Bagikan ke WhatsApp
  • Masalah terjadi: Pada desktop yang melakukan dual boot Windows dan Linux, muncul masalah sistem crash saat masuk ke mode sleep di Linux ketika penggunaan RAM besar. Saat sistem dibangunkan, layar hitam muncul atau sistem menjadi tidak responsif. Masalah ini disebabkan oleh bug manajemen daya/memori pada driver amdgpu.

  • Diagnosa masalah: Sistem yang menggunakan motherboard Gigabyte B550M DS3H dan GPU AMD RX 570 sedang menjalankan Arch Linux. Setelah sistem crash, log diperiksa melalui journalctl, dan ditemukan error kehabisan memori (OOM) di amdgpu_device_suspend. Driver NVMe gagal melakukan inisialisasi saat sistem dilanjutkan kembali sehingga sistem berhenti dan log tidak tercatat.

  • Upaya perbaikan: Konfigurasi systemd diubah untuk mencoba berbagai mode sleep, dan sleep asinkron dinonaktifkan untuk menyederhanakan masalah, tetapi akar masalah tidak terselesaikan. Dikonfirmasi bahwa crash terjadi dalam proses penghapusan buffer TTM milik amdgpu.

  • Penyebab masalah: Saat sistem masuk ke mode sleep S3, daya ke GPU PCIe diputus sehingga data VRAM hilang. Untuk mencegah hal ini, driver GPU harus mencadangkan VRAM ke RAM sistem, tetapi driver amdgpu di Linux mengalami kehabisan memori dan membuat sistem crash bila RAM tidak mencukupi.

  • Solusi: Mario Limonciello menulis patch kernel agar VRAM dicadangkan sebelum penyimpanan berbasis disk dihentikan. Patch ini mengubah proses pencadangan VRAM agar dilakukan pada tahap dpm_prepare() alih-alih dpm_suspend(), sehingga sleep dapat dibatalkan jika terjadi kekurangan memori.

  • Pemecahan masalah tambahan: Pengguna menulis skrip agar VRAM dicadangkan dari user space, memindahkan VRAM ke RAM sistem sebelum sistem tidur. Namun, saat beberapa aplikasi 3D berjalan, VRAM bisa terus dipindahkan kembali ke GPU sehingga crash tetap dapat terjadi.

  • Perbaikan akhir: Diubah agar pencadangan VRAM dilakukan pada tahap PM_SUSPEND_PREPARE dengan menggunakan API notifikasi manajemen daya. Dengan demikian, VRAM dapat dipindahkan ke RAM sistem sebelum swap dinonaktifkan, sehingga masalah terselesaikan.

  • Kesimpulan: Masalah ini terselesaikan melalui upaya banyak orang dan berbagai percobaan, dan direncanakan akan masuk ke Linux kernel 6.14.

1 komentar

 
GN⁺ 2025-02-18
Komentar Hacker News
  • Ada yang meragukan asumsi bahwa saat desktop masuk ke mode sleep S3, sistem memutus daya ke GPU PCIe

    • S3 seharusnya memutus daya ke semua hal selain RAM, tetapi motherboard Gigabyte Aorus memiliki masalah sehingga tidak bisa tidur atau bangun dengan benar karena bug sleep pada SSD NVMe
    • Untuk mengatasinya, perlu menambahkan aturan udev
    • Ada juga cara untuk mencegah wakeup dari port PCIe tertentu
    • Ada cara untuk menemukan perangkat wakeup PCIe yang bermasalah
    • Perintah udevadm dapat digunakan untuk memperoleh informasi perangkat
    • Masalah ini juga bisa diatasi dengan skrip shell
  • Penulis memreserver membagikan pengalaman melakukan debugging untuk memperbaiki masalah sleep di Linux

    • Ia menyoroti masalah bahwa Linux tidak dapat menjalankan hook suspend yang andal sebelum subsistem disk dan memori membeku
    • Sulit menemukan informasi terkait di Freedesktop Gitlab
  • Ada penjelasan tentang mengapa sulit mengimplementasikan fitur sleep di Linux dan mengapa proses debugging-nya juga sulit

    • Di ThinkPad P1G4, ada masalah kipas tidak mati secara otomatis
    • Ada juga pengalaman suara di headphone Bluetooth menjadi pecah setelah sleep
  • Pengguna ThinkPad berbasis Ryzen melaporkan mengalami masalah sleep di Linux dan menantikan versi 6.14

  • Ada komentar bahwa masalah "sleep/wake" ternyata merupakan masalah NP-complete

  • Ada pendapat bahwa ini akan membantu pengguna laptop Framework AMD yang memakai ekspansi GPU dan dual boot Linux/Windows

    • Ia menyatakan ingin memberikan donasi
  • Ada pengguna yang sedang berusaha memecahkan masalah PC yang hampir macet setelah sleep pada GPU AMD

    • Masalah itu muncul setelah mengganti RX 5700 XT ke RX 7900 XTX
    • Ia berharap versi 6.14 bisa menyelesaikan masalah tersebut
  • Ada yang membagikan pendapat bahwa selama menggunakan Linux, ia selalu mengalami masalah sleep

    • Bahkan dengan perangkat keras Intel, AMD, ATI, dan NVIDIA, sleep atau hibernasi sering kali tidak bekerja dengan benar
  • Ada yang membagikan pengalaman debugging masalah sleep pada perangkat keras IoT

    • Di Linux, hibernasi sistem lebih andal daripada sleep
    • Jika SSD cepat, memakai hibernasi sistem adalah pilihan yang baik
  • Ada penjelasan bahwa manajemen memori dan kondisi OOM masih merupakan masalah sulit di Linux

    • Menambah RAM untuk mengatasi masalah OOM adalah cara yang tidak efisien
    • Ada pendapat bahwa fitur debug shell di systemd berguna
    • Kuliah yang bermanfaat tentang subsistem kernel Linux tersedia secara online