Radeon显卡在Gentoo下的驱动
在Gentoo下,Radeon的显卡一直都驱动不起来,根据网络各路大神的指导,搞明白驱动radeon的方式有俩种,一种是采用ati的原生驱动,也就是闭源驱动,另一思路就是采用radeon的开放包,即开源驱动的方式来安装。
Radeon开源驱动模式
1,确认radeon的型号
root #lspci | grep -i VGA
Nor
thern Islands ARUBA, BARTS, TURKS, CAICOS, CAYMAN HD6450, HD6570, HD6670, HD6790-HD6990, HD64xxM, HD67xxM, HD69xxM, HD7450-HD7670, HD8450, R5 230 3.3 (4.1)1 3.0 radeon r600
2, 选择kernel对应选项(ATI/Radeon一定要编译为M。每次尝试编译为*,启动都暴慢,失败。) KERNEL General support Device Drivers ---> Graphics support ---> <*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> <M> ATI Radeon [*] Enable modesetting on radeon by default -*- Support for frame buffer devices ---> < > ATI Radeon display support
KERNEL AGP cards Processor type and features ---> [*] MTRR (Memory Type Range Register) support Device Drivers ---> Graphics support ---> <*/M> /dev/agpgart (AGP Support) ---> <*/M> AMD Opteron/Athlon64 on-CPU GART support
KERNEL Audio support (如果显卡本身带HDMI-audio) <*/M> Sound card support ---> <*/M> Advanced Linux Sound Architecture ---> [*] PCI sound devices ---> HD-Audio ---> <*> HD Audio PCI (2048) Pre-allocated buffer size for HD-audio driver [*] Support initialization patch loading for HD-audio <*> whatever audio codec your soundcard needs <*> Build HDMI/DisplayPort HD-audio codec support
3, 安装firmware软件
emerge --ask sys-kernel/linux-firmware
需要编译firmware,每种显卡对应的bin是一长串,以空格分隔。注意不要将firmware编译成in-kernel的,不然启动会报firmware loaded failed with error code 2. Device Drivers ---> Generic Driver Options ---> -*- Userspace firmware loading support [] Include in-kernel firmware blobs in kernel binary (radeon/<YOUR-MODEL>.bin) (/lib/firmware) Firmware blobs root directory
CAICOS HD6450, HD64xxM, HD7450, HD8450, R5 230, R5 235, R5 235X radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAICOS_smc.bin radeon/SUMO_uvd.bin
以下为选择radeon-ucode驱动的选择内容 External firmware blobs ( radeon/BARTS_mc.bin radeon/BARTS_me.bin radeon/BARTS_pfp.bin radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAYMAN_mc.bin radeon/CAYMAN_me.bin radeon/CAYMAN_pfp.bin radeon/CAYMAN_rlc.bin radeon/TURKS_mc.bin radeon/TURKS_me.bin radeon/TURKS_pfp.bin ) ## RadeonHD6400-6900系列的选择 Firmware blobs root directory ( /lib/firmware/ ) ## emerge radeon-ucode 安装目录 # grep FIRMWARE .config # CONFIG_FIRMWARE_IN_KERNEL is not set CONFIG_EXTRA_FIRMWARE="radeon/BTC_rlc.bin radeon/CAICOS_mc.bin radeon/CAICOS_me.bin radeon/CAICOS_pfp.bin radeon/CAICOS_smc.bin radeon/SUMO_uvd.bin" CONFIG_EXTRA_FIRMWARE_DIR="/lib/firmware"
4,在make.conf里激活ati radeon的显卡
/etc/portage/make.conf
VIDE
O_CARDS="radeon"
重新编译内核和xorg-server等软件。。。
失败的firmware loading info #dmesg | grep radeon [ 6.746988] [drm] radeon kernel modesetting enabled. [ 6.747550] radeon 0000:01:00.0: enabling device (0000 -> 0003) [ 6.757580] radeon 0000:01:00.0: VRAM: 1024M 0x0000000000000000 - 0x000000003FFFFFFF (1024M used) [ 6.757586] radeon 0000:01:00.0: GTT: 1024M 0x0000000040000000 - 0x000000007FFFFFFF [ 6.757658] [drm] radeon: 1024M of VRAM memory ready [ 6.757661] [drm] radeon: 1024M of GTT memory ready. [ 6.757687] radeon 0000:01:00.0: Direct firmware load for radeon/CAICOS_pfp.bin failed with error -2 [ 6.757693] ni_cp: Failed to load firmware "radeon/CAICOS_pfp.bin" [ 6.757704] radeon 0000:01:00.0: Fatal error during GPU init [ 6.757708] [drm] radeon: finishing device. [ 6.764796] [drm] radeon: ttm finalized [ 6.765104] radeon: probe of 0000:01:00.0 failed with error -2
成功的firmware load info # dmesg | grep radeon [ 25.772566] [drm] enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0 [ 25.777140] radeon 0000:01:00.0: WB enabled [ 25.777142] radeon 0000:01:00.0: fence driver on ring 0 use gpu addr 0x0000000040000c00 and cpu addr 0xffff977fde43cc00 [ 25.777144] radeon 0000:01:00.0: fence driver on ring 3 use gpu addr 0x0000000040000c0c and cpu addr 0xffff977fde43cc0c [ 25.777932] radeon 0000:01:00.0: fence driver on ring 5 use gpu addr 0x0000000000072118 and cpu addr 0xffffa95dc2032118 然后再观察,再也看不到firmware load failed的信息了。。。 成功的关键,在于将ATI/Radeon和Firmware都编译成模块M,而不是内置式的。。。in-kernel模式都会提示无法加载firmware。。。
相比开源驱动,闭源驱动的主要区别在于 VIDEO_CARDS="fglrx" emerge x11-drivers/ati-drivers 没有 x11-drivers/radeon-ucode
Reference:
https://wiki.gentoo.org/wiki/Radeon
解决Gentoo各种问题 http://blog.csdn.net/cenziboy/article/details/7038639
如何在Gentoo上使用Radeon显卡的开源驱动 http://blog.csdn.net/txlxt1117/article/details/44633023
gentoo ATI(Radeon 9000/R250 lf)显卡双显示器安装配置手记 (闭源驱动) http://blog.chinaunix.net/uid-10674382-id-2936675.html