AMD EPYC: Oprava SATA Hot-Swap s ahci.mobile_lpm_policy

Ako aktivovať SATA hot-swap na AMD EPYC (Rome/Milan) s Ubuntu 22.04. Problém: CONFIG_SATA_MOBILE_LPM_POLICY=3. Riešenie: ahci.mobile_lpm_policy=1 v GRUB-e.

Na serverových platformách AMD EPYC (generácie Rome aj Milan) nefunguje hot-swap SATA diskov v defaultnej konfigurácii Ubuntu 22.04 LTS alebo Proxmox VE 7.x. Príčinou je kernelová voľba CONFIG_SATA_MOBILE_LPM_POLICY=3. Riešením je boot parameter ahci.mobile_lpm_policy=1.

⚡ TL;DR (Rýchla pomoc): Pridaj ahci.mobile_lpm_policy=1 do GRUB_CMDLINE_LINUX_DEFAULT v /etc/default/grub → spusti sudo update-grub → restartuj server. Detaily nájdeš nižšie.


Čo sa deje? (Technické pozadie)

Príčina problému

Pri kompilácii Linux kernelu je možné nastaviť SATA Link Power Management (LPM) politiku pre čipsety prostredníctvom voľby CONFIG_SATA_MOBILE_LPM_POLICY. Ubuntu 22.04 Kernel 5.15 je skompilovaný s voľbou CONFIG_SATA_MOBILE_LPM_POLICY=3.

Toto nastavenie sa nazýva “Medium power with Device Initiated PM” a spôsobuje, že počas boot/PCI scanu sa odpoja nevyužité SATA porty a prejdú do režimu s nízkou spotrebou. Šetrí to energiu, čo je dôležité pre mobilné zariadenia, ale na serveroch znemožňuje hot-plug detekciu.

Dostupné voľby CONFIG_SATA_MOBILE_LPM_POLICY

Hodnota Popis Aj. názov
0 Ponechať nastavenia firmvéru (vanilla default) ATA_LPM_UNKNOWN
1 Maximálny výkon ATA_LPM_MAX_POWER
2 Stredná úspora ATA_LPM_MED_POWER
3 Stredná úspora + Device Initiated PM ATA_LPM_MED_POWER_WITH_DIPM ← Ubuntu 22.04
4 Minimálna spotreba ATA_LPM_MIN_POWER

⚠️ Poznámka: Voľba 4 je známa problémami s niektorými SSD/HDD a nemala by sa používať.

Prečo sa to nestalo v kerneli v5.19?

V linuxovom kerneli v5.19 sa síce zvažovalo nastaviť CONFIG_SATA_MOBILE_LPM_POLICY=3 ako globálny default, no kvôli problémom s hot-plugom sa od toho zámeru upustilo.


Ako sa prejavuje problém?

Symptóm 1: Hot-add (pripojenie disku)

Pri zapojení SATA disku za behu kernel nový disk vôbec nezdetekuje bez manuálneho rescanu.

Symptóm 2: Hot-removal (odpojenie disku)

Odpojenie disku za behu nie je kernelom spočiatku zaregistrované. Chyba sa objavuje až pri pokuse o read/write prístup na daný disk:

1[ 248.127538] ata5.00: exception Emask 0x10 SAct 0x1000000 SErr 0x90202 action 0x6 frozen
2[ 248.129086] ata5: SError: { RecovComm Persist PHYRdyChg 10B8B }
3[ 248.129859] ata5.00: failed command: READ FPDMA QUEUED
4[ 248.132985] ata5: hard resetting link
5[ 248.447963] ata5: SATA link down (SStatus 0 SControl 300)

Hardware, na ktorom bol problém testovaný

  • Základná doska: Supermicro H12SSL-NT (revízia 1.01 aj 1.02)
  • BIOS: Verzia 2.3 a 2.4
  • Šasi: SC825TQC-R802LPB s backplane BPN-SAS3-825TQ
  • Disk: SATA disk cez Slim-SAS kábel alebo priame pripojenie
  • Poznámka: S dedikovaným HBA (napr. Microsemi Adaptec 1000-8i) sa problém neobjavuje

Výskyt problému

Hot-swap problémy sa vyskytujú iba na AMD EPYC s defaultnou konfiguráciou Ubuntu 22.04 bez aplikovaného boot parametru. Na Intel Xeon Scalable 3. gen (testované na Supermicro X12DPi-N6) hot-swap funguje bez problémov.


Ako riešiť problém?

Manuálne nástroje (bez reštartu)

Ak potrebujete manuálne zdetekovať zapojený disk bez rebootu, môžete použiť tieto príkazy:

Variant 1: Cez utility nástroj (vyžaduje balík sg3-utils):

1sudo rescan-scsi-bus

Variant 2: Priame spustenie z shellu:

1sudo echo "0 0 0" | tee /sys/class/scsi_host/host*/scan

Permanentné riešenie: Zmena GRUB Boot Parametrov

Na Ubuntu, Debiane a väčšine distribúcií, ktoré používajú GRUB ako bootloader, sa boot parametre kernelu konfigurujú globálnym konfiguračným súborom /etc/default/grub.

Krok 1: Otvorenie GRUB konfigurácie

Otvor súbor v textovom editore:

1sudo nano /etc/default/grub

Krok 2: Úprava GRUB_CMDLINE_LINUX_DEFAULT

Vyhľadaj riadok začínajúci na GRUB_CMDLINE_LINUX_DEFAULT. Štandardne vyzerá:

1GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Pridaj parameter ahci.mobile_lpm_policy=1 na koniec (vnútri úvodzoviek):

1GRUB_CMDLINE_LINUX_DEFAULT="quiet splash ahci.mobile_lpm_policy=1"

Tip (nano): Zmeny ulož pomocou Ctrl + O (Enter), editor uzavri pomocou Ctrl + X.

Krok 3: Regenerácia GRUB konfigurácie

Aby sa zmeny zapísali do bootovacieho obrazu, spusti:

Na Ubuntu:

1sudo update-grub

Na čistom Debiane:

1sudo grub-mkconfig -o /boot/grub/grub.cfg

Krok 4: Reboot

1sudo reboot

⚠️ DÔLEŽITÉ: Zmeny sa prejavia až po reštarte operačného systému.


Verifikácia

Po úspešnom reštarte servera si over, že kernel naozaj beží s parametrom. Vypíš bootovací príkazový riadok:

1cat /proc/cmdline

Očakávaný výstup: Vo vypísanom riadku by si mal vidieť reťazec ahci.mobile_lpm_policy=1. Ak tam je, SATA hot-swap je funkčný. ✓


Kontextuálne poznámky

Windows kompatibilita: Na Microsoft Windows (Server 2022, Server 2019, Windows 10) sa žiadne hot-swap problémy nevyskytujú, pretože Windows používa svoj vlastný IRST (Intel Rapid Storage Technology) driver s odlišným prístupom k SATA LPM.

Diskréne HBA: Ak máš dedikovaný HBA kolektor (napr. Microsemi Adaptec 1000-8i), problém sa zvyčajne neobjavuje, pretože HBA má vlastný SATA controler nezávislý od FCH.


Referencie a zdroje