Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 61936 - nVIDIA howto needs 2D acceleration (yes, *2D*) information
Summary: nVIDIA howto needs 2D acceleration (yes, *2D*) information
Status: RESOLVED FIXED
Alias: None
Product: [OLD] Docs-user
Classification: Unclassified
Component: nVIDIA Trouble Shooting Guide (show other bugs)
Hardware: AMD64 Linux
: High normal (vote)
Assignee: Sven Vermeulen (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-08-27 08:29 UTC by Chris Monson
Modified: 2004-08-29 05:05 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Monson 2004-08-27 08:29:13 UTC
The nVIDIA documentation is actually really wonderful, as are the nvidia-glx, nvidia-kernel, and nvidia-settings ebuilds.  They're just great and they got me up and running with 3D acceleration in no time flat.

A problem occurs on MTRR systems (like the amd64), however, that is worthy of note.  I am using a dual Opteron system, and after enabling the 'nvidia' module in xorg.conf, 3D worked flawlessly, but the 2D performance was so abysmal as to make the system very difficult to use.  This has been discussed at length on various forums, and it appears that nVIDIA uses their own 2D acceleration architecture instead of XAA, which causes the problem.

Although no errors are given in Xorg.0.log that would indicate this, the problem is that the MTRR is unable to set up write-combining ranges (warnings are shown in the log when using 'nv', but not when using 'nvidia', and 'nv' 2D acceleration works just fine without write-combining).

I know how to fix this and am proposing that the solution be added to the documentation.

Reproducible: Always
Steps to Reproduce:
1. Look at nVIDIA documentation
2. Discover loads of good stuff, but nothing on 2D acceleration
3. Search Google Groups and various other locations looking for answers

Actual Results:  
Found lots of irate users, no answers.

Expected Results:  
Since this is a problem that others are having, I think it would be good to add
a note to the documentation for amd64 users, or anyone with an MTRR machine
(machines equipped to handle more than 4 GB of RAM).  The way to fix the nVIDIA
2D acceleration is to change a BIOS setting that allows write-combining to work.
 Here are my extremely rough notes on how to solve the problem.


First, if you are using a 64-bit machine, you must have MTRR support in your
kernel.  You can find this out in a variety of ways.  If you have the
configuration built into your kernel, you can do this:

> zcat /proc/config.gz | grep CONFIG_MTRR

If not, you can just check that /proc/mtrr exists.  If it doesn't, you need to
add CONFIG_MTRR=y to your kernel config and recompile.

Now, if you are having troubles with the nVIDIA driver's 2D acceleration, it is
likely that it is unable to set up a write-combining range.  Cat out /proc/mtrr.
 If you are able to use write-combining, you should see no entries with the
'uncachable' type in them.  Everything should either be 'write-back' or
'write-combining'.

If you do see an entry (especially near the top) with the 'uncachable' type, it
is probably blocking write-combining for the entire lower 4GB address space,
which is where PCI and AGP get assigned.  You will need to reboot the computer
and go into the BIOS settings to fix this.

Once in the BIOS settings, you need to find the settings for MTRR.  On my dual
Opteron machine (with a Tyan motherboard), it is under the CPU settings.  The
MTRR setting has two possible values on my system: 'continuous' and 'discrete'.
 My BIOS defaulted to 'continuous', which marks the entire lower 4GB range as
uncachable.  Setting it to 'discrete' leaves it unassigned, allowing the
operating system to assign types to that space.  The setting you want is
'discrete', or whatever corresponds to leaving that space unassigned so that
Linux can do the assigning.

If your Xorg server is all set up to run with 'nvidia', you should just save
your changes and reboot, and you'll find that 2D acceleration magically works
again.  Just to be sure, cat out /proc/mtrr and see if there are write-combining
ranges there (AFTER starting Xorg).  If there are, you are golden.

Gentoo Base System version 1.4.16
Portage 2.0.50-r10 (default-amd64-2004.2, gcc-3.3.4, glibc-2.3.4.20040619-r1,
2.6.7-gentoo-r14)
=================================================================
System uname: 2.6.7-gentoo-r14 x86_64 5
Autoconf: sys-devel/autoconf-2.59-r4
Automake: sys-devel/automake-1.8.5-r1
ACCEPT_KEYWORDS="amd64"
AUTOCLEAN="yes"
CFLAGS="-pipe -O2"
CHOST="x86_64-pc-linux-gnu"
COMPILER=""
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.2/share/config /usr/kde/3/share/config /usr/share/config
/usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/
/usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/
/usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-pipe -O2"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs ccache"
GENTOO_MIRRORS="ftp:///ftp-stud.fht-esslingen.de/pub/Mirrors/gentoo/
ftp://mirror.pudas.net/gentoo http://gentoo.ccccom.com ftp://gentoo.ccccom.com"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X alsa amd64 apm arts avi berkdb cdr crypt cups encode esd foomaticdb gdbm
gif gnome gpm gtk gtk2 imlib jpeg kde ldap libg++ libwww mikmod motif mpeg
ncurses nls nogcj oggvorbis opengl oss pam pdflib perl png python qt quicktime
readline sdl slang spell ssl tcltk tcpd tetex truetype xml2 xmms xv zlib"
Comment 1 Sven Vermeulen (RETIRED) gentoo-dev 2004-08-29 05:05:37 UTC
I've added a troubleshooting chapter to the guide with information on 2D for 4Gb+ systems.