Page 1 of 1

Really broken graphics drivers in debian

Posted: Sun Apr 20, 2014 8:36 pm UTC
by Arancaytar
I'm not sure what is up with my graphics drivers, but it seems that any game using direct drawing or acceleration is completely inoperable right now. Their windows are just full of static. No noteworthy error or log messages...

Some examples: Splice, Minecraft.

The most interesting output of glxinfo seems to be this:

Spoiler:

Code: Select all

name of display: :0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
    GLX_OML_swap_method, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
    GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group, GLX_SGI_swap_control
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_create_context_robustness, GLX_ARB_fbconfig_float,
    GLX_ARB_framebuffer_sRGB, GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_fbconfig_packed_float,
    GLX_EXT_framebuffer_sRGB, GLX_EXT_import_context,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_query_renderer,
    GLX_MESA_swap_control, GLX_OML_swap_method, GLX_OML_sync_control,
    GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
    GLX_SGIX_visual_select_group, GLX_SGI_make_current_read,
    GLX_SGI_swap_control, GLX_SGI_video_sync
GLX version: 1.4
GLX extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    GLX_ARB_fbconfig_float, GLX_ARB_framebuffer_sRGB,
    GLX_ARB_get_proc_address, GLX_ARB_multisample,
    GLX_EXT_create_context_es2_profile, GLX_EXT_framebuffer_sRGB,
    GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info,
    GLX_EXT_visual_rating, GLX_INTEL_swap_event, GLX_MESA_copy_sub_buffer,
    GLX_MESA_multithread_makecurrent, GLX_MESA_swap_control,
    GLX_OML_swap_method, GLX_OML_sync_control, GLX_SGIS_multisample,
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
    GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync
OpenGL vendor string: nouveau
OpenGL renderer string: Gallium 0.4 on NV67
OpenGL version string: 2.1 Mesa 10.1.0
OpenGL shading language version string: 1.20
OpenGL extensions:


As shown, the nouveau driver is installed and active. apt-cache and lsmod show the same thing:

Package: xserver-xorg-video-nouveau
Source: xserver-xorg-video-nouveau (1:1.0.10-1)
Version: 1:1.0.10-1+b1


Spoiler:

Code: Select all

Module                  Size  Used by
btrfs                 771372  0
raid6_pq               95238  1 btrfs
xor                    21040  1 btrfs
ufs                    73486  0
qnx4                   13038  0
hfsplus                97391  0
hfs                    53845  0
minix                  31387  0
ntfs                  194605  0
msdos                  17046  0
jfs                   164660  0
xfs                   762495  0
crc32c                 12656  1
libcrc32c              12426  2 xfs,btrfs
dm_mod                 89365  0
pci_stub               12429  1
vboxpci                18981  0
vboxnetadp             25443  0
vboxnetflt             23324  0
vboxdrv               261792  3 vboxnetadp,vboxnetflt,vboxpci
nls_utf8               12456  0
nls_cp437              16553  0
vfat                   17135  0
fat                    53794  2 vfat,msdos
bnep                   17431  2
rfcomm                 37088  0
bluetooth             234250  10 bnep,rfcomm
rfkill                 18867  3 bluetooth
binfmt_misc            16949  1
nfsd                  259239  2
auth_rpcgss            51202  1 nfsd
oid_registry           12419  1 auth_rpcgss
nfs_acl                12511  1 nfsd
nfs                   183626  0
lockd                  79321  2 nfs,nfsd
fscache                45542  1 nfs
sunrpc                224626  6 nfs,nfsd,auth_rpcgss,lockd,nfs_acl
fuse                   78793  1
loop                   26609  0
ppdev                  12686  0
lp                     17074  0
snd_hda_codec_realtek    50253  1
joydev                 17063  0
snd_hda_intel          43768  3
snd_hda_codec         146743  2 snd_hda_codec_realtek,snd_hda_intel
snd_hwdep              13148  1 snd_hda_codec
snd_pcm                84153  2 snd_hda_codec,snd_hda_intel
snd_page_alloc         17114  2 snd_pcm,snd_hda_intel
nouveau               999240  7
mxm_wmi                12515  1 nouveau
evdev                  17445  16
kvm_amd                54791  0
kvm                   380340  1 kvm_amd
video                  17804  1 nouveau
snd_seq                48834  0
snd_seq_device         13132  1 snd_seq
snd_timer              26614  2 snd_pcm,snd_seq
ttm                    65523  1 nouveau
drm_kms_helper         35695  1 nouveau
snd                    60917  14 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_pcm,snd_seq,snd_hda_codec,snd_hda_intel,snd_seq_device
drm                   236628  9 ttm,drm_kms_helper,nouveau
soundcore              13026  1 snd
k10temp                12618  0
edac_mce_amd           21166  0
i2c_algo_bit           12751  1 nouveau
psmouse                86221  0
pcspkr                 12595  0
serio_raw              12849  0
edac_core              47369  0
acpi_cpufreq           17255  0
processor              28274  1 acpi_cpufreq
thermal_sys            27525  2 video,processor
button                 12944  1 nouveau
parport_pc             26300  1
parport                35749  3 lp,ppdev,parport_pc
i2c_nforce2            12591  0
i2c_core               24092  5 drm,drm_kms_helper,i2c_algo_bit,nouveau,i2c_nforce2
wmi                    17339  2 mxm_wmi,nouveau
hid_generic            12393  0
usbhid                 44439  0
hid                    94034  2 hid_generic,usbhid
ext4                  465511  2
crc16                  12343  2 ext4,bluetooth
mbcache                13082  1 ext4
jbd2                   82560  1 ext4
usb_storage            52036  0
sg                     29972  0
sd_mod                 44346  5
sr_mod                 21898  0
cdrom                  39232  1 sr_mod
crc_t10dif             12431  1 sd_mod
crct10dif_common       12356  1 crc_t10dif
ata_generic            12490  0
pata_amd               17390  0
ahci                   25096  3
libahci                27202  1 ahci
libata                168945  4 ahci,libahci,pata_amd,ata_generic
forcedeth              65027  0
scsi_mod              182938  5 sg,usb_storage,libata,sd_mod,sr_mod
ohci_pci               12808  0
ohci_hcd               25977  1 ohci_pci
ehci_pci               12472  0
ehci_hcd               48510  1 ehci_pci
usbcore               154175  6 usb_storage,ohci_hcd,ohci_pci,ehci_hcd,ehci_pci,usbhid
usb_common             12440  1 usbcore


I'm using this ASRock mainboard with an integrated nvidia GeForce 7 series - which NVIDIA stopped supporting after version 304 of their Linux drivers (early 2013). I've tried, unsuccessfully, to install that driver manually (it seems to be incompatible with the current kernel), so I seem to be stuck with nouveau for now. Not sure if this is also what's causing my nouveau troubles, as well as the periodic random GPU lockups that require a cold shutdown.

Does this look like something that I can fix with software, or with the installation of a proper graphics card? The one I'm looking at is a GeForce GT-630, which - assuming it works with this mainboard - seems to fit my needs right now. I'm happy if it runs stuff like Minecraft, Crusader Kings, TF2, etc.; shouldn't need anything terribly powerful.
(The alternate possibility is that I'm out of luck with this old mainboard - a second-hand computer originally built early 2010 - and should look at replacing it entirely.)

(I should note that Minecraft at least was working - aside from the periodic GPU lockups - as recently as a month or so ago. I suspect a system update of some kind did it in.)

Re: Really broken graphics drivers in debian

Posted: Mon Apr 21, 2014 5:56 pm UTC
by beojan
Try uninstalling all manually installed nvidia drivers, then install the kernel headers, and then nvidia-legacy-304xx-driver from aptitude.

Re: Really broken graphics drivers in debian

Posted: Mon Apr 21, 2014 7:40 pm UTC
by Arancaytar
I'll try that. Last time I installed nvidia-legacy-304xx-driver, however, I couldn't load the module. Either because the module failed to find a particular symbol in the kernel, or vice versa - it seemed to be a compatibility issue between the legacy driver and the current kernel (I'm running 3.13).

I'm not sure how to thoroughly clean up the manually installed driver, but nvidia-installer-cleanup is already installed, and it seems to serve that specific purpose.

This looks okay so far

Code: Select all

$ sudo aptitude install nvidia-legacy-304xx-driver
The following NEW packages will be installed:
  libgl1-nvidia-legacy-304xx-glx{a} libgl1-nvidia-legacy-304xx-glx:i386{a} libgl1-nvidia-legacy-304xx-glx-i386:i386{a} nvidia-legacy-304xx-alternative{a}
  nvidia-legacy-304xx-driver nvidia-legacy-304xx-kernel-dkms{a} nvidia-settings-legacy-304xx{a} xserver-xorg-video-nvidia-legacy-304xx{a}


Relevant section of the aptitude output also looks okay:

Code: Select all

Setting up nvidia-legacy-304xx-alternative (304.117-1) ...
Processing triggers for nvidia-legacy-304xx-alternative (304.117-1) ...
update-alternatives: using /usr/lib/nvidia/legacy-304xx to provide /usr/lib/nvidia/nvidia (nvidia) in auto mode
update-alternatives: warning: not replacing /usr/share/applications/nvidia-settings.desktop with a link
Processing triggers for glx-alternative-nvidia (0.4.1) ...
update-alternatives: using /usr/lib/nvidia to provide /usr/lib/glx (glx) in auto mode
update-initramfs: deferring update (trigger activated)
Setting up nvidia-settings-legacy-304xx (304.116-1) ...
Setting up libgl1-nvidia-legacy-304xx-glx:amd64 (304.117-1) ...
Setting up libgl1-nvidia-legacy-304xx-glx:i386 (304.117-1) ...
Setting up xserver-xorg-video-nvidia-legacy-304xx (304.117-1) ...
Setting up nvidia-legacy-304xx-kernel-dkms (304.117-1) ...
Loading new nvidia-legacy-304xx-304.117 DKMS files...
First Installation: checking all kernels...
Building only for 3.13-1-amd64
Building initial module for 3.13-1-amd64
Done.

nvidia-legacy-304xx:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/3.13-1-amd64/updates/dkms/

depmod....

DKMS: install completed.
Setting up nvidia-legacy-304xx-driver (304.117-1) ...
Setting up libgl1-nvidia-legacy-304xx-glx-i386 (304.117-1) ...
Processing triggers for libc-bin (2.18-4) ...
Processing triggers for initramfs-tools (0.115) ...
update-initramfs: Generating /boot/initrd.img-3.13-1-amd64


Going to restart.

Re: Really broken graphics drivers in debian

Posted: Mon Apr 21, 2014 9:04 pm UTC
by Arancaytar
Yeah, that's a nope.

Relevant dmesg output:

Code: Select all

[    0.000000] Nvidia board detected. Ignoring ACPI timer override.
[    0.000000] If you got timer trouble try acpi_use_timer_override
...
[    3.426890] nvidia: module license 'NVIDIA' taints kernel.
[    3.426900] Disabling lock debugging due to kernel taint
[    3.445513] nvidia: Unknown symbol acpi_os_wait_events_complete (err 0)


Code: Select all

$ sudo modprobe nvidia
modprobe: ERROR: could not insert 'nvidia_legacy_304xx': Unknown symbol in module, or unknown parameter (see dmesg)
$ dmesg | tail
...
[ 4175.859818] nvidia: Unknown symbol acpi_os_wait_events_complete (err 0)


At least uninstalling the packages reverts the problem.

This seems to be related to bug report #742404 in Debian, which indicated that Debian has failed to update the legacy package, and is still distributing 304.117 instead of 304.121.

Discouragingly, however, when I go through the driver website myself and look for GeForce 7 series-compatible drivers, I still get linked to 304.88. I'm not sure if this is because their website is horribly broken, or 304.88 is the last version actually supporting that card - though it strikes me as odd that they'd drop support mid-304.

Edit: the 304.121 page definitely indicates it supports the 7 series:

GeForce 7 Series:

GeForce 7025 / NVIDIA nForce 630a, GeForce 7050 PV / NVIDIA nForce 630a, GeForce 7050 / NVIDIA nForce 610i, GeForce 7050 / NVIDIA nForce 630i, GeForce 7100 / NVIDIA nForce 630i, GeForce 7100 / NVIDIA nForce 620i, GeForce 7100 GS, GeForce 7150 / NVIDIA nForce 630i, GeForce 7300 SE / 7200 GS, GeForce 7300 LE, GeForce 7300 GS, GeForce 7300 GT, GeForce 7350 LE, GeForce 7500 LE, GeForce 7550 LE, GeForce 7600 LE, GeForce 7600 GS, GeForce 7600 GT, GeForce 7650 GS, GeForce 7800 GT, GeForce 7800 GS, GeForce 7800 GTX, GeForce 7800 SLI, GeForce 7900 GS, GeForce 7900 GT/GTO, GeForce 7900 GTX, GeForce 7950 GT, GeForce 7950 GX2


So I'm going to guess "website is horribly broken". :P

I'm going to try to manually install 304.121 now. Might fail, of course.

Re: Really broken graphics drivers in debian

Posted: Mon Apr 21, 2014 10:34 pm UTC
by Arancaytar
Well, that didn't work. NVIDIA 304.121 installs fine (DKMS doesn't work, but that just means I'd have to reinstall manually after every kernel update). The kernel module also loads fine after reboot.

However, X segfaults. Ouch!

Code: Select all

[    13.216] (EE)
[    13.216] (EE) Backtrace:
[    13.216] (EE) 0: /usr/bin/Xorg (xorg_backtrace+0x48) [0x7f1a291bce58]
[    13.216] (EE) 1: /usr/bin/Xorg (0x7f1a29015000+0x1abb49) [0x7f1a291c0b49]
[    13.216] (EE) 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7f1a27df7000+0xf880) [0x7f1a27e06880]
[    13.216] (EE) 3: /lib/x86_64-linux-gnu/libc.so.6 (0x7f1a26834000+0x79a91) [0x7f1a268ada91]
[    13.216] (EE) 4: /lib/x86_64-linux-gnu/libc.so.6 (__libc_malloc+0x60) [0x7f1a268afc80]
[    13.216] (EE) 5: /usr/bin/Xorg (MakeAtom+0xee) [0x7f1a29059e0e]
[    13.217] (EE) 6: /usr/bin/Xorg (0x7f1a29015000+0x50e59) [0x7f1a29065e59]
[    13.217] (EE) 7: /usr/bin/Xorg (0x7f1a29015000+0x5586e) [0x7f1a2906a86e]
[    13.217] (EE) 8: /usr/bin/Xorg (0x7f1a29015000+0x5968a) [0x7f1a2906e68a]
[    13.217] (EE) 9: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xf5) [0x7f1a26855b45]
[    13.217] (EE) 10: /usr/bin/Xorg (0x7f1a29015000+0x44c2e) [0x7f1a29059c2e]
[    13.217] (EE)
[    13.217] (EE) Segmentation fault at address 0x0
[    13.217] (EE)
Fatal server error:
[    13.217] (EE) Caught signal 11 (Segmentation fault). Server aborting
[    13.217] (EE)
[    13.217] (EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
[    13.217] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.


Edit: It worked on a second attempt, while starting into text-only mode and then doing startx. I'm not sure if that's what caused it to work, though.

If nothing else, I guess this topic should at least have enough info to help avoid an xkcd-#979 moment. :)

Re: Really broken graphics drivers in debian

Posted: Tue Apr 22, 2014 10:27 am UTC
by beojan
Does it subsequently work booting directly into X?

Re: Really broken graphics drivers in debian

Posted: Wed Apr 23, 2014 5:09 am UTC
by PM 2Ring
beojan wrote:Does it subsequently work booting directly into X?

My guess is that it won't, and it'll still attempt to dereference that NULL pointer, but booting in verbose mode to force the card to render in text mode before starting X might work.

Re: Really broken graphics drivers in debian

Posted: Sun Apr 27, 2014 6:24 pm UTC
by Arancaytar
Okay, since this last post, I've only been able to boot the system with the "text" flag and then using startx - now, unfortunately, even that will not work. Xorg.0.log will not have a segfault, but instead contain the following:

Code: Select all

[  2878.270] (II) NVIDIA(GPU-0): Display (Samsung SyncMaster (CRT-0)) does not support NVIDIA
[  2878.270] (II) NVIDIA(GPU-0):     3D Vision stereo.
[  2878.270] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[  2878.270] (**) NVIDIA(0):     device Samsung SyncMaster (CRT-0) (Using EDID frequencies
[  2878.270] (**) NVIDIA(0):     has been enabled on all display devices.)
[  2879.011] (II) NVIDIA(GPU-0): Display (Samsung SyncMaster (CRT-0)) does not support NVIDIA
[  2879.011] (II) NVIDIA(GPU-0):     3D Vision stereo.
[  2879.011] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[  2879.011] (**) NVIDIA(0):     device Samsung SyncMaster (CRT-0) (Using EDID frequencies
[  2879.011] (**) NVIDIA(0):     has been enabled on all display devices.)
[  2879.216] (II) NVIDIA(GPU-0): Display (Samsung SyncMaster (CRT-0)) does not support NVIDIA
[  2879.216] (II) NVIDIA(GPU-0):     3D Vision stereo.
[  2879.216] (**) NVIDIA(0): Using HorizSync/VertRefresh ranges from the EDID for display
[  2879.216] (**) NVIDIA(0):     device Samsung SyncMaster (CRT-0) (Using EDID frequencies
[  2879.216] (**) NVIDIA(0):     has been enabled on all display devices.)
[  2921.338] (EE) NVIDIA(0): Failed to initialize the 3D engine
[  2921.339] (EE) NVIDIA(0):  *** Aborting ***
[  2921.339] (EE) NVIDIA(0): Failed to allocate 3D objects
[  2921.339] (EE) NVIDIA(0):  *** Aborting ***
[  2921.339] (EE) NVIDIA(0): Error recovery failed.
[  2921.339] (EE) NVIDIA(0):  *** Aborting ***
[  2921.339] (EE)
Fatal server error:
[  2921.339] (EE) Failed to recover from error!
[  2921.339] (EE)
[  2921.339] (EE)
Please consult the The X.Org Foundation support
         at http://wiki.x.org
 for help.
[  2921.339] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[  2921.339] (EE)
[  2924.340] (WW) NVIDIA(0): WAIT (2, 6, 0x8000, 0x00000000, 0x00000010)
[  2931.340] (WW) NVIDIA(0): WAIT (1, 6, 0x8000, 0x00000000, 0x00000010)
[  2936.346] (WW) NVIDIA(0): WAIT (2, 6, 0x8000, 0x00000010, 0x00000044)
[  2943.346] (WW) NVIDIA(0): WAIT (1, 6, 0x8000, 0x00000010, 0x00000044)
[  2946.347] (WW) NVIDIA(0): WAIT (2, 6, 0x8000, 0x00000010, 0x00000060)
[  2953.347] (WW) NVIDIA(0): WAIT (1, 6, 0x8000, 0x00000010, 0x00000060)
[  2956.348] (WW) NVIDIA(0): WAIT (2, 7, 0x8000, 0x00000010, 0x00000084)
[  2963.348] (WW) NVIDIA(0): WAIT (1, 7, 0x8000, 0x00000010, 0x00000084)
[  2966.349] (WW) NVIDIA(0): WAIT (2, 7, 0x8000, 0x00000010, 0x000000a8)
[  2973.349] (WW) NVIDIA(0): WAIT (1, 7, 0x8000, 0x00000010, 0x000000a8)
[  2976.350] (WW) NVIDIA(0): WAIT (2, 7, 0x8000, 0x00000010, 0x000000cc)
[  2983.350] (WW) NVIDIA(0): WAIT (1, 7, 0x8000, 0x00000010, 0x000000cc)
[  2986.351] (WW) NVIDIA(0): WAIT (2, 7, 0x8000, 0x00000010, 0x000000f0)
[  2993.351] (WW) NVIDIA(0): WAIT (1, 7, 0x8000, 0x00000010, 0x000000f0)
[  2996.352] (WW) NVIDIA(0): WAIT (2, 7, 0x8000, 0x00000010, 0x00000114)
[  3523.702] (EE) Server terminated with error (1). Closing log file.


(I'm not sure what the "3D stereo" thing is about; I haven't changed any settings that I'm aware of.)

(Note: Booting normally with gdm3 will still cause the same segfault.)

Re: Really broken graphics drivers in debian

Posted: Tue Apr 29, 2014 11:25 am UTC
by beojan
I'm guessing the driver thinks you have one of nvidia's 3D Vision graphics cards which you use with a compatible display and glasses for stereoscopic 3D. Since you don't, it is evidently misidentifying your graphics card.

By the way, which version of Debian are you using (i.e. stable, testing or unstable).

Also, I'm assuming you installed the nvidia driver from the website again. As of last week, it appears the driver in unstable has been updated to 304.121, so you could try uninstalling the manually installed driver (if you still have the installer, I believe you run it with the --uninstall switch), then install from the repository again.

Re: Really broken graphics drivers in debian

Posted: Tue May 06, 2014 10:00 pm UTC
by Arancaytar
Well, going back to nouveau has left something else badly broken. x won't start without setting noaccel=1, it shows "GPU lockup, switching to software fbcon". But setting that option makes all windows draw really slowly and gnome-shell routinely take 200% CPU load.
Fortunately no sharks in sight yet.

I just noticed the sid repository is now at 121, so I'll give it another go I guess...

Edit: didn't work, but got an exciting new error message from X about no screens being found.

Re: Really broken graphics drivers in debian

Posted: Wed May 14, 2014 10:28 pm UTC
by Arancaytar
The "no screens" thing is because the debian package doesn't install the xorg.conf file that is apparently required. I've dredged up an old one from 2013 (back when I was using 304.88):

Code: Select all

# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 304.88  (buildmeister@swio-display-x86-rhel47-06)  Wed Mar 27 15:32:58 PDT 2013

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0"
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/psaux"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"
    # generated from default
    Identifier     "Keyboard0"
    Driver         "kbd"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Unknown"
    HorizSync       28.0 - 33.0
    VertRefresh     43.0 - 72.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Section "Extensions"
    Option "Composite" "Disable"
EndSection


Amazingly, this actually works, up to a point. I can start up X and run xmonad, and it'll actually show my menu bar and desktop background. And then I can switch workspaces and stuff.

Until I start a single program that actually opens a window. No matter what it is*; X will immediately freeze. If I can get to a TTY window and kill the program, it'll come back to life.

I don't really have much error output to speak of this time. This comes up pretty often in dmesg:

[ 224.396134] NVRM: Xid (0000:00:12): 8, Channel 00000000
[ 226.394613] NVRM: os_schedule: Attempted to yield the CPU while in atomic or interrupt context


* That's not entirely true. xterm, the only exception I've found, starts fine. Terminator (which starts xterm) freezes.