RadeonHD r6xx/r7xx + KMS

09 lut 2010
Author Avatar Godzina : 00:12 Komentarzy : 18 Odsłon : 1104
QR Code

Nadchodzi chwila szczególna, która nie przejdzie obok mnie obojętnie. Mam konkretnie na myśli bliski termin ukończenia jądra 2.6.33 oraz mojego ulubionego środowiska graficznego KDE 4.4. Postanowiłem więc zrobić zobie mały podkład pod nowy system, opierając się na jedynej słusznej dystrybucji Slackware-Current.

Jak niektórzy z Was pamiętają, posiadam w swoim placku mobilnego RadeonaHD 3450, który swojego czasu sprawiał mi ogromne problemy na pseudo-sterowniku ATi. Korzystając więc z okazji, przygotowałem dla Was małe How-to jak zmusić tą kartę do poprawnej pracy z otwartymi sterownikami oraz z hitem ostatniego czasu - obsługą KMS.

Kernel 2.6.33-rc7

Na chwilę obecną przygotujmy sobie nowe jajo 2.6.33-rc7. Nie będę rozpisywał się na temat samej konfiguracji jądra, gdyż należy to do indywidualnych upodobań. A że mam świra na punkcie monolitycznego jądra, bez żadnych modułow, wskażę tylko miejsca dotyczące naszego dzisiejszego tematu.

Przedewszystkim będziemy potrzebować obsługi DRM/DRI dla Radeona

Device Drivers  ---> Graphics support ---> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->

<*>   ATI Radeon
[*]     Enable modesetting on radeon by default

Bardzo ważna sprawa. Nie kompilujemy żadnego framebuffora. Darujmy sobie zatem wybory VESA FB czy RadeonFB ( Support for frame buffer devices ). Dlaczego? Ano dlatego, że KMS posiada własny, mogą wystąpić konflikty, a w najlepszym wypadku w/w wymienione moduły i tak będą wyładowywane.

Teraz będzie knif :) Do działania 3D będziemy wymagali firmware naszej karty. Niestety jeszcze nie został on dodany do źródeł jądra, stąd też musimy się w niego zaopatrzyć sami. Konkretnie trzeba nam plików R600_rlc.bin oraz R700_rlc.bin, które znajdziemu tutaj : http://people.freedesktop.org/~agd5f/radeon_ucode/

Możemy teraz rozegrać sprawę na dwa sposoby. W przypadku gdy kompilujemy drm jako moduł, wystarczy skopiować te pliki do katalogu /lib/firmware/radeon, którę będą ładowały się wraz ze startem systemu. Sprawa komplikuje się gdy zechcemy mieć wszystko w jądrze. W tym wypadku jajko będzie chciało załadować je jako wbudowane built-in, pozostawiając je niezauważonymi. Dodatkowo zostaniemy poczęstowani 60-sekundowym postojem i brakiem przyzwoitej akceleracji 3D. W takim przypadku postępujemy następująco :

Firmare wgrywamy do żródeł jądra, konkretnie do katalagu firmware/radeon... W moim przypadku do /usr/src/linux/firmware/radeon. Na dopięcie guzika dopisujemy je w konfiguracji jądra :

Device Drivers  ---> Generic Driver Options  --->

-*- Userspace firmware loading support
 [*]   Include in-kernel firmware blobs in kernel binary
 (radeon/R600_rlc.bin radeon/R700_rlc.bin) External firmware blobs to build into the kernel binary
(firmware) Firmware blobs root directory

Wuala - możemy przystąpić do kompilacji :) Po udanym restarcie idziemy dalej.

Biblioteka libdrm

Pobieramy sobie najnowsze libdrm z http://dri.freedesktop.org/libdrm/ i kompilujemy.

  1. ./configure --prefix=/usr  --enable-radeon-experimental-api
  2. make
  3. make install

Kiedy mamy już świeże biblioteki zabieramy się za Mesę i sterowniki ATI

MESA i sterowniki ATI

  1. git clone  git://anongit.freedesktop.org/mesa/mesa
  2. cd mesa
  3. ./autogen.sh  --prefix=/usr --with-dri-drivers=swrast,r600,r700  --libdir=/usr/lib  --includedir=/usr/include   --with-dri-driverdir=/usr/lib/xorg/modules/dri --disable-gallium   --enable-debug
  4. make
  5. make install
  1. git  clone git://anongit.freedesktop.org/xorg/driver/xf86-video-ati
  2. cd   xf86-video-ati
  3. ./autogen.sh --prefix=/usr --libdir=/usr/lib   --includedir=/usr/include
  4. make
  5. make install

Jak one się kręcą

DMESG

[    0.738635] [drm] Initialized drm 1.1.0 20060810
[    0.738765] [drm] radeon defaulting to kernel modesetting.
[    0.738857] [drm] radeon kernel modesetting enabled
[    0.738985] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.739120] radeon 0000:01:00.0: setting latency timer to 64
[    0.740531] [drm] radeon: Initializing kernel modesetting.
[    0.740702] [drm] register mmio base: 0xD6300000
[    0.740793] [drm] register mmio size: 65536
[    0.740993] ATOM BIOS: TOS_POTOMAC_DDR2
[    0.741104] [drm] Clocks initialized !
[    0.741926] [drm] Detected VRAM RAM=256M, BAR=256M
[    0.742056] [drm] RAM width 64bits DDR
[    0.742203] [TTM] Zone  kernel: Available graphics memory: 436718 kiB.
[    0.742308] [TTM] Zone highmem: Available graphics memory: 1554082 kiB.
[    0.742416] [drm] radeon: 256M of VRAM memory ready
[    0.742507] [drm] radeon: 512M of GTT memory ready.
[    0.742654]   alloc irq_desc for 28 on node -1
[    0.742660]   alloc kstat_irqs on node -1
[    0.742673] radeon 0000:01:00.0: irq 28 for MSI/MSI-X
[    0.742681] [drm] radeon: using MSI.
[    0.742804] [drm] radeon: irq initialized.
[    0.742896] [drm] GART: num cpu pages 131072, num gpu pages 131072
[    0.743301] [drm] Loading RV620 Microcode
[    0.743395] platform radeon_cp.0: firmware: radeon/RV620_pfp.bin
[    0.743525] platform radeon_cp.0: firmware: radeon/RV620_me.bin
[    0.743654] platform radeon_cp.0: firmware: radeon/R600_rlc.bin
[    0.776656] [drm] ring test succeeded in 0 usecs
[    0.776884] [drm] radeon: ib pool ready.
[    0.777044] [drm] ib test succeeded in 0 usecs
[    0.777136] [drm] Enabling audio support
[    0.917038] [drm] fb mappable at 0xC0141000
[    0.917129] [drm] vram apper at 0xC0000000
[    0.917219] [drm] size 4096000
[    0.917316] [drm] fb depth is 24
[    0.917405] [drm]    pitch is 5120
[    1.836815] Console: switching to colour frame buffer device 160x50
[    1.840464] fb0: radeondrmfb frame buffer device
[    1.840466] registered panic notifier
[    1.840470] [drm] Initialized radeon 2.0.0 20080528 for 0000:01:00.0 on minor 0

Komentarze

User Avatar

Einstein / 9 luty 2010 - 11:49

Witam!
To fakt że sterowniki otwarte oferują powoli bardzo przyzwoitą wydajność jednakże jak ma się zarządzanie energii w ich najnowszej wersji? Jestem posiadaczem laptopa z tą kartą (dokładnie HD3470) i ma to dla mnie całkiem spore znaczenie. A akceleracja? Kiedykolwiek będę mógł na niej pograć sobie np. w sauerbraten?

Pozdrawiam!

94.42.62.* / Linux x86_64 / Mozilla 1.9.2

User Avatar

Domker_ / 9 luty 2010 - 12:30

@Einstein:
Jeżeli chodzi o zarządzanie energią to jeszcze trochę daleko do tego.

@Korneliusz:
Testowałeś może nowe otwarte sterowniki na jakiejś grze? (bo mogą się wysypać, fpsy to nie wszystko :> )

Z niecierpliwością czekam na rewizję KDE 4.4 i jajka 2.6.33 ^^

Może w międzyczasie mała rewizja Opery 10.50, ostatnio weszła w fazę BETA :)
Tutaj mały screenik:
http://img188.imageshack.us/img188/7393/clipboard01jj.jpg
(twój blog i Opera Dragonfly :> )

Windows Seven / Opera 10.10

User Avatar

Wytry / 9 luty 2010 - 13:09

Wiecie może, o której godzinie ma wyjść KDE 4.4?

77.253.112.* / Linux Ubuntu / Mozilla Firefox 3.5.7

User Avatar

soundwave / 9 luty 2010 - 15:37

@Wytry
http://kde.org/announcements/4.4/

15:30 dokładnie ;)

Windows Seven / Opera 10.50

User Avatar

Wytry / 9 luty 2010 - 16:22

No, to teraz sobie poczekam...
Zanim dodadzą je do repo to minie z tydzień (Kubuntu) :(

87.205.161.* / Linux Ubuntu / Mozilla Firefox 3.5.7

User Avatar

soundwave / 9 luty 2010 - 17:43

tydzień jak nie dłużej ;)
ja też niestety jestem zmuszony czekać :| ale aż tak mi sie nie pali ;)

Windows Seven / Opera 10.10

User Avatar

cheniek / 9 luty 2010 - 18:31

Jak ktoś się nie może doczekać to zachęcam do przesiadki na ArchLinux. Gotowe KDE 4.4 już czeka do pobrania w repo http://www.archlinux.org/packages/?sort=-last_update

83.30.80.* / Linux x86_64 / Mozilla 1.9.2

User Avatar

Tomko / 9 luty 2010 - 20:58

hehe w repozytorium Arch Linuxa już jest :D

Tak nawiasem mówiąc Arch Linux is the best !!!

89.206.6.* / Linux / Opera 10.20

User Avatar

b00rt00a / 9 luty 2010 - 21:16

Kubuntu jest dziadowskie, bo nie ma jeszcze najnowszego KDE (v.4.4) tak jak ma Arch :D:D:D

84.10.164.* / Linux / Mozilla Firefox 3.6

User Avatar

trapDoor / 9 luty 2010 - 21:20

I znów mój ulubiony konik :) Tyle ostatnio ciekawego dzieje się w świecie drm/kms/otwartych-radeonów, że można by co tydzień nowy artykuł pisać :->>

Wspomniałeś Korneliuszu o tych nowych plikach firmware. Przez długi czas były one przyczyną moich frustracji. Kernel domagał się R600_rlc.bin, który grzecznie czekał sobie w /lib/firmware/radeon, aż go tam znajdą a tu nic :( Dopiero przy kompilacji jajka 2.6.33-rc4-git-któryś-tam znalazłem wskazówkę na jakimś tuxo-forum, w jaki sposób wkompilować go statycznie i zadziałało. U mnie kms chodzi poprawnie tylko z drm i firmware'ami wkompilowanymi statycznie. Drm jako moduł i włączenie kms-a ręcznie w grubie dawało mi tylko kolorowe paski na ekranie w momencie startu x-ów. Czasami efekt był wręcz zadziwiąjący, kolory pasków fantastyczne :) i szkoda, że nie miałem jak tego zapamiętać ..

A propos framebuffera, dzięki za radę. Wydawało mi się, że nawet przy włączonym kms-ie, radeonfb i tak trzeba wkompilować. I u mnie to wszystko chodzi w sumie dobrze, chociaż pojawia się ten komunikat na wirtualnej konsoli:
mkmod: /dev/ttyXY: File exists
Być może przyczyną jest właśnie radeonfb, który kłóci się z fb wbudowanym w kms? I również może z tego powodu przełączanie z x-ow na konsolę nie jest tak szybkie jak być powinno (jak np. na testowej fedorze live)? No to ja się biorę do roboty, a Wy tutaj nie rozrabiać ..

Pozdrawiam, trapDoor

P.S.
Jeśli wolno mi sobie pozwolić, to pragnę zaprosić wszystkich do obejrzenia odcinka mojej ulubionej, starej angielskiej opowiastki. Tytuł... a, zobaczycie sami (czy ktoś widział to kiedyś w polskiej telewizji?)
http://www.youtube.com/watch?v=Cta3M7T-iHY&feature=related

Linux Ubuntu / Mozilla Firefox 3.6

User Avatar

Korneliusz / 9 luty 2010 - 23:06

@trapDoor: Być może podwójne FB było powodem wolnego przełączania. Ja też (było już późno) się zapędziłem. Po zrobieniu jajka, KMS się odpalił, więc radocha. Ale Xy przełączały się wolno :( Okazało się, że z rozpędu zapomniałem o xf86-video-ati :D

Linux / Mozilla Firefox 3.6

User Avatar

trapDoor / 10 luty 2010 - 00:16

@Korneliusz
Też tak podejrzewałem, ale to chyba jednak nie to. Skompilowałem 2.6.33-rc7-git3 i tym razem odhaczyłem wszystkie opcje, które miałem wcześniej aktywne w 'Support for frame buffer devices' (czyli: 'ATI Radeon display support' i 'Enable Video Mode Handling Helpers'). Samej opcji 'Support for fb devices' nie da się wyłączyć, chyba że odgwiazkujesz również DRM. Ale to i tak nie ma żadnego znaczenia jeśli żadna opcja wewnątrz menu nie jest aktywna.
Po odpaleniu z nowego jajka nie ma różnicy: wciąż pojawia się ten komunikat na konsoli, i przełączanie z x-ów na konsolę trwa mniej więcej tele samo (ok. sekundy, podczas gdy na fedorze live jest niemal natychmiastowe) .. Tak czy siak nie ma co biadolić: kms działa, 3D też (compiz śmiga, a gearsy czasami potrafią się rozpędzić do 2200+ fps) ..

Linux Ubuntu / Mozilla Firefox 3.6

User Avatar

Zajec / 11 luty 2010 - 10:45

Korneliuszu, firmware *nie jest* potrzebny do akceleracji 3D. On służy obsłudze przerwań, sam zresztą już dawno temu uruchomiełeś 3D na r600 bez tych plików.

Einstein: zajmuję się tym razem z Aleksem (agd5f) i skalowanie częstotliwości GPU jest już ładnie zrobione. Ewentualnie można je (/reclocking/) przyspieszyć pomijając AtomBIOS. Da to około 35% zysku, może być przydatne jeśli jeszcze u kogoś występują /corruptions/ albo gdy będziemy próbowali włączyć zarządzanie energią dla 2 wyświetlaczy.

Dodanie obniżania częstotliwości pamięci powinno być proste i już teraz wykonywalne. Jak tylko skończę sesyjne sprawy, zobaczę.

Szczegóły można śledzić w:
http://git.kernel.org/?p=linux/kernel/git/airlied/drm-2.6.git;a=shortlog;h=refs/heads/drm-radeon-testing

62.21.3.* / Linux / Opera 10.10

User Avatar

Korneliusz / 11 luty 2010 - 12:04

Zajec: Nie do końca bym się zgodził. Fakt, faktem to do obsługi przerwań. Nie mniej jednak, brak tego firmware wyklucza akcelerację 3D - Sprawdzone ;D Wcześniej owszem działało bez tego, ale była i inna mesa i inne stery i inne drm :D

Linux / Mozilla Firefox 3.6

User Avatar

ngp / 11 luty 2010 - 16:27

No i KDE 4.4 wreszcie wyszło. Ludzie na forach niestety kręcą nosem na nowe wydanie i polecają pozostać przy KDE 4.3. Czekam z niecierpliwością na Twoją recenzję.

79.110.197.* / Linux Ubuntu / Mozilla Firefox 3.5.7

User Avatar

amandrake / 13 luty 2010 - 14:12

witam, a ja idąc tropem Twoich wskazówek Korneliuszu napotkałem pewien problem, otóż po skompilowaniu odpowiednio jajka oraz zemergowaniu (tak tak Gentoo) reszty paczek X'y poprostu nie wstają, tzn gdy powinien uruchomić się KDM ekran kilkukrotnie mignie i koniec, nie działa ctrl+alt+del ani ctrl+alt+F1 ani nic innego:/

94.246.143.* / Windows Seven / Safari 532.5

User Avatar

Korneliusz / 13 luty 2010 - 14:37

Przeklej dmesg i /var/log/Xorg.0.log na http://wklej.to :)

Linux / Mozilla Firefox 3.6

User Avatar

Zajec / 18 luty 2010 - 09:10

Korneliusz: fix poleciał do 2.6.33 (pull request), zaraz KMS powinien działać bez firmware (co implikuje brak obsługi przerwań).
http://bugs.freedesktop.org/show_bug.cgi?id=25506

62.21.3.* / Linux / Opera 10.10

Komentarze

Jeżeli się nie zalogujesz, przy Twoim komentarzu pokaże się adres IP.
Zanim skomentujesz, zapoznaj się z zasadami dodawania komentarzy.

Ostatnie 10 wpisów

Ostatnie 5 komentarzy

Facebook

Kategorie

Archiwum

Blogroll

Flag Counter

free counters