Mencoba Fitur DPM Driver Radeon Linux

Submitted by w41lf0x on Thu, 07/04/2013 - 18:48

Setelah membaca sebuah artikel yang tertulis di Phoronix yang berjudul AMD Has Massive Radeon Patch Set - Power Management!, saya tergoda untuk mencoba driver #radeon yang baru tersebut, meskipun belum ada rilis resmi dari #Kernel.org. Sampai saat ini, Kernel.org baru menerbitkan versi 3.10 sebagai versi stabil terakhir sedangkan menurut pengembang driver tersebut, driver radeon ini rencananya akan dimasukkan  ke #Linux versi 3.11.

Driver radeon yang baru ini diklaim memiliki fitur Dynamic Power Management (DPM) yang mampu mengatur daya dan kinerja GPU #AMD secara otomatis sehingga dapat menurunkan suhu rata-rata perangkat laptop berbasis AMD secara signifikan. Dukungan manajemen daya ini diterapkan pada kartu-kartu grafis seri R600 (Radeon HD 2000) hingga Southern Island (Radeon HD 7000). Kabar yang amat sangat baik bagi pengguna perangkat AMD yang selama ini sangat bergantung pada driver propietary AMD Catalyst (#FGLRX) untuk mendapatkan kinerja GPU yang baik dan suhu rata-rata perangkat yang normal. Oleh karena saya penasaran dengan fitur DPM ini, saya nekat mencoba membangun dan mengujicoba kernel yang tidak stabil tersebut.

Untuk membangun kernel dengan fitur DPM radeon tersebut, saya harus mengunduh tarball kode sumber kernel dari commit terakhir di repo git pengembang driver:

http://cgit.freedesktop.org/~agd5f/linux/log/?h=drm-next-3.11

Meskipun sebenarnya patch untuk radeon tersebut sudah masuk ke dalam mainline kernel:

https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=6ef92fbea2b5680204da5b8796e8972109d01bd3

Proses pembangunan berlangsung seperti biasa di #Slackware saya:

# tar xf linux-$VERSI_COMMIT_GIT.tar.gz
# cd linux-$VERSI_COMMIT_GIT
# cat /boot//boot/config-generic-smp-3.9.7-smp > .config
# make oldconfig
# make bzImage; make modules; make tar-pkg
# cp tar-install/boot/{System.map,config,vmlinuz}-3.10.0-rc7-wls /boot/
# cp -r tar-install/lib/modules/3.10.0-rc7-wls /lib/modules/

Yang saya ubah dari config standar Slackware hanya membuang driver-driver untuk perangkat yang tidak ada di laptop saya, lalu memasukkan driver filesystem ke dalam kernel supaya tidak ribet. Wong cuma ngetes. Kemudian setelah itu saya membuang paket fglrx terlebih dahulu, lalu membuka blacklist radeon, kemudian mengembalikan file-file dari paket mesa ke tempat aslinya. Setelah memasukkan kernel baru ke dalam boot loader, saya reboot laptop dan masuk ke kernel baru tersebut.

Proses boot berjalan normal tanpa hambatan, dan memang ada perbedaan dari log dmesg:

[   12.851405] [drm] Initialized drm 1.1.0 20060810
[   13.457957] [drm] radeon kernel modesetting enabled.
[   13.459245] [drm] initializing kernel modesetting (PALM 0x1002:0x9802 0x103C:0x3577).
[   13.459518] [drm] register mmio base: 0xF0400000
[   13.459636] [drm] register mmio size: 262144
[   13.461419] radeon 0000:00:01.0: VRAM: 384M 0x0000000000000000 - 0x0000000017FFFFFF (384M used)
[   13.461616] radeon 0000:00:01.0: GTT: 512M 0x0000000018000000 - 0x0000000037FFFFFF
[   13.461772] [drm] Detected VRAM RAM=384M, BAR=256M
[   13.461889] [drm] RAM width 32bits DDR
[   13.462565] [drm] radeon: 384M of VRAM memory ready
[   13.462650] [drm] radeon: 512M of GTT memory ready.
[   13.847112] radeon 0000:00:01.0: f2a9f200 unpin not necessary
[   14.116720] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000072118 and cpu addr 0xfa8e6118
[   14.116936] [drm] GART: num cpu pages 131072, num gpu pages 131072
[   14.119728] [drm] Loading PALM Microcode
[   14.199133] [drm] PCIE GART of 512M enabled (table at 0x0000000000040000).
[   14.199583] radeon 0000:00:01.0: WB enabled
[   14.199803] radeon 0000:00:01.0: fence driver on ring 0 use gpu addr 0x0000000018000c00 and cpu addr 0xffacac00
[   14.199921] radeon 0000:00:01.0: fence driver on ring 3 use gpu addr 0x0000000018000c0c and cpu addr 0xffacac0c
[   14.288817] radeon 0000:00:01.0: fence driver on ring 5 use gpu addr 0x0000000000177118 and cpu addr 0xfb0b2118
[   14.288999] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[   14.289114] [drm] Driver supports precise vblank timestamp query.
[   14.289271] radeon 0000:00:01.0: irq 46 for MSI/MSI-X
[   14.289297] radeon 0000:00:01.0: radeon: using MSI.
[   14.289490] [drm] radeon: irq initialized.
[   14.306366] [drm] ring test on 0 succeeded in 1 usecs
[   14.306612] [drm] ring test on 3 succeeded in 1 usecs
[   14.361835] [drm] ring test on 5 succeeded in 1 usecs
[   14.361956] [drm] UVD initialized successfully.
[   14.382651] [drm] ib test on ring 0 succeeded in 0 usecs
[   14.382826] [drm] ib test on ring 3 succeeded in 0 usecs
[   14.403700] [drm] ib test on ring 5 succeeded
[   14.476715] [drm] radeon atom DIG backlight initialized
[   14.476886] [drm] Radeon Display Connectors
[   14.477003] [drm] Connector 0:
[   14.477129] [drm]   LVDS-1
[   14.477207] [drm]   HPD1
[   14.477285] [drm]   DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[   14.477439] [drm]   Encoders:
[   14.477560] [drm]     LCD1: INTERNAL_UNIPHY
[   14.477695] [drm] Connector 1:
[   14.477773] [drm]   HDMI-A-1
[   14.477849] [drm]   HPD2
[   14.477926] [drm]   DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[   14.478079] [drm]   Encoders:
[   14.478154] [drm]     DFP1: INTERNAL_UNIPHY
[   14.478270] [drm] Connector 2:
[   14.478386] [drm]   VGA-1
[   14.478464] [drm]   DDC: 0x64d8 0x64d8 0x64dc 0x64dc 0x64e0 0x64e0 0x64e4 0x64e4
[   14.478612] [drm]   Encoders:
[   14.478690] [drm]     CRT1: INTERNAL_KLDSCP_DAC1
[   14.478828] [drm] Internal thermal controller without fan control
[   14.485433] [drm] Found smc ucode version: 0x00010601
[   14.489703] [drm] radeon: dpm initialized
[   14.913842] [drm] fb mappable at 0xE0378000
[   14.914042] [drm] vram apper at 0xE0000000
[   14.914161] [drm] size 4325376
[   14.914278] [drm] fb depth is 24
[   14.914357] [drm]    pitch is 5632
[   14.914882] fbcon: radeondrmfb (fb0) is primary device
[   15.483949] radeon 0000:00:01.0: fb0: radeondrmfb frame buffer device
[   15.484030] radeon 0000:00:01.0: registered panic notifier
[   15.486549] [drm] Initialized radeon 2.34.0 20080528 for 0000:00:01.0 on minor 0

Setelah beberapa saat saya mengecek temperatur laptop saya:

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +56.4°C  (high = +70.0°C)
                       (crit = +115.0°C, hyst = +115.0°C)

acpitz-virtual-0
Adapter: Virtual device
temp1:        +56.0°C  (crit = +120.0°C)

radeon-pci-0008
Adapter: PCI adapter
temp1:        +56.0°C  

Driver radeon + DPM tersebut bekerja dengan baik 'mendinginkan' laptop saya seperti halnya driver fglrx:

acpitz-virtual-0
Adapter: Virtual device
temp1:        +58.0°C  (crit = +120.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
temp1:        +58.0°C  (high = +70.0°C)
                       (crit = +115.0°C, hyst = +115.0°C)

Hanya saja harus diingat bahwa driver ini masih dalam tahap pengembangan. Saya tidak bisa menggunakannya untuk menjalankan X. Slackware saya selalu mengalami hang jika saya menjalankan X. Saya sudah mencoba menggunakan Xorg versi 1.13 dan 1.14, hasilnya sama saja. Artinya, saya membutuhkan Xorg dengan versi yang lebih tinggi untuk dapat menggunakan antarmuka grafis di atas driver ini. Jadi perjalanan masihlah lama.

Menunggu dulu saja kalau begitu...