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
    • SCSI device support ->
      • SCSI disk support = Y
      • SCSI low-level drivers ->
        • Serial ATA (SATA) support = Y
          • Silicon Image SATA support = Y

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)

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

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

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

az eredeti email

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.