ATi RS480-as chipsettel szerelt alaplapra telepítés
A HupWiki-ből...
Tartalomjegyzék |
Az RS480 hardver
Az ATi RS480-as alaplapi chipset a Radeon Xpress 200 márkanéven ismert családba tartozik. Ennek idáig 3 féle változata ismert:
- RS480 AMD-K8 processzorhoz, integrált grafikus vezérlővel
- RS480-R AMD-K8 processzorhoz, integrált grafika nélkül
- RS400 Pentium 4 processzorhoz, integrált grafikával
Most az RS480-as változatról lesz szó, az itt leírtak egy része talán alkalmazható a másik kettőre is. A konkrét leírás egy MSI RS480M2 alaplap alapján készült.
A chipset 2 elemből áll:
- RS480 "északi híd"
- SB400 "déli híd"
Az RS480 tartalmazza a következőket:
- AMD processzorhoz kapcsolódó 2x16bites, max 1GHz-es HyperTransport felületet
- integrált grafikus vezérlőt, analóg VGA, DVI, és analóg TV kimenet lehetőségekkel. Egyszerre két képernyőt képes vezérelni. A framebuffer-t a rendszermemóriából különti el. Opcionálisan felszerelhető lokális memóriával is, amit "SidePort" néven emlegetnek. Az MSI RS480M2-n nem volt ilyen kiépítve, ennek ellenére a BIOS-ban megvolt az opció az engedélyezésére, aminek bekapcsolása "természetesen" a gépet használhatatlan állapotba hozta.
- 22 PCI Express csatornát. Ebből 16 csatorna 1db PCI Express X16-os vagy 2db X8-as grafikus kártya számára való csatlakozót láthat el, 2 csatorna az SB400-as perifériavezérlőhöz csatlakozik, a maradék 4 pedig vagy 4db X1-es vagy 1db X4-es csatlakozót láthat el. Az MSI RS480M2-n csak 1db X16-os foglalat van kiépítve.
Az SB400 tartalmazza a perifériavezérlőket:
- PCI híd hagyományos PCI-buszos hardverek csatlakoztatására
- 8 portos USB vezérlő (USB1.1-es üzemhez OHCI, USB2.0-ás üzemhez EHCI szabványú)
- 2 csatornás ATA 133 vezérlő
- 4 csatornás SATA vezérlő (Silicon Image típus!)
- AC97-es hangvezérlő
- SMBus és LPC vezérlő
A specifikáció szerint támogatja a Trusted Platform 1.1 és 1.2-es változatot. Hogy ez jelen esetben pontosan mit is jelent, arról nem sokat tudni.
Az ATi RS480 hivatalos specifikációja
Ismertető az RS480-ról Anandtech-en
Megjegyzés még az MSI RS480M2 alaplapról: nem működik a CMOS törlő jumper, tehát ha valamit rosszul állítunk be a BIOS-ban és után nem indul a gép, akkor az egyetlen mód a hibás beállítás törlésére a elem eltávolítása és várakozás. Meglehetősen sokat kell várni, kb 1 órát, hogy törlődjön.
Az lspci kimenete
Az integrált eszközök listája:
00:00.0 Host bridge: ATI Technologies Inc: Unknown device 5950 00:01.0 PCI bridge: ATI Technologies Inc: Unknown device 5a3f 00:11.0 IDE interface: ATI Technologies Inc: Unknown device 437a 00:12.0 IDE interface: ATI Technologies Inc: Unknown device 4379 00:13.0 USB Controller: ATI Technologies Inc: Unknown device 4374 00:13.1 USB Controller: ATI Technologies Inc: Unknown device 4375 00:13.2 USB Controller: ATI Technologies Inc: Unknown device 4373 00:14.0 SMBus: ATI Technologies Inc: Unknown device 4372 (rev 04) 00:14.1 IDE interface: ATI Technologies Inc: Unknown device 4376 00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 4377 00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4371 00:14.5 Multimedia audio controller: ATI Technologies Inc: Unknown device 4370 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 NorthBridge 00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 NorthBridge 00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 NorthBridge 00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 NorthBridge 01:05.0 VGA compatible controller: ATI Technologies Inc: Unknown device 5954 02:03.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10) 02:04.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
A Realtek 8139 ethernet vezérlő és a Via IEEE1394 vezérlő az MSI RS480M2 alaplapon külön megtalálható, nem része az ATi RS480 chipsetnek.
Telepítési problémák
A chipset egyelőre még elég új, ezért sok Linux disztribúció még nincs felkészülve rá. Alapvetően három fő probléma van:
- A sima ATA IDE vezérlő nem támogatott, ezért csak DMA mód nélkül máködik, emiatt lassú, grafikus felületen az egér gyakran megakad.
- A SATA IDE vezérlő nem támogatott, ezért a SATA portra kötött merevlemez egyáltalán nem elérhető.
- Az ATi által használt megszakítás vezérlő furcsasága miatt a timer interruptok duplán érkeznek meg, aminek a következménye, hogy az óra dupla gyorsan jár.
A párhuzamos ATA és a SATA vezérlő a legújabb (az írás idején 2.6.12-es) linux kernelben már támogatott. A telepítés közben azonban még a disztribúció telepítőlemezén található kernelt vagyunk kénytelenek használni. Párhuzamos ATA merevlemezre a DMA mód hiánya ellenére is el tudjuk végezni a telepítést, csak nagyon lassú lesz. SATA merevlemez esetén viszont egyáltalán nem; mindenképpen új kernelt kell használnunk. FIXME Hogyan csináljunk saját telepítőlemezt... A dupla gyors óra a telepítést érdemben nem befolyásolja. Ha esetleg mégis bajt okozna, akkor ideiglenes megoldásként a kernel boot paraméterei közé vegyük fel a "noapic"-ot a telepítőlemezről bootolás közben.
A dupla gyors óra megoldása
Egy lehetséges megoldás a fent említett noapic, ez interruptvezérlő képességeit nagyban korlátozza (nincs lehetőség 24 megszakítási vonal használatára, csak a hagyományos 16-ra), tehát hosszabb távon ez nyilván nem a legjobb megoldás. Létezik egy kevésbé drasztikus javítás is, ehhez patch-elni kell a kernelt. A patch-et itt találhatjuk meg a levél végén: (Christopher Allen Wing levele az LKML-en) Fontos, hogy ez csak X86_64, tehát 64 bites támogatás esetén oldja meg a problémát, ha 32 bitesre szeretnénk fordítani a kernelt, akkor ezt a módosított változatot használjuk:
--- linux-2.6.11.6/arch/i386/kernel/io_apic.c.orig 2005-03-25 22:28:21.000000000 -0500 +++ linux-2.6.11.6/arch/i386/kernel/io_apic.c 2005-04-06 17:56:46.486511088 -0400 @@ -1564,6 +1564,8 @@ * is so screwy. Thanks to Brian Perkins for testing/hacking this beast * fanatically on his truly buggy board. */ +static int timer_hack = 0; + static inline void check_timer(void) { int pin1, pin2; @@ -1592,6 +1594,10 @@ apic_printk(APIC_VERBOSE,KERN_INFO "..TIMER: vector=0x%02X pin1=%d pin2=%d\n", vector, pin1, pin2); + if (timer_hack) { + /* for some reason this stops duplicate timer IRQ? */ + clear_IO_APIC_pin(0, pin1); + } else { if (pin1 != -1) { /* * Ok, does IRQ0 through the IOAPIC work? @@ -1633,6 +1639,7 @@ clear_IO_APIC_pin(0, pin2); } printk(" failed.\n"); + } if (nmi_watchdog) { printk(KERN_WARNING "timer doesn't work through the IO-APIC - disabling NMI Watchdog!\n"); @@ -1669,6 +1676,14 @@ panic("IO-APIC + timer doesn't work! Try using the 'noapic' kernel parameter\n"); } +static int __init timerhack(char *str) +{ + timer_hack = 1; + return 1; +} +__setup("timerhack", timerhack); + + /* * * IRQ's that are handled by the PIC in the MPS IOAPIC case.
Ez pontosan egyezik Christopher Allen Wing fenti patch-ével, az eltérés csak annyi, hogy nem a linux-2.6.11.6/arch/x86_64/kernel/io_apic.c filet módosítja, hanem a linux-2.6.11.6/arch/i386/kernel/io_apic.c-t.
A kernel boot paraméterei közé fel kell venni a "timerhack" paramétert!
A 2.6.12-es kernel és x86_64 esetén használható a no_timer_check kernel boot paraméter is a fenti megoldások helyett!
IDE vezérlő támogatása
Ehhez egy 2.6.12-es vagy újabb kernelt kell letöltenünk, majd a szokásos módon konfigurálnunk. Kapcsoljunk be mindent amit szoktunk, és a következő opciókat:
- Device Drivers ->
- ATA/ATAPI/MFM/RLL support ->
- PCI IDE chipset support = Y
- Generic PCI bus-master DMA support = Y
- ATI IXP chipset IDE support = Y
- Generic PCI bus-master DMA support = Y
- PCI IDE chipset support = Y
- SCSI device support ->
- SCSI disk support = Y
- SCSI low-level drivers ->
- Serial ATA (SATA) support = Y
- Silicon Image SATA support = Y
- Serial ATA (SATA) support = Y
- ATA/ATAPI/MFM/RLL support ->
Majd fordítsuk le a kernelt és telepítsük a szokásos módon. Ezzel megvan az ATA DMA és a SATA támogatás.
További hardvertámogatás
AC97 hangvezérlő
A kernelben a következőket állítsuk be:
- Device Drivers ->
- Sound ->
- Advanced Linux Sound Architecture = Y
- OSS Mixer API
- OSS PCM (digital audio) API
- PCI Devices ->
- ATI IXP AC97 Controller = Y
- ATI IXP Modem = Y (ha van modem kiépítve)
- Sound ->
USB vezérlő
- Device Drivers ->
- USB support ->
- Support for Host-side USB = Y
- USB device filesystem
- EHCI HCD (USB 2.0) support
- OHCI HCD support
- USB support ->
plusz minden egyéb, ami USB eszközt használni akarunk
Integrált grafikus vezérlő
A kernelben:
- Device Drivers ->
- Character devices ->
- /dev/agpgart (AGP Support)
- ATI chipset support = Y
- Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) = N
- Character devices ->
Ez az utolsó nagyon FONTOS!
Ezután az ATI videokártya driverének telepítése ismertetőben foglaltak alapján telepítsük a drivert! Fontos, hogy az "ATI Proprietary Linux x86 Driver 8.13.4 for Radeon Xpress 200 Series"-t telepítsük (sajnos nem lehet direktbe linkelni), ne pedig az újabb 8.14-est, mert abban nincs benne a RS480 támogatás! Továbbá figyeljünk arra is, hogy a 32 vagy a 64 bitesre fordított változatot töltjük le! A 64 bitest csak akkor válasszuk, ha a kernel és az x.org is X86_64 platformra lett fordítva! Tapasztalni fogjuk, hogy az ati kernel modulja nem fordul le a 2.6.12-es kernellel, tehát ezt is patchelni kell. A következő patch-et töltsük le: fglrx-diffs.tar.bz2
Alkalmazzuk a benne található firegl_public.c.diff-et és nvidia-agp.c.diff-et a /lib/modules/fglrx/build_mod könyvtárban, majd fordítsuk le a modult:
cd /lib/modules/fglrx/build_mod cat firegl_public.c.diff | patch -p0 cat nvidia-agp.c.diff | patch -p0 ./make.sh
ezután folytassuk az Ati driver telepítését a leírt módon!
További probléma: A driver bugos. Az fglrxconfig után ha elindítjuk az X szervert akkor fekete képernyő fog fogadni, a gép nem fog ezután reagálni a billentyűzetre sem. Ennek ellenére nem fagy le, távolról SSH-n továbbra is be lehet lépni a gépre, illetve ha a kernelben be van állítva az ACPI támogatás és a /etc/inittab-ban is be van konfigurálva, akkor a kikapcsológomb megnyomása hatására szabályosan le fog állni a linux. A probléma orvosolható, ha a /etc/X11/xorg.conf-ban vagy a 2D-s gyorsítást, vagy a 3D-s DRI támogatást letiltjuk. Elég csak az egyiket.
Keressük meg a xorg.conf-ban a következő szekciót:
Section "Device" Identifier "ATI Graphics Adapter" Driver "fglrx"
ebben a szekcióban keressük a
Option "no_accel" "no"
vagy az
Option "no_dri" "no"
sorokat és az egyikben a "no"-t írjuk át "yes"-re. Ha nem kell 3D gyorsítás, akkor a no_dri-t írjuk át, így a 2D-s gyorsítás megmarad. Remélhetőleg későbbi drivereknél már nem lesz ilyenre szükség.