4

I have a laptop (Dell Inspiron N4110) with a switchable graphic.

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: ATI Technologies Inc NI Whistler [AMD Radeon HD 6600M Series] (rev ff)

Normally, my laptop starts with both graphic cards enabled, which caused the laptop to turn very hot and the fan to become very noisy. I have been using a small script to disable the Radeon card. For some time, I'm quite happy with this arrangement.

However, I have been having some issues with the Intel card (IGD), the Intel card often randomly hang when running OpenGL apps; and so I want to give the Radeon card (DIS) another chance.

I have never been able to switch to the Radeon card, but recently, I found out that if I do a "delayed switching" (DDIS):

# echo "DDIS" > /sys/kernel/debug/vgaswitcheroo/switch
root@lieryan-dell-ubuntu:/sys/kernel/debug/vgaswitcheroo# cat switch 
0:IGD:+:Pwr:0000:00:02.0
1:DIS: :Pwr:0000:01:00.0

then I logoff (i.e. to restart X), the screen switch to pseudo-tty and then it stuck there freezing. At this situation, mouse and keyboard stops working so I can't switch to another ptty. I tried ssh-ing from another computer to salvage logs (dmesg at that point) and whatnot; I found out that when freezing, the active graphic card is the AMD card:

-- this is from ssh --
# cat switch 
0:IGD: :Off:0000:00:02.0
1:DIS:+:Pwr:0000:01:00.0

but the GPU is apparently hung, looking at dmesg gives:

...
[ 1411.649974] vga_switcheroo: client 0 refused switch
[ 1411.649985] vga_switcheroo: setting delayed switch to client 1
[ 1423.911759] vga_switcheroo: processing delayed switch to 1
[ 1424.006564] fbcon: Remapping primary device, fb1, to tty 1-63
[ 1424.006799] i915: switched off
[ 1424.840351] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1425.718088] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1426.622377] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1427.355683] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
[ 1428.193549] [drm:drm_mode_getfb] *ERROR* invalid framebuffer id
... the invalid framebuffer id error is repeated for many times over ...

I were able to successfully recover by switching back to the Intel card and restarting X from ssh; indicating that only the Radeon card has problems switching.

System info:

$ uname -a
Linux lieryan-dell-ubuntu 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.10
Release:    11.10
Codename:   oneiric

The laptop also do not have the option to set graphic card at BIOS and the proprietary driver, fglrx, also have never worked; when I installed it through jockey ("Additional Drivers"), glxinfo showed that it still being rendered by Mesa, the /sys/kernel/debug/vgaswitcheroo directory has gone missing, and the driver crashes with a traceback if I use xorg.conf to tell X to use fglrx.

Anyone had any idea if it is possible to use this AMD card either with the radeon or the fglrx driver?

logs:

Lie Ryan
  • 652

2 Answers2

2

It seems Catalyst 12.2 can solve this problem: http://support.amd.com/us/gpudownload/linux/Pages/radeon_linux.aspx

You may also refer to http://ubuntuforums.org/showthread.php?t=1930450

Vivodo
  • 121
  • @Lie Ryan have you tried this answer? – Tom Brossman Mar 31 '12 at 19:30
  • @TomBrossman: just tried it, it didn't work. After installing the fglrx driver, the /sys/kernel/debug/vgaswitcheroo/ goes missing (the same thing also happen when using non-SNA xserver-xorg-video-intel driver). – Lie Ryan Apr 06 '12 at 21:47
  • The same thing happens as before, if fglrx driver is installed and xorg.conf is specified to use fglrx, X would segfault when started (with the following xorg log), the same thing used to happen with my previous attempt at installing fglrx, although I'm pretty sure the traceback was different than what I remembered before. – Lie Ryan Apr 06 '12 at 23:35
1

@Exas Incredible It finally works!. As for the record here is my settings.

$ lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09) 01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Seymour [Radeon HD 6400M Series]

@TomBrossman Yes /sys/kernel/debug/vgaswitcheroo/ goes missing, but that had always missed after installing catalyst driver. Should that be a problem if it works.

Follow exactly what it says in ubuntuforums. However I downloaded catalyst 12.4 binary. When you complete step 2 in above link, after reboot you can check following to see if your ATI card was enabled.

$ aticonfig --pxl

PowerXpress: Discrete GPU is active (High-Performance mode).

$ fglrxinfo

display: :0 screen: 0 OpenGL vendor string: Advanced Micro Devices, Inc. OpenGL renderer string: AMD Radeon HD 6400M Series OpenGL version string: 4.2.11631 Compatibility Profile Context

$ fgl_glxgears

Using GLX_SGIX_pbuffer

1100 frames in 5.0 seconds = 220.000 FPS

1286 frames in 5.0 seconds = 257.200 FPS

You won't get those burning fan anymore. One thing to note though it might not give as much battery performance as the integrated one, so you might look at switching cards for high performance and battery. See step 3 of that post for switching graphics cards.

After switching to integrated hd 3000 (sudo aticonfig --px-igpu) and logout and login, following output was found

$ glxgears

Running synchronized to the vertical refresh. The framerate should be approximately the same as the monitor refresh rate. 303 frames in 5.0 seconds = 60.457 FPS

$ fgl_glxgears

Using GLX_SGIX_pbuffer 245 frames in 5.0 seconds = 49.000 FPS 300 frames in 5.0 seconds = 60.000 FPS

If you want to boot into integrated graphics card instead of discrete amd one, you might consider writing the switch command in /etc/rc.local

Cheers!!

razor
  • 398