Jádro Linuxu má při hibernaci uspávat i PCIe můstky kvůli energetické certifikaci
Při uspání do paměti umí Linux převést můstky PCI Express do úsporného stavu, při hibernaci to nikdy nedělal. Záplata Maria Limonciella z AMD obě cesty srovnává a jako důvod uvádí kritéria energetických certifikací, hlavně u sestav se samostatnou grafickou kartou. Správce podsystému PCI ji poslal 21. října do jádra 7.4.

Když počítač s Linuxem jde do hibernace, uloží obsah paměti na disk a vypne se. Část sběrnice PCI Express přitom na spoustě desek zůstane pod plným napětím: můstky, pod kterými visí další zařízení, drží stav D0, jako by se nic nedělo. Záplata Maria Limonciella z AMD to mění a nechává jádro chovat se při hibernaci stejně jako při uspání do paměti.
Dvě cesty, které se rozešly
Uspání do paměti a hibernace jsou pro jádro dva různé průběhy. Při uspání do paměti (stav S3 podle normy ACPI) zůstane obsah paměti v čipech RAM a počítač odebírá jen málo proudu. Při hibernaci (S4) se obraz paměti zapíše na disk a stroj se vypne; po zapnutí ho zavaděč načte zpátky. Zařízení na PCI Express k tomu mají vlastní stupnici napájecích stavů od D0, tedy plného provozu, po D3cold, kdy zařízení nemá napětí vůbec.
Při uspání do paměti funkce pci_pm_suspend_noirq() uloží stav zařízení a můstky, pod kterými je další osazené zařízení, převede do D3hot nebo D3cold, pokud to deska dovolí. Cesta pro hibernaci, pci_pm_poweroff_noirq(), tohle nedělala nikdy: volala pci_prepare_to_sleep() jen pro zařízení bez potomků. Můstek s aktivním potomkem tak zůstal v D0.
Firmware to za operační systém neudělá
V popisu změny to Limonciello vysvětluje takto (přeloženo): „Na mnoha konstrukcích nechá firmware desky můstky být, když systém přechází do S4. To brání splnit různá kritéria energetických certifikací pro různé části světa, zvlášť u sestav se samostatnou grafickou kartou.“
Kterou certifikaci má na mysli, popis neříká. Evropské nařízení 617/2013, které stanoví požadavky na ekodesign počítačů, počítá celkovou roční spotřebu z příkonu v klidovém stavu, v režimu spánku a ve vypnutém stavu. Režim spánku v něm odpovídá stavu ACPI G1/S3, vypnutý stav G2/S5; hibernace, tedy S4, se v jeho definicích nevyskytuje. Samotné limity jsou od 1. ledna 2016 u stolních počítačů podle kategorie 94 až 150 kWh za rok a u notebooků 27 až 60,5 kWh za rok, přičemž samostatná grafická karta povolenou hodnotu zvedá – první karta v sestavě o 18 kWh za rok u nejslabší třídy G1 až o 122 kWh u nejsilnější G7.
Proč se tím hibernace nerozbije
Vypnout můstek, pod kterým visí disk nebo grafika, zní riskantně. V běžném průběhu to riziko není: obraz paměti je hotový dřív, než se na cestu poweroff_noirq vůbec dojde, a jeho obnova vždycky probíhá přes úplný start počítače, který sběrnici projde znovu a linky natrénuje nanovo.
Horší případ je hibernace, která se na poslední chvíli zruší. Tehdy se systém vrací bez restartu a volá se pci_pm_restore_noirq(). Záplata proto dává i téhle funkci stejné ošetření stavu D3cold, jaké už měla obdoba pro probuzení z uspání: můstek se nejdřív zapne a teprve pak se spouští obnova zařízení pod ním. Přibyla i pojistka pro ovladače – když si ovladač zařízení vypnul sám a neuložil jeho konfiguraci, jádro už se mu do ní nepokouší sáhnout. A pokud některé zařízení pod můstkem musí zůstat v D0, třeba proto, že je nastavené jako zdroj probuzení, nechá jádro v D0 i ten můstek. Platí to stejně jako u uspání do paměti.
Rozsah je na takový popis malý: 23 přidaných a 4 ubrané řádky v souboru drivers/pci/pci-driver.c. Předchází mu druhá záplata téhož autora, která vytáhla společný kód z funkce pro uspání do samostatné pomocné funkce a sama žádnou změnu chování přinést nemá.
Kde to leží teď
Šestou verzi dvojice záplat poslal Limonciello do konference linux-pci 30. září. Správce podsystému Bjorn Helgaas ji zapsal do svého stromu o 26 minut později, vyzkoušel ji Eric Naim z distribuce CachyOS a souhlas připojil Rafael J. Wysocki z Intelu, který má v jádře na starosti správu napájení.
Jádro 7.3 vyšlo 18. října a slučovací okno příští verze je otevřené. Helgaas poslal 21. října Linusi Torvaldsovi žádost o začlenění změn podsystému PCI do jádra 7.4 a hibernační úpravu v ní vypisuje mezi změnami ve správě napájení. Ve stromu Torvaldse nebyly tyhle změny 23. října odpoledne ještě založené.
Ve stejné dávce jedou další dvě úpravy napájení: zákaz stavu D3 na výstupních portech přepínačů PLX PEX 8532, 8533 a 8548, kde přechod do D3hot položí celý přepínač, a návrat registrů BAR poté, co se zařízení při procházení sběrnice zapne.
Kolik wattů to na konkrétním počítači ubere, popis změny neuvádí a žádné měření u něj není. Doložené je jen to, že můstků, které při hibernaci zůstanou pod napětím, bude méně – a budou to právě ty, které se při uspání do paměti vypínají už dnes.
Zdroje
- PCI: Align hibernate poweroff flow with suspend flow for bridges, Mario Limonciello (AMD), konference linux-pci, 30. 9. 2026
- Znění záplaty ve stromu podsystému PCI, git.kernel.org
- [GIT PULL] PCI changes for v7.4, Bjorn Helgaas, 21. 10. 2026
- Linux 7.4 Brings Hibernation Improvement For Helping Meet Energy Certifications, Phoronix, 23. 10. 2026
- Nařízení Komise (EU) č. 617/2013 ve znění k 9. 1. 2017, EUR-Lex