Friday, 29 May 2009

Update on current status of Hybrid graphics support for Sony Vaio Z series and Linux

Having a fully-working nvidia hybrid graphics laptop with Linux has always proven difficult, but more features are being implemented as more information about the inner workings of nvidia hardware are investigated.

Matthew Garrett (mjg59) and Stuart Bennett (malc0) managed to run nouveau'S BIOS parser (http://mjg59.livejournal.com/91888.html) in the kernel together with nv but it is not integrated with nouveau yet, causes
lockups with nouveau and only works for certain older cards (like
nv44).

The nvidia BIOS contains bytecode scripts that are able to initialise the chip, but we don't have a bytecode interpreter that can parse them fully. There's a partial one in the nouveau project.

For laptops like the Sony Vaio Z series, there is currently Linux support for cold switch of the graphics card:

Load Eva's sony-laptop module with speed_stamina=3.
In the file called /etc/modprobe.d/sony-laptop.conf add the following line:

options sony-laptop speed_stamina=3


Then boot with this kernel parameter:

acpi_osi="!Windows 2006"


Just put it in the kernel command line of your boot manager.

Now you can switch between stamina and speed without booting to Windows, but your laptop have to be completely powered off, not rebooted.

Nvidia driver overwrites libglx.so and libGL.so.1 with symbolic links like mentioned above. So before installing nvidia driver, backup the current libglx.so und libGL.so.1 to libglx.so.INTEL/libGL.so.INTEL. If you have already installed nvidia, you can get the original files from "xserver-xorg-core" package, respectively "libgl1-mesa-glx".

For loading the correct xorg.conf, this little script needs to run before starting xserver:



#!/bin/sh

lspci | grep "00:02.1"

if [ $? -eq 0 ]; then

   cp /etc/X11/xorg.INTEL /etc/X11/xorg.conf
   ln -sf /usr/lib/libGL.so.INTEL /usr/lib/libGL.so.1

   ln -sf /usr/lib/xorg/modules/extensions/libglx.so.INTEL /usr/lib/xorg/modules/extensions/libglx.so
else

   cp /etc/X11/xorg.NVIDIA /etc/X11/xorg.conf
   ln -sf /usr/lib/libGL.so.185.18.08 /usr/lib/libGL.so.1

   ln -sf /usr/lib/xorg/modules/extensions/libglx.so.185.18.08 /usr/lib/xorg/modules/extensions/libglx.so


fi

More developments are expected in the future, once the nvidia bytecode interpreter is in full shape in the nouveau project.

No comments:

Post a Comment