SUSE Conversations


Fix for Sleep and Hibernate on a Thinkpad T61p with an nVidia FX570 Video Card



By: tmstone835

October 8, 2009 4:42 pm

Reads:643

Comments:8

Rating:0

Sleep and Hibernate fix for Thinkpad T61p with an NVIDIA FX570 video card

When I ordered my Thinkpad laptop I specified the best video card that they had available thinking that it would be the best choice with SLED or OpenSuSE. That turned out to be a bad idea until now.

I found out after the fact that NVIDIA drivers can be a problem in certain situations. Especially when it comes to using your laptop’s sleep and hibernate functions. They seem to go to sleep just fine. The problem occurs when you try to wake them up again. Everything seems to start up but then when the system tries to load the X11 driver and switch to the desktop, it goes to a black screen and then you are stuck. The only option you have is to power-off and reboot. That is not good for your filesystem integrity even with journaling filesystems such as EXT3 or ReiserFS.

I dug through many forums, discussion threads, and sites like thinkwiki.org for a solution and found nothing that worked for my laptop. However, I have to give them all credit for helping me discover the final solution. I can’t guarantee that this will work for your computer but it could help.

It all seems to revolve around which driver is trying to control the AGP features on your computer. In case you are not familiar with the term. AGP is the power management capability that is built into any modern computer. It seems that all power management has been delegated to the video system driver in Linux and Windows.

Many system boards come with integrated video controllers but when you add a different video card it complicates things. It seems like the linux distributions have a problem configuring AGP settings when there are two video adapters on a system. Laptops and desktops might come with an enhanced video card using ATI or nVideo chipsets but the integrated video on the motherboard is still there lurking in the background.

I also think that you need to match the AGP capability of the computer to that in the driver. Read the information below and you will see what I mean by that.

Step 1

Check to see which AGP driver is enabled on your system by running:

lsmod | grep agp

Mine came back with intel_agp but yours might show sis_agp or via_agp depending on your motherboard. It will also show agppart but that is OK. Make note of which agp module is installed because you will need that information in the next step.

Step 2

Edit /etc/modprobe.conf.local and add the following line:

blacklist intel_agp

Yours should look like this:

#
# please add local extensions to this file
#
blacklist intel_agp

Step 3

Now you need to look in the driver registry to see which features are enabled. Run the following:

cat /proc/driver/nvidia/registry

Look for NvAGP: 3. This number is the supported AGP state.

Step 4

You need to modify the X system configuration so it knows about your video card’s AGP feature. Edit /etc/X11/xorg.conf and look for the [Device] section. Mine originally looked like this:

Section "Device"
  BoardName    "Quadro FX 570M"
  Driver       "nvidia"
  Identifier   "Device[0]"
  VendorName   "NVidia"
EndSection

Add a new entry: Option “NvAGP” “3″ into this section. After I made this change mine looks like this:

Section "Device"
  BoardName    "Quadro FX 570M"
  Driver       "nvidia"
  Identifier   "Device[0]"
  VendorName   "NVidia"
  Option        "NvAGP" "3"
EndSection

It seems as if the settings are working as soon as you save the file but you should probably reboot your system before trying your new settings. I noticed that if I now check the current agp driver by running lsmod | grep agp it comes back with:

agpgart                32308  1 nvidia

Conclusion

My system now goes to sleep and wakes up properly. The hibernate feature works but, when waking up, it sits for 2 minutes at a black screen with a blinking cursor in the upper left corner. It will beep once and then after another minute it will beep again. After another minute, it will resume the system and you should see a desktop. I rarely use hibernate so this doesn’t bother me. At least I know it works if I need it.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Tags:
Categories: SUSE Linux Enterprise Desktop, Technical Solutions

Disclaimer: As with everything else at SUSE Conversations, this content is definitely not supported by SUSE (so don't even think of calling Support if you try something and it blows up).  It was contributed by a community member and is published "as is." It seems to have worked for at least one person, and might work for you. But please be sure to test, test, test before you do anything drastic with it.

8 Comments

  1. By:seuchato

    Hi, I think your article is very good, however, you should probably add what os version and kernel you have been using.
    In Suse 11.2, 64 bit and on a w700ds (FX3700), kernel 2.6.31.12-0.1 there is no more modprobe.conf. rather there is a /etc/modprobe.d directory, with all sorts of config files.

    Just my 2cents

    greets

    chris

  2. By:tmstone835

    It was opensuse 11.1 at the time. I have just upgraded to 11.2 and the problem came back so they still have not fixed this issue. I will work on it soon and post an update.

    Tom S.

  3. By:tmstone835

    Sorry that I can’t publish the fix quite yet. I just got it working. I will need to get my notes together and write it so it it understandable for others. As soon as I do, I will post it and put a link on this thread. The problems were similar to the previous fix but with all of the file location and file name changes, it took some time to figure out.

    Tom S.

  4. By:Incog

    This problem still exists in openSUSE 11.3, in case anyone was wondering.

  5. By:tmstone835

    Yes, this problem still exists on 11.2 and 11.3. Part of the problem lies with the open source nvidia drivers. They just don’t work very well and Suse should stop shipping them as default until they offer parity with the nvidia drivers. Either fix them or stop pretending that they are a good solution.

    The other problem lies with SaX. It isn’t included in 11.2 and you need to install it separately. I believe that I read where 11.3 had it re-introduced but I have not verified that. I plan on upgrading to 11.3 but my 11.2 is running pretty well and I didn’t want to take the time to get the new version running and chance some downtime until I worked out the bugs.

    You still have to get the nVidia driver from nVidia’s site or at least follow their directions for getting it from the nvidia/Suse location. Read the installation readme thoroughly so you understand what is happening.

    This seems to be the important section that needs to be edited in your /etc/X11/xorg.conf file. Mine now reads as follows:

    Section “Device”
    BoardName “Quadro FX 570M”
    Driver “nvidia”
    Identifier “Device[0]”
    Option “NvAGP” “3″
    VendorName “NVIDIA”

    After you edit this file and save it (after making a backup of course) SaX won’t overwrite it by default and the nVidia driver updates from the nVidia site won’t overwrite it either. They seem to know that the file has been hand edited, give a warning as such, then continue on.

    Good luck.

  6. By:tmstone835

    I forgot to mention the modprobe edit that needs to be made in order to blacklist the nouveaux driver.

    Edit the following file or create it if it doesn’t exist.

    /etc/modprobe.d/nvidia.conf

    Add this entry:
    blacklist nouveau

    Save and reboot. Restarting the X server works but the ultimate test will be to reboot anyway. If all fails, type 3 in your initial boot loader screen in order to get into the init 3 level where you can check your file edits or change the files back to the originals in order to get a functioning system again.

  7. By:Incog

    Part of the problem lies with the open source nvidia drivers.

    Does this mean the drivers that can be downloaded from nvidia’s website do not have this hibernate issue?

  8. By:tmstone835

    I experience the long delay using the proprietary nvidia drivers when returning from hibernation. I think that it is not a fault of the drivers but in some configuration setting that I have not found. The sleep feature works quite well.

Comment

RSS