Bug 904 - nvidia fails on 32 bit installation, needs kernel parameter vmalloc
Summary: nvidia fails on 32 bit installation, needs kernel parameter vmalloc
Alias: None
Product: Mageia
Classification: Unclassified
Component: RPM Packages (show other bugs)
Version: Cauldron
Hardware: i586 Linux
Priority: Normal major
Target Milestone: ---
Assignee: Anssi Hannula
QA Contact:
Keywords: Triaged
Depends on:
Reported: 2011-04-20 07:26 CEST by Peter D
Modified: 2011-05-01 15:24 CEST (History)
0 users

See Also:
Source RPM: nvidia-current
Status comment:

Xorg.0.log nvidia driver failed without vmalloc (8.15 KB, text/plain)
2011-04-21 05:53 CEST, Peter D
/mnt/test/var/log/dmesg nvidia failed without vmalloc (39.96 KB, text/plain)
2011-04-21 05:55 CEST, Peter D
lspcidrake, executed from mandriva (3.25 KB, text/plain)
2011-04-21 07:37 CEST, Peter D
oops, lspcidrake *-v* (4.45 KB, text/plain)
2011-04-21 07:39 CEST, Peter D
requested dmesg output (41.23 KB, text/plain)
2011-04-22 06:38 CEST, Peter D
kdm.log contains /dev/nvidia0 error (10.71 KB, text/plain)
2011-04-22 06:39 CEST, Peter D
Xorg.0.log changed kernel parameters - not working (8.14 KB, text/plain)
2011-04-26 11:06 CEST, Peter D
standard dmesg (40.55 KB, text/plain)
2011-04-28 07:19 CEST, Peter D
standard meminfo (1.25 KB, text/plain)
2011-04-28 07:19 CEST, Peter D
standard vmallocinfo (14.99 KB, text/plain)
2011-04-28 07:20 CEST, Peter D
256M dmesg (41.25 KB, text/plain)
2011-04-28 07:21 CEST, Peter D
256M meminfo (1.25 KB, text/plain)
2011-04-28 07:22 CEST, Peter D
256M vmallocinfo (15.69 KB, text/plain)
2011-04-28 07:22 CEST, Peter D

Description Peter D 2011-04-20 07:26:57 CEST
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

How reproducible:

Every time.

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".
Comment 1 Ahmad Samir 2011-04-20 18:57:03 CEST
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

Keywords: (none) => NEEDINFO
Assignee: bugsquad => anssi.hannula
Source RPM: (none) => nvidia-current

Ahmad Samir 2011-04-20 18:57:20 CEST

See Also: (none) => https://qa.mandriva.com/show_bug.cgi?id=60762

Comment 2 Peter D 2011-04-21 05:53:10 CEST
Created attachment 261 [details]
Xorg.0.log nvidia driver failed without vmalloc
Comment 3 Peter D 2011-04-21 05:55:06 CEST
Created attachment 262 [details]
/mnt/test/var/log/dmesg nvidia failed without vmalloc
Comment 4 Ahmad Samir 2011-04-21 06:19:52 CEST
One more thing, the output of 'lspcidrake -v'
Comment 5 Peter D 2011-04-21 07:37:33 CEST
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.
Comment 6 Peter D 2011-04-21 07:39:06 CEST
Created attachment 264 [details]
oops, lspcidrake *-v*
Comment 7 Ahmad Samir 2011-04-21 17:41:03 CEST

Keywords: NEEDINFO => Triaged

Comment 8 Anssi Hannula 2011-04-21 19:14:26 CEST
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.
Comment 9 Ahmad Samir 2011-04-21 19:17:03 CEST
(I missed it, sorry).
Comment 10 Peter D 2011-04-22 06:38:05 CEST
Created attachment 272 [details]
requested dmesg output
Comment 11 Peter D 2011-04-22 06:39:41 CEST
Created attachment 273 [details]
kdm.log contains /dev/nvidia0 error
Comment 12 Anssi Hannula 2011-04-23 00:22:03 CEST
Try booting without vmalloc=256M, instead adding "video=vesa:off vga=normal".
Comment 13 Peter D 2011-04-26 11:06:47 CEST
Created attachment 292 [details]
Xorg.0.log changed kernel parameters - not working
Comment 14 Peter D 2011-04-26 11:09:42 CEST
An older GeForce 8400 GS (?) series card works OK with the 32 bit installation.
Comment 15 Anssi Hannula 2011-04-27 19:09:42 CEST

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.
Comment 16 Peter D 2011-04-28 07:18:05 CEST
There is a vmap error near the bottom of std_dmesg.txt that might be relevant.
Comment 17 Peter D 2011-04-28 07:19:16 CEST
Created attachment 304 [details]
standard dmesg
Comment 18 Peter D 2011-04-28 07:19:55 CEST
Created attachment 305 [details]
standard meminfo
Comment 19 Peter D 2011-04-28 07:20:30 CEST
Created attachment 306 [details]
standard vmallocinfo
Comment 20 Peter D 2011-04-28 07:21:21 CEST
Created attachment 307 [details]
256M dmesg
Comment 21 Peter D 2011-04-28 07:22:01 CEST
Created attachment 308 [details]
256M meminfo
Comment 22 Peter D 2011-04-28 07:22:33 CEST
Created attachment 309 [details]
256M vmallocinfo
Comment 23 Anssi Hannula 2011-04-30 16:15:35 CEST
Can you try vmalloc=192M?

We can probably make it the default level for our kernel.
Comment 24 Peter D 2011-05-01 04:54:18 CEST
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.
Comment 25 Anssi Hannula 2011-05-01 10:29:57 CEST
Maybe (though unlikely or at least quite difficult), but it wouldn't help as other drivers etc. consume vmalloc space as well.
Comment 26 Anssi Hannula 2011-05-01 15:24:09 CEST
This should be fixed with kernel, 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

Resolution: (none) => FIXED

Note You need to log in before you can comment on or make changes to this bug.