I recently installed an Nvidia 9800 GT, using PCLinuxOS 2010, and was having problems with the Nvidia driver. NV driver worked, but no hardware accel.
The end of /var/log/Xorg.0.log read as follows...
(EE) Apr 22 21:54:41 NVIDIA(0): Failed to initialize the NVIDIA graphics device PCI:2:0:0.
(EE) Apr 22 21:54:41 NVIDIA(0): Please check your system's kernel log for additional error
(EE) Apr 22 21:54:41 NVIDIA(0): messages and refer to Chapter 8: Common Problems in the
(EE) Apr 22 21:54:41 NVIDIA(0): README for additional information.
(EE) Apr 22 21:54:41 NVIDIA(0): Failed to initialize the NVIDIA graphics device!
(II) UnloadModule: "nvidia"
(II) UnloadModule: "wfb"
(II) UnloadModule: "fb"
(EE) Screen(s) found, but none have a usable configuration.
Fatal server error:
no screens found
After a little Goggling, I found found a post on another forum which pointed to this under Nvidia's driver read me http://us.download.nvidia.com/XFree86/Linux-x86/195.36.15/README/knownissues.html
Kernel virtual address space exhaustion on the X86 platform
On X86 systems and AMD64/EM64T systems using X86 kernels, only 4GB of virtual address space are available, which the Linux kernel typically partitions such that user processes are allocated 3GB, the kernel itself 1GB. Part of the kernel's share is used to create a direct mapping of system memory (RAM). Depending on how much system memory is installed, the kernel virtual address space remaining for other uses varies in size and may be as small as 128MB, if 1GB of system memory (or more) are installed. By default, the kernel reserves a minimum of 128MB.
The kernel virtual address space still available after the creation of the direct system memory mapping is used by both the kernel and by drivers to map I/O resources, and for some memory allocations. Depending on the number of consumers and their respective requirements, the Linux kernel's virtual address space may be exhausted. Newer Linux kernels print an error message of the form below when this happens:
allocation failed: out of vmalloc space - use vmalloc=<size> to increase size.
The NVIDIA kernel module requires portions of the kernel's virtual address space for each GPU and for certain memory allocations. If no more than 128MB are available to the kernel and device drivers at boot time, the NVIDIA kernel module may be unable to initialize all GPUs, or fail memory allocations. This is not usually a problem with only 1 or 2 GPUs, however depending on the number of other drivers and their usage patterns, it can be; it is likely to be a problem with 3 or more GPUs.
Possible solutions for this problem include:
If available, the 'vmalloc' kernel parameter can be used to increase the size of the kernel virtual address space reserved by the Linux kernel (the default is 128MB). Incrementally raising this to find the best balance between the size of the kernel virtual address space made available and the size of the direct system memory mapping is recommended. You can achieve this by passing 'vmalloc=192M', 'vmalloc=256MB', ..., to the kernel and checking if the above error message continues to be printed.
Note that some versions of the GRUB boot loader have problems calculating the memory layout and loading the initrd if the 'vmalloc' kernel parameter is used. The 'uppermem' GRUB command can be used to force GRUB to load the initrd into a lower region of system memory to work around this problem. This will not adversely affect system performance once the kernel has been loaded. The suggested syntax is:
title Kernel Title
Also note that the 'vmalloc' kernel parameter only exists on Linux 2.6.9 and later kernels. On older kernels, the amount of system memory used by the kernel can be reduced with the 'mem' kernel parameter, which also reduces the size of the direct mapping and thus increases the size of the kernel virtual address space available. For example, 'mem=512M' instructs the kernel to ignore all but the first 512MB of system memory. Although it is undesirable to reduce the amount of usable system memory, this approach can be used to check if initialization problems are caused by kernel virtual address space exhaustion.
In some cases, disabling frame buffer drivers such as vesafb can help, as such drivers may attempt to map all or a large part of the installed graphics cards' video memory into the kernel's virtual address space, which rapidly consumes this resource. You can disable the vesafb frame buffer driver by passing these parameters to the kernel: 'video=vesa:off vga=normal'.
Some Linux kernels can be configured with alternate address space layouts (e.g. 2.8GB:1.2GB, 2GB:2GB, etc.). This option can be used to avoid exhaustion of the kernel virtual address space without reducing the size of the direct system memory mapping. Some Linux distributors also provide kernels that use separate 4GB address spaces for user processes and the kernel. Such Linux kernels provide sufficient kernel virtual address space on typical systems.
If your system is equipped with an X86-64 (AMD64/EM64T) processor, it is recommended that you switch to a 64-bit Linux kernel/distribution. Due to the significantly larger address space provided by the X86-64 processors' addressing capabilities, X86-64 kernels will not run out of kernel virtual address space in the foreseeable future.
Although I could not find any error as stated in the known issues page, I figured it couldn't hurt to try it.
So at the boot loader press 'esc' and edit the kernel line adding 'vmalloc=192M'
I did not have to do anything with GRUB though.
Worked for me, hopefully this will help someone else too!