AMD Ryzen ve Linux altında donma sorunu / AMD Ryzen and Freeze Under Linux
Linux kullanmaya başladığımdan bu yana oldukça tuhaf bir problem yaşıyordum. Bilgisayar normal operasyonlarda (yani oyun olsun, kod olsun, ofis işleri olsun) herhangi bir sorun olmadan çalışırken boş bıraktığımda (ne bileyim, kahve falan almaya gittiğimde) donma ya da tekrardan başlama sorunu yaşıyordum. Dürüst olmak gerekirse bu sorunu elektrik hattına bağlıyordum. Ancak hatları yeniledikten sonra da devam edince biraz daha detaylı bakmaya karar verdim.
Ortaya çıkan şey Ryzen işlemcilerin kullandığım Power Supply için fazla yeni olması gibi bir durumdu. Ryzen akıllı bir biçimde kullanılmayan çekirdeklerini derin uyku moduna (c6 modu olarak geçiyor bu) almaya çalışıyor ama power supply bunu desteklemediği için alet çakılıyor.
Bunu düzeltmek için iki yol var. Ya BIOS'tan ya da yazılımla C6 durumuna geçmesini engelleyeceksiniz.
BIOS - UEFI Metodu
Bu metodda yapmamız gereken iki adım var:
Anakartımızın Biosunu güncellemek (çünkü yeni gelmiş bir ayar bu)
BIOS/UEFI ayarlarından Power Supply Idle Control ayarını bularak bunu Typical Current Idle haline getirmek
Bu ayarı yaptıktan sonra bu sorunun olmaması gerekiyor. Bu bios güncellemesini yapmamızın temel sebebi, anladığım kadarıyla, Ryzenlar piyasaya sürüldüğünde kimsenin böyle bir sorun olduğunu farketmemesi. Ancak o dönemki güç kaynaklarının bu türden bir şeyi desteklemediği ortaya çıkınca AMD, bazı firmalar gibi "bize ne, gitsinler yeni PSU alsınlar" demeyerek böyle bir fix yaratıyor. Nitekim AMD'nin en sevdiğim tarafı bu, sizi böyle bir durum ortaya çıktığında ateşin içine atıp kaybolmuyorlar.
unraid 'den alıntılarsam:
[...]However, AMD understands that not everyone is in a position to replace their PSU with a contemporary 0A-rated unit. To help with that, AMD is also developing a firmware workaround for these power supplies, and will make it available through motherboard partners as a BIOS update in the future.
[...] Ancak AMD herkesin kendi güç kaynağını modern 0A-sınıfı bir birimle değiştirebilecek bir durumda olmadığını anlamaktadır. Bu yüzden AMD bu güç kaynaklarını da destekleyecek bir firmware çözümü geliştirmekte ve bu çözümü de ilerleyen zamanlarda anakart ortaklarının yayınlayacağı bir BIOS güncellemesi olarak erişilebilir kılacaktır.
Eğer bu ayar güncellemeden sonra bile gelmediyse, bazı firmalar yapmayabiliyor bu güncellemeyi, reddit'ten aldığım şu adımları izleyin:
/etc/modules-load.d/msr.conf dosyasını yaratarak bu satırları ekleyin
ZenStates-Linux deposunu githubdan klonlayın
disable-c6.sh adında bir script yaratın:
#  Disable c6 coming out of sleep
Bunu çalıştırılabilir hale getirin
Sorun yoksa /usr/lib/systemd/system-sleep/ klasörüne kopyalayın
disable-c6.service adında bir dosyayı /etc/systemd/system klasöründe yaratın ve bu satırları içine yazın:
Ve sistem yüklenirken de çalışmasını sağlayın
BIOS - UEFI Setting
Since I was using Linux I was having problems with the weirdest thing ever. Computer worked fine, can play games, watch videos but sometimes when it is idle (like when I went out to grab a coffee or smt) it froze or restarted itself under Linux. To be honest I blamed the electricity for this problem but after a renovation including the electrical wiring it continued to happen.
Well, turns out Ryzen is TOO SPANKING NEW for the PSU I was using. See, when the cpu thinks some of its cores are not used, it shuts them down for deep sleep(C6 state) BUT the power supply doesn't support this so this powering down results in a system lockup.
To fix this I needed to do two things:
Update Bios (I did this previously for an unrelated problem but still it is needed to enable the second step)
Find the Power Supply Idle Control in the BIOS settings and change it from auto to Typical Current Idle
After that the problem should go away. We need to update our bios to enable this option because, as far as I understood, when the Ryzens were first released nobody thought that would be a problem. But it turns out that most of the PSUs are unable to switch to this mode, so AMD created this fix to not to make us new power supplies supporting this mode. That's why I love AMD by the way. They don't leave you out to dry if something shifty like this happens.
To quote from unraid:
If it doesn't exist even after the update you need to disable the C6 States by following these steps: (taken from reddit