Description of problem:
New-ish nVidia cards, like the GeForce 210, require more memory than is automatically allocated to them on a standard 32 bit installation.
An extra kernel parameter like, "vmalloc=256M" (I have no idea how to calculate the "correct" value) added to grub or lilo configuration files is a work around.
This kernel parameter is necessary for the nVidia driver. It is not necessary for the nv driver. I don't know about the nouveau driver - that might have failed for another reason.
This is the same bug as Mandriva bug #60762.
Version-Release number of selected component (if applicable):
Mageia 1 Beta 1
Steps to Reproduce:
1. install 32 bit operating system on 64 bit hardware
(including GeForce 210 video card).
2. install nVidia driver rpms
3. try to start X
"Fix" by adding kernel parameter "vmalloc=256M".
Please try booting without vmalloc=, then attach /var/log/Xorg.0.log (without restarting X), and dmesg.tx that results from executing as root:
dmesg > /tmp/dmesg.txt
Created attachment 261 [details]
Xorg.0.log nvidia driver failed without vmalloc
Created attachment 262 [details]
/mnt/test/var/log/dmesg nvidia failed without vmalloc
One more thing, the output of 'lspcidrake -v'
Created attachment 263 [details]
lspcidrake, executed from mandriva
This was done from a Mandriva installation rather than a Mageia system, but on the same hardware. So, it should be near enough, but if not ask again and I will redo it after a re-boot.
Created attachment 264 [details]
oops, lspcidrake *-v*
Peter, /var/log/dmesg is not enough, it only contains the messages from early boot, before NVIDIA is even loaded. Use the 'dmesg' command as instructed by Ahmad.
(I missed it, sorry).
Created attachment 272 [details]
requested dmesg output
Created attachment 273 [details]
kdm.log contains /dev/nvidia0 error
Try booting without vmalloc=256M, instead adding "video=vesa:off vga=normal".
Created attachment 292 [details]
Xorg.0.log changed kernel parameters - not working
An older GeForce 8400 GS (?) series card works OK with the 32 bit installation.
Can you give the dmesg output when vmalloc=256M is used?
Also, provide contents of /proc/meminfo and /proc/vmallocinfo both when vmalloc=256M is used and when it is not used.
There is a vmap error near the bottom of std_dmesg.txt that might be relevant.
Created attachment 304 [details]
Created attachment 305 [details]
Created attachment 306 [details]
Created attachment 307 [details]
Created attachment 308 [details]
Created attachment 309 [details]
Can you try vmalloc=192M?
We can probably make it the default level for our kernel.
Is there any way to interrogate the video card to determine how much memory it needs?
The card that I have is a Gainward GeForce 210 wtih 512MB of DDR2.
What happens on a GF220 or GF240 or a card with 1GB of memory does is unknown to me.
On a sample size of one, 136M fails and 144M works.
Maybe (though unlikely or at least quite difficult), but it wouldn't help as other drivers etc. consume vmalloc space as well.
This should be fixed with kernel 220.127.116.11-0.rc1.1.mga1, the default minimum vmalloc area size was increased by 64M (to 192M or slightly below it).
Thank you for reporting this and for providing the requested information :)
Continuing on my previous comment, btw, for example, looking at your vmallocinfo file I see that your NVIDIA driver takes around 30-40MB of vmalloc space, but your cx88 based DVB-T card driver takes over 20MB and sound drivers take 36MB as well. So this isn't really a NVIDIA issue per se, just a combination of hardware that causes high vmalloc usage in their drivers.
Also, the graphics card's memory amount generally doesn't influence the amount of vmalloc area used.
For the record (though now unneeded), here's NVIDIA's take on this issue in their documentation: http://http.download.nvidia.com/XFree86/Linux-x86/270.41.06/README/knownissues.html#kva_exhaustion