Athlon energiatakarékosság HOGYAN

Daniel Nofftz

2004.04.24

Verziótörténet
Verzió: 1.1.42004.04.24Átdolgozta: dn
A sis lapkakészlet parancssori hackje változott, új javítás az ugráló hanghoz, új folt a 2.6.5 rendszermaghoz.
Verzió: 1.1.32004.04.01Átdolgozta: dn
Kisebb frissítés.
Verzió: 1.1.22004.03.30Átdolgozta: dn
KT600 parancssoros hack hozzáadva, további bizonyítékok arra, hogy a hangprobléma javítása működik!
Verzió: 1.1.12003.12.18Átdolgozta: dn
Japán és portugál fordítás hozzáadva, a hangproblémák lehetséges javítása hozzáadva.
Verzió: 1.1.02003.10.04Átdolgozta: dn
Egy adag új információ és hivatkozás.

Tartalomjegyzék
1. Bevezetés
1.1. Az Athlon processzor energiatakarékos üzemmódjának alapjai
1.2. Szerzői jog és licenc
1.3. A felelősség teljes elhárítása
1.4. Visszajelzés
1.5. A dokumentum új verziói
1.6. Magyar fordítás
2. Különféle módszerek
2.1. Hackelés parancssorból
2.2. Az athcool program
2.3. BIOS frissítések
2.4. Rendszermag-folt
2.5. Az LVCool programot használó megoldás
2.6. Az FVCool program
2.7. AMD 760MP energiatakarékosság
3. Mi van még?
3.1. Az energiamegtakarítás működésének tesztelése
3.2. Ismert hibák és problémák
3.3. Javítás az ugráló hanghoz és egyéb problémákhoz
3.4. Egy másik javítás az ugráló hanghoz és egyéb problémákhoz (néhány VIA lapkakészlethez)
3.5. További teendők
3.6. Fordítások

1. Bevezetés


1.6. Magyar fordítás

A magyar fordítást Mócza Zsolt készítette (2003.10.20). A lektorálást Daczi László végezte el (2003.10.21). Utoljára frissítve 2004.05.07.-én. A dokumentum legfrissebb változata megtalálható a Magyar Linux Dokumentációs Projekt honlapján.


2. Különféle módszerek

Ebben a részben különféle módszereket mutatok be egyetlen cél elérése érdekében: ez pedig az energiatakarékosság Athlon-alapú rendszerünkön. Jelen pillanatban az én javaslatom az, hogy a "parancssoros hackelést" használjuk, mert a rendszermagfolt elavult és már nem fejlesztik tovább, az LVCool folt pedig csak egy lapkakészlet családot támogat. Az athcool program ígéretes, de én még nem teszteltem.

Ezen módszerek mindegyike beállítja a lapkakészlet északi hídjának "Lekapcsolódás engedélyezve STPGNT esetén" bitjét. Se többet se kevesebbet nem tesznek. Minden más feladatot a rendszermag ACPI alrendszere végez, mely elküldi az STPGNT szignált a processzornak, amikor acpi-c2 tétlen módba lép. (Egyedül az LVCool csinálja más módon...)

Ha jelenlegi rendszermagunk nem tartalmaz ACPI támogatást, engedélyezzük azt, és fordítsuk újra a rendszermagot. Az ACPI-beállításokat a General Setup+Power Management Setup->ACPI menüpontban találjuk. A következő beállításokat mindenképpen engedélyeznünk kell: ACPI Bus Manager, System és Processor.

Az új 2.4.22 rendszermag esetében: General Setup+ACPI Support. Legalább a következő opciót engedélyeznünk kell: Processor.

Néhány lapkakészlet az STPGNT szolgáltatást is támogatja, ha HLT jelzést észlel. Ezek az alaplapok/lapkakészletek nem igénylik az ACPI engedélyezését! Jelenleg visszajelzésre várok arra vonatkozóan, mely lapkakészletek működnek/nem működnek ACPI nélkül. Talán tesztelhetnéd az alaplapot, majd elküldhetnéd nekem az eredményt.


2.1. Hackelés parancssorból

A parancssoros hackelés használatához a rendszermagban engedélyezni kell az ACPI támogatást rendszerint, de egyes esetekben ez nem szükséges. Az energiatakarékos üzemmódot közvetlenül parancssorból, újraindítás nélkül ki- és bekapcsolhatjuk. Ezt a következő parancsokkal tehetjük meg:

KT133/133A, KX133, KL/KLE133, KM/KN133, ...(alapvetően szükséges az acpi engedélyezése):

bekapcsolás: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) | 0x80)))

kikapcsolás: setpci -v -H1 -s 0:0.0 52=$(printf %x $((0x$(setpci -H1 -s 0:0.0 52) & 0x7f)))

KT266/266A/333, KM266/333, ... :

bekapcsolás:

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) | 0x80)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) | 0x02)))

kikapcsolás:

setpci -v -H1 -s 0:0.0 92=$(printf %x $((0x$(setpci -H1 -s 0:0.0 92) & 0x7f)))

setpci -v -H1 -s 0:0.0 95=$(printf %x $((0x$(setpci -H1 -s 0:0.0 95) & 0xfd)))

KT400/KT600:

bekapcsolás:

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) | 0x80)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) | 0x02)))

kikapcsolás:

setpci -v -H1 -s 0:0.0 D2=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D2) & 0x7f)))

setpci -v -H1 -s 0:0.0 D5=$(printf %x $((0x$(setpci -H1 -s 0:0.0 D5) & 0xfd)))

SIS730/733:

bekapcsolás: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) | 0x01)))

kikapcsolás: setpci -v -H1 -s 0:0.0 6B=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6B) & 0xfe)))

SIS735/740/745/746/755:

bekapcsolás: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) | 0x0003)))

kikapcsolás: setpci -v -H1 -s 0:0.0 6A=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6A) & 0xfffc)))

Nforce:

bekapcsolás:

setpci -v -H1 -s 0:0.0 E7=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) | 0x06)))

setpci -v -H1 -s 0:0.0 6D=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6D) | 0x80)))

kikapcsolás:

setpci -v -H1 -s 0:0.0 E4=$(printf %x $((0x$(setpci -H1 -s 0:0.0 E7) & 0xf9)))

Nforce2 (acpi támogatás nélkül működik):

bekapcsolás: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) | 0x10)))

kikapcsolás: setpci -v -H1 -s 0:0.0 6F=$(printf %x $((0x$(setpci -H1 -s 0:0.0 6F) & 0xef)))

AMD751 és AMD760/761 (nem használható a 760MP-hez!!!) (ACPI nélkül működik):

bekapcsolás: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) | 0x06)))

kikapcsolás: setpci -v -s 0:0.0 0x62=$(printf %x $((0x$(setpci -H1 -s 0:0.0 62) & 0xf9)))


2.4. Rendszermag-folt

A rendszermag-folt egy, a Newsnet-en talált másik folton alapul, mely Jan Niehusmann-tól származik. Módosítottam a foltot, hogy a KT266/266A lapkakészleteket is támogassa. Egyébként a saját foltom ugyanazt csinálja, mint a parancssoros hackelés, csak a rendszermagból. Ezért javaslom a hackelést parancssorból, hiszen azt nagyon egyszerű használni.

Ok... most nézzük lépésenként, hogyan használjuk a foltot:

  1. Először le kell töltenünk a foltot:

    2.4.17 rendszermag-folt

    2.4.21 rendszermag-folt (köszönet Thomas Reinhardt-nak, amiért átírta 2.4.21-re)

    2.6.5 rendszermag-folt amely támogatja az összes VIA lapkakészletet a KT600-ig (köszönet érte Sebastian Droege-nek amiért átírta a 2.6.5 rendszermaghoz, továbbá egyéb lapkakészlet támogatást adott hozzá)

  2. Jelentkezzünk be root felhasználóként

  3. cd /usr/src

  4. Rakjuk fel a foltot: cat $path-to-patch/amd_cool.diff | patch -p0 (Az új 2.6.5 folt esetében: lépjünk be a linux könyvtárba, majd patch -p1)

  5. cd linux

  6. Fordítsuk le az új rendszermagot

  7. Indítsuk újra a számítógépet, majd a boot-prompthoz írjuk be a amd_disconnect=yes sort. Erre azért van szükség, mert az Athlon processzor ismert hibái több alaplap esetén problémákat okozhatnak. Így először kipróbáljuk a foltot, és ha működik, a amd_disconnect=yes sort beírhatjuk az /etc/lilo.conf fájlba.


2.5. Az LVCool programot használó megoldás

Az LVCool a Windowsos VCool program Linuxos változata. Csak a KT133/133A és a KX133 lapkakészletet támogatja, de nem tudok ezzel kapcsolatban segítséget nyújtani. Letölthető innen. Ez a megoldás nem igényel ACPI támogatást.


2.6. Az FVCool program

Íme egy másik energiamegtakarító program, amely számos lapkakészletet támogat. Én nem teszteltem, de úgy hallottam működik. Ellenőrizd le... Ez is egy olyan program, amely képes használni az alaplapon lévő monitorozó lapkákat (úgy mint az lm-sensors csomag).


3. Mi van még?


3.2. Ismert hibák és problémák

Két hibáról tudunk az Athlon/Duron processzorokban. Ezek 11-es és 14-es sorszámmal szerepelnek AMD Athlon Processor Revision Guide-ban. Úgy tűnik, az Athlon XP processzort jóval ritkábban érintik ezek a hibák. Így ha Athlon XP-vel rendelkezünk, szerencsénk van (mint nekem).

A következő problémák léphetnek fel (melyeket a processzor hibái okoznak):

Néha a BIOS frissítés segíthet ezen (a 11-es hiba kikerülésére létezik egy megoldás, mely a BIOS-t használja). De tudomásom szerint csak kevés alaplap BIOS-ban található meg ez a megoldás.

Az Asus A7V133-C alaplap esetén ismeretes, hogy a PCI master read caching BIOS beállítás engedélyezése a legtöbb problémát megoldja. Nézzük meg, hogy van-e ilyen funkciója az alaplapunkon lévő BIOS-nak.

Azt is tudjuk, hogy néhány alaplap esetén a Delayed Transaction BIOS beállítás a problémák egy részét kiküszöböli. Ezt az opciót is érdemes lehet kipróbálni.

FIGYELEM: A KT133A lapkakészlettel ellátott alaplapok esetén ez előhozhatja a híres VIA-Southbridge hibát!

Egy Newsnet levelezésből, az Asus A7V-vel kapcsolatban:

  • delayed transaction nélkül: ugrások hanglejátszás és TV-nézés közben

  • delayed transaction bekapcsolva: nincsenek ugrások hanglejátszás közben és csak kisebb problémák TV-nézéskor

  • mind a delayed transcation mind a master read caching bekapcsolva: szinte semmilyen probléma TV-nézéskor és egyáltalán nem jelentkeznek ugrások hanglejátszás közben

Más okai is lehetnek a problémáknak:

  • a tápegység nem elég erős ahhoz, hogy a processzor/alaplap energia felvételének ingadozását kezelni tudja

  • néhány alaplapi feszültség-szabályozónak ugyanaz a hibája, mint a tápegységnek ;)

  • az alaplapunk típusa K7S5A (tudomásom szerint ez az alaplap nagyon furcsán tud viselkedni, amikor az energiatakarékos üzemmód be van kapcsolva)

Ha rendszerünket energiatakarékos üzemmódban használva csak kisebb problémák adódnak, és ennek ellenére szeretnénk használni azt használni, alapértelmezésként engedélyezhetjük. Ha zenét akarunk lejátszani vagy TV-t akarunk nézni akkor pedig kikapcsoljuk ...


3.3. Javítás az ugráló hanghoz és egyéb problémákhoz

Köszönet Michael Hamilton-nak, amiért bemutatta az ötlet működési elvét.

Ennek a javításnak a működését két ember jelentette, szóval úgy néz ki működik, de nem biztos, hogy mindig. Ha ismersz más megoldásokat, kérlek tudasd velem!

Lássuk hát: úgy néz ki, hogy a hang akadozása javítható az eszköz pci latecy timer maximális értékre állításával.

Először keressük meg a hangkártyához tartozó "pci-address"-t. Ezt a lspci-vel tehetjük meg. Keressünk valami "Multimedia audio controller" vagy "AudioPCI"-hoz hasonlót. Majd állítsuk be a (ehhez hasonlóan kellene kinéznie: 01:06.0 -> it stands for: bus:slot.function) hozzá tartozó latency timer-t a maximális értékre. This is done by setpci:

setpci -v -s "pci-address" latency_timer=ff

A Latency Timer-ről további információt itt található.

Talán más problémák megoldására is használhatjuk, mint például az USB, vagy a merevlemez-átviteli-lassulás problémák, de ezt jelenleg még nem próbáltuk. Nyugodtan próbálhatod ezt, (de ne tégy szemrehányást, ha nem működik, vagy valamimás romlik el) és jelentheted, ha működik. Az a legnagyobb probléma, hogy nekem nem jelentkezik ilyen hiba, így kipróbálni sem tudom a javítást.

Ha működik, akkor ezt a setpci parancsot a számítógép minden induláskor/újrainduláskor ki kell adnunk. A megoldás az lehet, hogy az init szkriptek egyikébe rakjuk be (az eszközvezérlő modul betöltése után!).


3.6. Fordítások

Fordítások is készültek különféle nyelvekre. Néhányuk nem teljesen naprakész (értsd: erősen elavultak).

A spanyol fordítást Carlos Mayo készítette.

A brazíliai portugál fordítást Bruno Buys készítette.

A francia fordítást Mathieu Pillard készítette.

Az olasz fordítást Maurizio Fantino készítette.

A német fordítást Fabian Mohren készítette (csak részletek).

A japán fordítást Seiji Kaneko készítette.