summaryrefslogtreecommitdiff
blob: b915702db50ce7a3dfdfbddee6f8687662f8a4ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
<html>
  <head>
    <title> nVidia Linux Troubleshooting Guide </title>
  </head>

  <body bgcolor=#ffffff fbcolor=#000000>
    <pre>

    nVidia Linux Driver Troubleshooting Guide   (Feb 13 2001)
    =========================================

    allright, you've installed the nVidia Linux drivers and fired up X
    in anticipation of all the wonderful things it can do. For some
    reason however, things didn't quite work out as expected and now
    you're sitting looking at a blank screen or, if you were lucky,
    at a nice console. while you can't deny the beauty of a 80x40 terminal
    you wouldn't mind fraggin' the guy next door ... what to do?

    luckily, most problems you could have run into have already been
    encountered by other people. even better, there are fixes to most of
    those problems. but: where to look for (and get) answers? this document
    may just be what you want.

    before going any further - most of the information herein is what i
    have seen in #nvidia (irc.openprojects.net) and my own experience with
    the drivers. i've also taken the liberty to take some information from
    the driver and its documentation. the IRC channel mentioned is a good
    place to look for both help and various files/patches.

    you may want to check your system with the nv_check.sh script first. it
    can be downloaded (like all the patches i refer to) from iCE-DCC, a DCC
    offer bot at home in the above IRC channel.

    suggestions, questions, etc:

        christian zander <a href=phoenix@minion.de>phoenix@minion.de</a>


    AGP / KERNEL
    =============

    as you may have noticed already, the nVidia driver needs a kernel level
    resource manager to function properly. this resource manager is the
    NVdriver kernel module. among its responsibilities are access control
    to the device(s), locating and initializing certain aspects of the
    hardware, controlling the AGP driver, DMA to name some. 

    it is extremely important that the kernel module works properly, or you
    will never have the fun that you were promised in exchange for $$.


    o  AGPGART vs. NVAGP

       as far as linux is concerned, your nice AGP port is just another
       PCI slot and is detected as such. since you want to use what AGP
       has to offer beyond that, you need a proper driver. with the 
       nVidia Linux drivers, you get to choose between nVidia's AGP
       driver that was ported from NT (NVAGP) and AGPGART, which was/is
       developed by Jeff Hartmann and a number of contributors. AGPGART
       is part of the official kernel (2.2.18+, 2.3.??+) and enabled in
       many distributions by default. Which one of the two you want to
       use largely depends on (1) your AGP chipset (2) your preferences.

       if everything worked out for you with whichever driver you chose
       to use, you need not worry about this. chances are however, that
       things didn't quite work out for you (you're reading this).

       one way of figuring out if it is your AGP setup that is causing
       problems (and sometimes the only way to get things going at all)
       is to completely disable AGP support in the driver. to do this,
       you add this option to the Screen setion of your XF86Config file:

            Option "NvAgp" "0"

       some combinations of drivers and AGP chipsets can make your system
       unstable or even unusable, so look out. these combinations should
       work (very incomplete, let me know about other configs):

       Intel:    440BX   NVAGP   / AGPGART (doesn't work for some people)
                 810     NVAGP   / AGPGART
                 815(e)  NVAGP   / AGPGART (w/ 815 patch)
                 
       Via:      Apollo  AGPGART / NVAGP
                 MVP3    AGPGART
                 MVP4    AGPGART
                 KX133   NVAGP
                 KT133   NVAGP

       ALi:      ...     AGPGART (2.4.0+,  2.2.18 w/ ALi patch)

       SiS:      ...     AGPGART (?)


       in case you're wondering what AGP chipset your mainboard may be
       using - either consult your mainboard's documentation or try to
       retrieve the information from /proc/pci

           grep AGP /proc/pci


       now that you know what driver you want, how do you actually go
       about setting the system up to use it?

        o  NVAGP

           compile the NVdriver kernel module with:

               make clean
               make NVdriver BUILD_PARAMS=NOAGPGART
               make install

        o  AGPGART

           enable support for AGPGART in your kernel. no special action
           must be taken thereafter, NVdriver will automagically be
           built with support for it. i strongly recomment that you use
           at least 2.2.18 or a recent development kernel with AGPGART.


        == 0.9-6 changes ==

        starting with this version, the driver will load the AGP
        driver dynamically when X starts. Which driver it loads will
        be controlled by the NvAgp option in the Screen section of the
        XF86Config file:

           Option "NvAgp" "0"  ... disable AGP support
           Option "NvAgp" "1"  ... use NVAGP
           Option "NvAgp" "2"  ... use AGPGART

        make sure you don't have the 'other' AGP driver loaded when
        instructing X to load e.g. NVAGP. some distributions load
        AGPGART by default - X will catch this case, but won't be
        able to switch the AGP driver on the fly (see below).


        bear in mind that switching AGP drivers or disabling them
        usually requires a system reboot before the changes really take
        effect. loading different AGP drivers w/o a reboot may cause
        lockups or general system instability.


    o  AGP Aperture

       basically, this is the amount of RAM that you allow your card to
       use via the AGP interface (for textures, etc). while it is left
       to you to decide on the value for this setting, it is generally
       desirable to use no more than 1/2 of your RAM. 32M-64M seem to be
       reasonable values. don't set this to a value equal to the amount
       of RAM you have or even higher. AGPGART may lock your machine if
       you do. (set this in your BIOS)


    o  AGP Fast Writes

       meant to increase performance, this setting usually locks up
       machines. in any case, the performance gains aren't worth the
       hazzle. (set this in your BIOS)

       (alternatively, you can pass NVreg_EnableAGPFW=0 to NVdriver)


    o  AGP Speeds (1x, 2x, 4x)

       this controls the bandwidth with which your AGP bus operates. while
       most of todays chipsets support 4x operation, this can cause lockups
       and strange behaviour with some of them. the driver knows about many
       such flaws and enables workarounds. Via chipsets are forced to 2x
       operation by default.

       you can influence the AGP speed setting with an option passed to
       NVdriver:

           modprobe NVdriver NVreg_ReqAGPRate=0x2  ( 0x1 | 0x2 | 0x4 )

       or with an options entry in modules.conf:

           alias char-major-195 NVdriver
           options NVdriver NVreg_ReqAGPRate=0x2

       (if you want 4x operation with Via chipsets, use NVreg_EnableVia4x=1)


    o  AGP Workarounds && AGPGART

       as mentioned in the previous section, the driver enables a set of
       workarounds for certain AGP chipsets. starting with version 0.9-5 of
       the driver, these workarounds are applied to both NVAGP and AGPGART.
       if you don't want to use them with AGPGART (for whatever reason), you
       can disable the default behaviour with the NVreg_UpdateKernelAGP=0
       option to NVdriver.


    o  IRQ / Assigning an Interrupt to VGA

       the nVidia driver needs an interrupt assigned to your graphics
       adapter to work properly. make sure that you enable the 'assign
       IRQ to vga' option in your BIOS (or however your BIOS calls it).


    o  Building NVdriver

       building the NVdriver kernel module is straight forward in most
       cases:

           make clean
           make NVdriver (optionally BUILD_PARAMS=NOAGPGART, see above)
           make install

       there are situations, however when this won't work out. i already
       mentioned options that allow you to choose between AGPGART and NVAGP.

       the driver assumes that you have your kernel headers installed in
       /usr/src/linux/include. if that is not correct, use the SYSINCLUDE
       option:

           make clean
           make NVdriver SYSINCLUDE=/where/ever/your/headers/are
           make install

    o  Character Special Files

       nVidia's XFree86 driver module communicates with the NVdriver kernel
       module through a set of character special files located in the /dev
       directory. if they weren't created or have improper permissions, X
       will fail.

       crw-rw----    1 root     video    195,   0 Jan  4 23:19 /dev/nvidia0
       crw-rw----    1 root     video    195,   1 Jan  4 23:19 /dev/nvidia1
       crw-rw----    1 root     video    195,   2 Jan  4 23:19 /dev/nvidia2
       crw-rw----    1 root     video    195,   3 Jan  4 23:19 /dev/nvidia3
       crw-rw----    1 root     video    195, 255 Jan  4 23:19 /dev/nvidiactl

       as you can see, i chose to make the files accessible only to root and
       members of the group 'video'. your choice may be different - in any
       case, make sure that the user you're trying to run X as has access to
       these files (read and write access).


    o  devFS

       as of version 2.3.?? of the linux kernel, an alternative method has
       been introduced, the socalled devFS. while explaining the mechanism
       itself is out of the scope of this document, i want to note that a
       patch exists for NVdriver that makes it devFS aware.


    o  procFS

       starting with 0.9-6, the nVidia driver will provide information about
       your setup in /proc/nv/card[0-3]. There's a patch to enable part of
       that for 0.9-5.

    o  BIOS Repost

       the driver attempts to repost the card's bios when X starts to ensure
       that the card is in a state known to the driver. unfortunately, this
       causes problems with some cards. you can disable this behaviour with
       yet another option to NVdriver:

           modprobe NVdriver NVreg_SkipBiosPost=1


    o  TNT SGRAM vs. SDRAM

       the driver detects the type of memory used on TNT cards by reading
       its embedded bios. unfortunately, some cards have been flashed with
       improper bioses. if you feel that this may be the case with your
       setup, you may want to try the NVreg_VideoMemoryTypeOverride option
       to NVdriver ( SDRAM = 1, SGRAM = 2 ). this doesn't always work, see
       os-registry.c for details.


    o  Kernel 2.4.0

       quite some changed since 2.2.x and lots of these changes affected the
       nVidia driver. you can get patches for this kernel series from #nvidia.

       o "Ignoring changed section attributes for .modinfo"

         if this message annoys you, you'll want to comment out the
         offending line in /usr/src/linux/include/linux/modules.h. If you
         don't mind it - leave it alone, its harmless.



    XFree86 / OpenGL
    ================


    before i start describing some of the most common problems with this
    part of the driver, i want to explain some things that are commonly
    misunderstood and seem to confuse a fair amount of people:

    o  nVidia's Driver Architecture vs. DRI and DRM

       nVidia's driver does not make use of the Direct Rendering Interface
       that made its debut with XFree86 4.0.0. instead, nVidia chose to
       implement its own mechanism. the architectures are quite similar:
       both use a kernel level resource manager (NVdriver vs. DRM) and both
       provide a mechanism by means of which high performance OpenGL
       rendering can be achieved by allowing the OpenGL implementation to
       talk directly to the hardware instead of using GLX when running
       locally.


    o  nVidia's OpenGL Implementation vs. Mesa

       nVidia's driver comes with its own OpenGL implementation and does not
       use Mesa, which is shipped with XFree86. nVidia's OpenGL libraries
       are based on SGI's OpenGL 1.2 implementation and provide a set of
       extensions that allow making use of advanced features such as using
       S3TC compressed textures.


    o  nVidia's XFree86 Driver Module vs. XFree86's

       the 'nv' driver module shipped with XFree86 has nothing in common
       with the 'nvidia' driver module provided by nVidia. it does not
       rely on a kernel module to operate, does not require an interrupt
       and 'only' supports 2D operation. starting with 4.0.2 it works on
       all of nVidia's graphics adapters, including GeForce 2 cards. if
       you installed a distribution with XFree86 4.0.x, you are likely to
       have this driver installed. it is a good idea to test your X
       installation by attempting to start X with the 'nv' driver module.


    i will now list some of the most common problems that people encounter
    with the nVidia drivers. many of the things listed here are covered in
    the official documentation included with the driver package, but since
    nobody seems to read it, i list them here anyway.


    o  libglx.a / libGLcore.a / libGL.so.1.2.303... (Mesa)

       my alltime favorites ... as mentioned above, nVidia's driver does
       not make use of the Mesa libraries shipped with XFree86 - in fact,
       it conflicts with them.

       !! This is THE most common error source !!

       if your distribution installed and configured X for you, you are
       likely to have a Module section in your XF86Config that looks like
       this:

           Section "Module"
             ...
             Load  "glx"
             Load  "GLcore"
             ...
           EndSection

       these two statements are what you need to pay particular attention
       to:

       o  Load "glx"

          this instructs X to load the GLX extension module. with a default
          XFree86 installation, this translates to libglx.a. the nVidia
          driver provides its own GLX extension, libglx.so. this is where
          the fun begins: if you didn't remove libglx.a, X will continue to
          load libglx.a, which can't work with nVidia's driver.

          !! delete or rename libglx.a (/usr/X11R6/lib/modules/extensions) !!


       o  Load "GLcore"

          not much to say here other than that you don't want this line in
          your modules section. libGLcore.so as provided by nVidia will be
          loaded dynamically - don't load it as an X extension, it won't
          work.

          You can easily find out if you're loading libglx.a and/or
          libGLcore.a by looking at /var/log/XFree86.0.log:

              ...
              (II) LoadModule: "glx"
              (II) Loading /usr/X11R6/lib/modules/extensions/libglx.a
              (II) Module glx: vendor="The XFree86 Project"
                      compiled for 4.0.1, module version = 1.0.0
                      ABI class: XFree86 Server Extension, version 0.1
              (II) Loading extension GLX
              (II) Loading sub module "GLcore"
              (II) LoadModule: "GLcore"
              (II) Reloading /usr/X11R6/lib/modules/extensions/libGLcore.a
              ...

          what you want to see here is something like:

              ...
              (II) LoadModule: "glx"
              (II) Loading /usr/X11R6.4/lib/modules/extensions/libglx.so
              (II) Module glx: vendor="NVIDIA Corporation"
                      compiled for 4.0.1, module version = 1.0.5
                      Module class: XFree86 Server Extension
                      ABI class: XFree86 Server Extension, version 0.1
              (II) Loading extension GLX
              ...


    the last part of Mesa that can cause problems is the actual OpenGL
    library, commonly called libGL.so.1.2.303... or similar. depending on
    where it is installed, it will conflict with nVidia's OpenGL library
    sooner or later. most games load libGL.so dynamically - they load it
    when they first start and reload it when loading a map or when applying
    new video settings. it happens quite often that a game loads the proper
    libGL.so the first time around and Mesa later on.

    symptoms of conflicts with Mesa (libraries and extensions) are crashes
    with Segmentation Faults (Signal 11) - either instantaneously after you
    start X or when you attempt to run an OpenGL application. another
    indication of such a conflict is extremely poor performance (1-5 fps),
    which happens when you get Mesa software rendering.


    o  nv_drv.o vs. nvidia_drv.o

       another common problem - after a default installation, XFree86's 'nv'
       driver module will be loaded. you want to load 'nvidia'. make sure
       your Device section in XF86Config looks somewhat like:

           Section "Device"
             Identifier  "nVidia GeForce 256 DDR"
             Driver      "nvidia"
           EndSection


    o  X Instantaneously Crashes With Signal 11

       check /var/log/XFree86.0.log for warnings like:

       (WW) module ABI minor version (2) is newer than the server's version (1)

       this commonly happens when you attempt to run 0.9-5 or later with
       XFree86 4.0.0 or 0.9-4 or earlier with XFree86 4.0.1 or later. i
       recommend you upgrade X to 4.0.2 and get whichever is the latest
       driver when you read this document.


    o  X Crashes Complaining about DMA

       probably an improper kernel - use 2.2.18+ or 2.4.0+.


    o  Monitor Looses Sync when staring X

       this can have various reasons:

       o  you specified improper modelines - either delete any explicit
          modeline that may have been installed in your Monitor section or
          correct them.


       o  the modelines are find, but the driver doesn't appear to like
          them - try these options in your Screen section:

              Option      "IgnoreEdid"       "1"
              Option      "GenerateRTList"   "0"


    o  X && MTRRs

       if you want support for MTRRs (you do), you'll have to enable support
       for them in the kernel itself before the driver will be able to use
       them. MTRRs greatly influence the speed of your setup.


    o  X Deletes Desired Modes (hsync out of range)

       X decided that your monitor is not capable of safely displaying the
       mode you asked it for. make sure the values you specified for
       HorizSync and VertRefresh match your monitor (look them up in your
       monitor's manual). if no values are specified, X will use rather
       conservative values.


    o  X Keeps Telling (Warning) You About a Polarity Option

       commonly happens when switching to console - usually harmless; if
       you don't know that X is talking about and want to get rid of the
       messages, use this in your Screen section:

           Option      "OverridePolarity" "1"

       This may speed up the console switches as well.


    o  DDC

       yes, XFree86 4.0.x supports DDC - you can enable support for it by
       loading the appropriate module:

           Load "ddc"

       this will only work if both your video card and monitor support DDC.
       don't use explicit modelines alongside this option.


    o  Game XY Doesn't Go Fullscreen

       this is a config problem. two prerequisites must be met before a game
       will be able to change resolutions using the X Vidmode Extenstion:

       you must have this line in XF86Config's Module Section:

           Load "extmod"    (or alternatively, a SubSection for "extmod")

       you must have a proper Display SubSection in your Screen section - it
       must define the mode the game needs for the color depth you're
       running X at. e.g.:

           Subsection "Display"
             Depth  24
             Modes  "1152x864" "1024x768" "800x600" "640x480"
           EndSubsection


    o  X Goes 16bpp, You Want 32, But That Doesn't Work

       24/32bpp in X 4.x is now labeled Depth 24. This is controlled by two
       options in your Screen Section:

           DefaultDepth 24
           DefaultFbBpp 32

       again, make sure you have a proper Display Subsection.


    o  Wheelmouse Doesn't Work

       not nvidia related, but still asked quite often. you need to set
       the protocol to IMPS/2 and map the 4th and 5th button to the Z
       Axis. this is what my config looks like:

           Section "InputDevice"
             Identifier  "Mouse"
             Driver      "mouse"
             Option      "Device"  "/dev/mouse"
             Option      "Protocol"    "IMPS/2"
             Option      "ZAxisMapping"   "4 5"
           EndSection

       i'm using a USB mouse, /dev/mouse is a symling to /dev/input/mice in
       my case.


    o  Mouse SUCKS In Games (QuakeIII, FPS XY)

       many games use DGA mouse for mouse input in games. this is similar
       to the directmouse thing in windows. all versions of XFree86 prior to
       4.0.2 had a somewhat broken DGA 1 mouse handling. If you want decent
       mouse performance upgrade to 4.0.2.

       in addition to that, you'll have to load the DGA extension. many
       config tools disable that by default. use:

           Load "extmod"

       instead of a SubSection if you want to make sure it gets loaded.
       after that, you'll have to enable DGA mouse in the game itself. for
       QuakeIII this comes down to

           seta in_dgamouse "1"

       in the QuakeIII config file ( ~/.q3a/baseq3/q3config.cfg ).

       XFree86 4.0.2 introduce DGA 2, which is said to work even better.
       while QuakeIII doesn't support it yet, you can make pretty much all
       Loki games use it by compiling SDL with support for it.

    o  Application XY misses GLUT or GLU (glut.h / glu.h)

       GLUT is a windowing toolkit that provides programmers with an easy
       way to setup windows with OpenGL contexts and allows some basic
       event handling (OpenGL knows nothing about that). It is not
       distributed as part of the nVidia driver. GLU is an utility library
       that sits on top of OpenGL. It is also not part of nVidia's driver
       distribution.

       Both GLUT and GLU can be obtained from the Mesa Project homepage and
       are likely to be available as packages from your Linux distribution.


    == Additions from Michael Thome <mthome@bbn.com> ==


    o  Don't use the kernel nvidia FBdev driver, it conflicts with the
       proprietary NVIDIA drivers and causes all kinds of unpleasant
       effects (crashes, display problems, etc).

    o  Aureal's closed source Vortex drivers don't seem to come along
       with NVIDIA's binary drivers on some configuratins, possibly due
       to IRQ conflicts.

       /* 
          IRQ sharing seems to be a problem with NVIDIA's driver. I was
          unable to persuade a Fast Ethernet card (RTL8139) to work with 
          the driver under similar circumstances. If you have problems
          with hardware failing to operate properly or not at all, you
          may want to double-check that its not sharing its interrupt
          with your graphics adapter.
       */

    o  100dpi mode

       Unlike the XFree86 driver, the NVIDIA module does not use DDC to
       figure out the screen resolution (dpi). I needed to add the
       following to my monitor section in order to get into 100dpi mode:


           Section "Monitor"
                   Identifier   "Monitor0"
                   VendorName   "Dell"
                   ModelName    "Monitor Model"

                   HorizSync    30.0-107.0
                   VertRefresh  48.0-160.0

                   # for 100dpi
                   DisplaySize  406 304
           EndSection

       The parameters are the monitor's displayable width and height
       in mm. I chose these values to result in 100x100dpi while in
       1600x1200 mode.

       /*
          I didn't play around with this myself ...
       */


    The End.


    My /etc/X11/XF86Config [0.9-6] for those who are interested:


    Section "Module"
      Load  "bitmap"
      Load  "dbe"
      Load  "extmod"
      Load  "freetype"
      Load  "glx"
      Load  "type1"
      Load  "v4l"
    EndSection

    Section "Files"
      RgbPath   "/usr/X11R6.4/lib/X11/rgb"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/misc/"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/75dpi/:unscaled"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/100dpi/:unscaled"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/75dpi/"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/100dpi/"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/TrueType/"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/local/"
      FontPath  "/usr/X11R6.4/lib/X11/fonts/Type1/"
    EndSection

    Section "ServerFlags"
      Option  "SuspendTime"  "0"
      Option  "StandbyTime"  "0"
      Option  "BlankTime"    "0"
      Option  "OffTime"      "0"
    EndSection

    Section "InputDevice"
      Identifier  "Keyboard"
      Driver      "Keyboard"
      Option      "XkbRules"  "xfree86"
      Option      "XkbModel"    "pc102"
      Option      "XkbLayout"      "us"
    EndSection

    Section "InputDevice"
      Identifier  "Mouse"
      Driver      "mouse"
      Option      "Device"  "/dev/mouse"
      Option      "Protocol"    "IMPS/2"
      Option      "ZAxisMapping"   "4 5"
      Option      "Buttons"          "5"
    EndSection

    Section "Monitor"
      Identifier  "Vision Master Pro 17"

      HorizSync    27.0-92.0
      VertRefresh  50-160

      Mode "1152x864"
        DotClock 137.65
        HTimings 1152 1184 1312 1536
        VTimings  864  866  882  902
        Flags    "-HSync" "-VSync"
      EndMode

      Mode "1024x768"
        DotClock 115.50
        HTimings 1024 1056 1248 1440
        VTimings  768  771  781  802
        Flags    "-HSync" "-VSync"
      EndMode

      Mode "800x600"
        DotClock 69.65
        HTimings 800 864 928 1088
        VTimings 600 604 610  640
        Flags    "-HSync" "-VSync"
      EndMode

      Mode "640x480"
        DotClock 45.80
        HTimings 640 672 768 864
        VTimings 480 488 494 530
        Flags    "-HSync" "-VSync"
      EndMode
    EndSection

    Section "Device"
      Identifier  "nVidia GeForce 256 DDR"
      Driver      "nvidia"
    EndSection

    Section "Screen"
      Identifier  "Screen"
      Device      "nVidia GeForce 256 DDR"
      Monitor     "Vision Master Pro 17"
      Option      "NvAgp" "2"

      DefaultDepth 24
      DefaultFbBpp 32

      Subsection "Display"
        Depth  16
        Modes  "1152x864" "1024x768" "800x600" "640x480"
      EndSubsection

      Subsection "Display"
        Depth  24
        Modes  "1152x864" "1024x768" "800x600" "640x480"
      EndSubsection
    EndSection

    Section "ServerLayout"
      Identifier   "Chronos"
      Screen       "Screen"
      InputDevice  "Keyboard" "CoreKeyboard"
      InputDevice  "Mouse"  "CorePointer"
    EndSection


    Ror those who compile X themselves, this is my host.def that gets
    rid of some of the stuff you don't need anyway and adds some PPro 
    optimization (copy to xc/config/cf):


    #define DefaultCCOptions     -O3 -march=i686 -Wall -ansi -pedantic
    #define DefaultGcc2i386Opt   -O3 -march=i686 -fno-strength-reduce
    #define LibraryCDebugFlags   -O3 -march=i686 -fno-strength-reduce
    #define DefaultCDebugFlags   -O3 -march=i686 -fno-strength-reduce
    #define OptimizedCDebugFlags -O3 -march=i686 -fno-strength-reduce

    #define Freetype2Dir      /usr/local
    #define ProjectRoot     /usr/X11R6.4

    #define XF86CardDrivers       nv v4l
    #define XInputDrivers          mouse

    #define BuildServersOnly          NO
    #define BuildXF86DRI              NO
    #define XnestServer               NO
    #define XprtServer                NO
    #define XVirtualFramebufferServer NO
    #define BuildFontServer           NO
    #define BuildXinerama             NO
    #define BuildXF86RushExt          NO
    #define BuildPexExt               NO
    #define BuildGlxExt               NO
    #define LinuxFBDevSupport         NO
    #define XF1Bpp                    NO
    #define XF4Bpp                    NO
    #define BuildXTrueType            NO

    #define BuildSpeedo               NO
    #define BuildCID                  NO

    #define BuildCyrillicFonts        NO
    #define BuildSpeedoFonts          NO
    #define BuildCIDFonts             NO
    #define MakeLocalFontDir          NO

    </pre>
  </body>
</html>