Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP


nouveau patch error #11

sjbalaji opened this Issue · 11 comments

3 participants

sjbalaji Kaibo Wang Shinpei Kato

I am not able to apply the patch provided in the gdev/mod/patches to linux-2.6. So I manually patched linux-3.5.0 with the given nouveau patch. When I insert the gdev module I get module insertion error.

[ 1069.980332] gdev: disagrees about version of symbol gdev_drv_write32
[ 1069.980338] gdev: Unknown symbol gdev_drv_write32 (err -22)
[ 1069.980370] gdev: disagrees about version of symbol gdev_drv_getaddr
[ 1069.980372] gdev: Unknown symbol gdev_drv_getaddr (err -22)
[ 1069.980385] gdev: disagrees about version of symbol gdev_drv_bo_bind
[ 1069.980387] gdev: Unknown symbol gdev_drv_bo_bind (err -22)
[ 1069.980390] gdev: disagrees about version of symbol gdev_drv_read32
[ 1069.980392] gdev: Unknown symbol gdev_drv_read32 (err -22)
[ 1069.980402] gdev: disagrees about version of symbol gdev_drv_read
[ 1069.980404] gdev: Unknown symbol gdev_drv_read (err -22)
[ 1069.980407] gdev: disagrees about version of symbol gdev_drv_bo_map
[ 1069.980409] gdev: Unknown symbol gdev_drv_bo_map (err -22)
[ 1069.980422] gdev: disagrees about version of symbol gdev_drv_getparam
[ 1069.980424] gdev: Unknown symbol gdev_drv_getparam (err -22)
[ 1069.980431] gdev: disagrees about version of symbol gdev_drv_vspace_alloc
[ 1069.980433] gdev: Unknown symbol gdev_drv_vspace_alloc (err -22)
[ 1069.980447] gdev: disagrees about version of symbol gdev_drv_bo_alloc
[ 1069.980448] gdev: Unknown symbol gdev_drv_bo_alloc (err -22)
[ 1069.980454] gdev: disagrees about version of symbol gdev_drv_write
[ 1069.980456] gdev: Unknown symbol gdev_drv_write (err -22)
[ 1069.980460] gdev: disagrees about version of symbol gdev_drv_chan_alloc
[ 1069.980462] gdev: Unknown symbol gdev_drv_chan_alloc (err -22)
[ 1069.980465] gdev: disagrees about version of symbol gdev_drv_getdrm
[ 1069.980467] gdev: Unknown symbol gdev_drv_getdrm (err -22)

Any ideas where am I going wrong.


Kaibo Wang

The 3.5.0 patch has not been well tested. For this moment, please use Linux 3.3.0 kernel and mod/nouveau-3.3.0


I get the patch application error when I try with linux-3.3

root@WhiteRose:~/Downloads/linux-3.3.3# patch -p0 < /root/gdev/mod/patches/gdev-nouveau-3.3.0.patch
patching file drivers/gpu/drm/nouveau/Makefile
patching file drivers/gpu/drm/nouveau/gdev_interface.c
patching file drivers/gpu/drm/nouveau/gdev_interface.h
patching file drivers/gpu/drm/nouveau/nouveau_channel.c
patching file drivers/gpu/drm/nouveau/nouveau_drv.c
Hunk #1 succeeded at 456 (offset -4 lines).
patching file drivers/gpu/drm/nouveau/nouveau_state.c
Hunk #1 succeeded at 987 (offset -3 lines).
Hunk #2 succeeded at 1161 (offset -3 lines).
patching file drivers/gpu/drm/nouveau/nv50_vm.c
Hunk #1 FAILED at 85.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/nouveau/nv50_vm.c.rej

patching file drivers/gpu/drm/nouveau/nvc0_graph.c


--- drivers/gpu/drm/nouveau/nv50_vm.c
+++ drivers/gpu/drm/nouveau/nv50_vm.c
@@ -85,7 +85,7 @@
target = 3;

  • phys = vm_addr(vma, phys, mem->memtype, 0);
  • phys = vm_addr(vma, phys, mem->memtype, target); pte <<= 3; cnt <<= 3;


There is no target in the particular function where the patch application failed.
nv50_vm_map(struct nouveau_vma *vma, struct nouveau_gpuobj *pgt,
struct nouveau_mem *mem, u32 pte, u32 cnt, u64 phys, u64 delta)
u32 comp = (mem->memtype & 0x180) >> 7;
u32 block;
int i;

    phys  = nv50_vm_addr(vma, phys, mem->memtype, 0);
    pte <<= 3;
    cnt <<= 3;

    while (cnt) {
            u32 offset_h = upper_32_bits(phys);
            u32 offset_l = lower_32_bits(phys);

            for (i = 7; i >= 0; i--) {

I am clueless on how to fix this. Am I making any mistakes in following the installation steps ?


Kaibo Wang

That was probably a bug when the patch file was initially generated.

For this moment, do not use the patch file. Use the already patched nouveau source residing in /mod/nouveau-3.3.0. Compile, install, and use it. It should work then.

Kaibo Wang

Of course, make a fresh compilation and installation of linux-3.3 first


I installed linux-3.3 and then the compilation went trough.

I checked that the nouveau module is installed properly

root@WhiteRose:~/gdev/mod/build# lsmod | grep nouv

nouveau 817926 0
ttm 87285 1 nouveau
drm_kms_helper 42297 1 nouveau
drm 252506 3 nouveau,ttm,drm_kms_helper
mxm_wmi 12979 1 nouveau
video 19022 1 nouveau

But during the insertion of gdev module I get the following error

[ 99.984361] gdev: Unknown symbol gdev_drv_chan_free (err 0)
[ 99.984384] gdev: Unknown symbol gdev_drv_write32 (err 0)
[ 99.984399] gdev: Unknown symbol gdev_drv_bo_free (err 0)
[ 99.984414] gdev: Unknown symbol gdev_drv_bo_unbind (err 0)
[ 99.984442] gdev: Unknown symbol gdev_drv_getaddr (err 0)
[ 99.984463] gdev: Unknown symbol gdev_drv_bo_bind (err 0)
[ 99.984473] gdev: Unknown symbol gdev_drv_read32 (err 0)
[ 99.984492] gdev: Unknown symbol gdev_drv_read (err 0)
[ 99.984502] gdev: Unknown symbol gdev_drv_bo_map (err 0)
[ 99.984523] gdev: Unknown symbol gdev_drv_getparam (err 0)
[ 99.984537] gdev: Unknown symbol gdev_drv_vspace_alloc (err 0)
[ 99.984549] gdev: Unknown symbol gdev_drv_getdevice (err 0)
[ 99.984569] gdev: Unknown symbol gdev_drv_bo_alloc (err 0)
[ 99.984582] gdev: Unknown symbol gdev_drv_vspace_free (err 0)
[ 99.984592] gdev: Unknown symbol gdev_drv_write (err 0)
[ 99.984604] gdev: Unknown symbol gdev_drv_chan_alloc (err 0)
[ 99.984614] gdev: Unknown symbol gdev_drv_bo_unmap (err 0)
[ 99.984624] gdev: Unknown symbol gdev_drv_getdrm (err 0)


Kaibo Wang

Did you blacklist the nouveau module bundled with linux-3.3? You have to do that and boot into level 3; then load the nouveau bundled with gdev, and compile/load gdev


Thanks for the prompt reply. Yes I had not blacklisted the default nouveau. I will try it tomorrow as currently I don't have physical access to the system.



I blacklisted nouveau installed the one with gdev, but when i try test the nouveau installation the kernel crashes. So I tried installing pscnv. Whey i try inserting the gdev module it says undefined symbol error. I checked for those symbols in pscnv they are present.

gdev module insertion error:
[ 620.797965] gdev: gave up waiting for init of module pscnv.
[ 620.798044] gdev: Unknown symbol gdev_drv_chan_free (err -16)
[ 650.727455] gdev: gave up waiting for init of module pscnv.
[ 650.727520] gdev: Unknown symbol gdev_drv_write32 (err -16)
[ 680.656867] gdev: gave up waiting for init of module pscnv.
[ 680.656930] gdev: Unknown symbol gdev_drv_bo_free (err -16)
[ 710.586217] gdev: gave up waiting for init of module pscnv.
[ 710.586296] gdev: Unknown symbol gdev_drv_bo_unbind (err -16)
[ 740.515634] gdev: gave up waiting for init of module pscnv.
[ 740.515713] gdev: Unknown symbol gdev_drv_getaddr (err -16)
[ 770.445054] gdev: gave up waiting for init of module pscnv.
[ 770.445134] gdev: Unknown symbol gdev_drv_bo_bind (err -16)
[ 800.367837] gdev: gave up waiting for init of module pscnv.
[ 800.367920] gdev: Unknown symbol gdev_drv_read32 (err -16)
[ 830.282291] gdev: gave up waiting for init of module pscnv.
[ 830.282370] gdev: Unknown symbol gdev_drv_read (err -16)
[ 860.196742] gdev: gave up waiting for init of module pscnv.
[ 860.196821] gdev: Unknown symbol gdev_drv_bo_map (err -16)
[ 890.111197] gdev: gave up waiting for init of module pscnv.
[ 890.111276] gdev: Unknown symbol gdev_drv_getparam (err -16)
[ 920.025650] gdev: gave up waiting for init of module pscnv.
[ 920.025729] gdev: Unknown symbol gdev_drv_vspace_alloc (err -16)
[ 949.940102] gdev: gave up waiting for init of module pscnv.
[ 949.940182] gdev: Unknown symbol gdev_drv_getdevice (err -16)
[ 979.854554] gdev: gave up waiting for init of module pscnv.
[ 979.854634] gdev: Unknown symbol gdev_drv_bo_alloc (err -16)
[ 1004.900058] gdev: gave up waiting for init of module pscnv.
[ 1004.900146] gdev: Unknown symbol gdev_drv_vspace_free (err -16)
[ 1004.900210] gdev: gave up waiting for init of module pscnv.
[ 1004.900270] gdev: Unknown symbol gdev_drv_write (err -16)
[ 1004.900350] gdev: gave up waiting for init of module pscnv.
[ 1004.900410] gdev: Unknown symbol gdev_drv_chan_alloc (err -16)
[ 1004.900473] gdev: gave up waiting for init of module pscnv.
[ 1004.900534] gdev: Unknown symbol gdev_drv_bo_unmap (err -16)
[ 1004.900596] gdev: gave up waiting for init of module pscnv.
[ 1004.900657] gdev: Unknown symbol gdev_drv_getdrm (err -16)

But these symbols are defined in pscnv
nm output of pscnv
00000000cc6b2e5d A __crc_gdev_drv_bo_alloc
00000000676608ef A __crc_gdev_drv_bo_bind
00000000fb929922 A __crc_gdev_drv_bo_free
00000000f50c6043 A __crc_gdev_drv_bo_map
000000000c3beff0 A __crc_gdev_drv_bo_unbind
00000000044aca3f A __crc_gdev_drv_bo_unmap
00000000614197a7 A __crc_gdev_drv_chan_alloc
0000000057b95d2b A __crc_gdev_drv_chan_free
000000007e1c8811 A __crc_gdev_drv_getaddr
000000003be2650b A __crc_gdev_drv_getdevice
00000000f8cf21f3 A __crc_gdev_drv_getdrm
00000000fd657892 A __crc_gdev_drv_getparam
0000000002a3f692 A __crc_gdev_drv_read
00000000f2b62404 A __crc_gdev_drv_read32
00000000ade75208 A __crc_gdev_drv_setnotify
000000004c741eff A __crc_gdev_drv_unsetnotify
00000000660e596a A __crc_gdev_drv_vspace_alloc
000000002e479f4b A __crc_gdev_drv_vspace_free
00000000fe0bcba6 A __crc_gdev_drv_write
00000000b21036cf A __crc_gdev_drv_write32
0000000000000150 r __kcrctab_gdev_drv_bo_alloc
0000000000000158 r __kcrctab_gdev_drv_bo_bind
0000000000000160 r __kcrctab_gdev_drv_bo_free
0000000000000168 r __kcrctab_gdev_drv_bo_map
0000000000000170 r __kcrctab_gdev_drv_bo_unbind
0000000000000178 r __kcrctab_gdev_drv_bo_unmap
0000000000000180 r __kcrctab_gdev_drv_chan_alloc
0000000000000188 r __kcrctab_gdev_drv_chan_free
0000000000000190 r __kcrctab_gdev_drv_getaddr
0000000000000198 r __kcrctab_gdev_drv_getdevice
00000000000001a0 r __kcrctab_gdev_drv_getdrm
00000000000001a8 r __kcrctab_gdev_drv_getparam
00000000000001b0 r __kcrctab_gdev_drv_read
00000000000001b8 r __kcrctab_gdev_drv_read32
00000000000001c0 r __kcrctab_gdev_drv_setnotify
00000000000001c8 r __kcrctab_gdev_drv_unsetnotify
00000000000001d0 r __kcrctab_gdev_drv_vspace_alloc
00000000000001d8 r __kcrctab_gdev_drv_vspace_free
00000000000001e0 r __kcrctab_gdev_drv_write
00000000000001e8 r __kcrctab_gdev_drv_write32
0000000000000103 r __kstrtab_gdev_drv_bo_alloc
00000000000000e1 r __kstrtab_gdev_drv_bo_bind
00000000000000f2 r __kstrtab_gdev_drv_bo_free
00000000000000be r __kstrtab_gdev_drv_bo_map
00000000000000ce r __kstrtab_gdev_drv_bo_unbind
00000000000000ac r __kstrtab_gdev_drv_bo_unmap
0000000000000128 r __kstrtab_gdev_drv_chan_alloc
0000000000000115 r __kstrtab_gdev_drv_chan_free
0000000000000028 r __kstrtab_gdev_drv_getaddr
000000000000005b r __kstrtab_gdev_drv_getdevice
000000000000004b r __kstrtab_gdev_drv_getdrm
0000000000000039 r __kstrtab_gdev_drv_getparam
000000000000007d r __kstrtab_gdev_drv_read
000000000000009c r __kstrtab_gdev_drv_read32
0000000000000015 r __kstrtab_gdev_drv_setnotify
0000000000000000 r __kstrtab_gdev_drv_unsetnotify
0000000000000151 r __kstrtab_gdev_drv_vspace_alloc
000000000000013c r __kstrtab_gdev_drv_vspace_free
000000000000006e r __kstrtab_gdev_drv_write
000000000000008b r __kstrtab_gdev_drv_write32
0000000000000010 r __ksymtab_gdev_drv_bo_alloc
0000000000000020 r __ksymtab_gdev_drv_bo_bind
0000000000000030 r __ksymtab_gdev_drv_bo_free
0000000000000040 r __ksymtab_gdev_drv_bo_map
0000000000000050 r __ksymtab_gdev_drv_bo_unbind
0000000000000060 r __ksymtab_gdev_drv_bo_unmap
0000000000000070 r __ksymtab_gdev_drv_chan_alloc
0000000000000080 r __ksymtab_gdev_drv_chan_free
0000000000000090 r __ksymtab_gdev_drv_getaddr
00000000000000a0 r __ksymtab_gdev_drv_getdevice
00000000000000b0 r __ksymtab_gdev_drv_getdrm
00000000000000c0 r __ksymtab_gdev_drv_getparam
00000000000000d0 r __ksymtab_gdev_drv_read
00000000000000e0 r __ksymtab_gdev_drv_read32
00000000000000f0 r __ksymtab_gdev_drv_setnotify
0000000000000100 r __ksymtab_gdev_drv_unsetnotify
0000000000000110 r __ksymtab_gdev_drv_vspace_alloc
0000000000000120 r __ksymtab_gdev_drv_vspace_free
0000000000000130 r __ksymtab_gdev_drv_write
0000000000000140 r __ksymtab_gdev_drv_write32
0000000000079d10 T gdev_drv_bo_alloc
0000000000079b60 T gdev_drv_bo_bind
0000000000079c50 T gdev_drv_bo_free
0000000000079aa0 T gdev_drv_bo_map
0000000000079b40 T gdev_drv_bo_unbind
0000000000079a70 T gdev_drv_bo_unmap
0000000000079f20 T gdev_drv_chan_alloc
000000000007a2a0 T gdev_drv_chan_free
0000000000079630 T gdev_drv_getaddr
00000000000795d0 T gdev_drv_getdevice
00000000000795f0 T gdev_drv_getdrm
0000000000079720 T gdev_drv_getparam
0000000000079860 T gdev_drv_read
00000000000799c0 T gdev_drv_read32
00000000000796d0 T gdev_drv_setnotify
00000000000796f0 T gdev_drv_unsetnotify
000000000007a230 T gdev_drv_vspace_alloc
000000000007a270 T gdev_drv_vspace_free
00000000000797b0 T gdev_drv_write
0000000000079910 T gdev_drv_write3

Any idea on what to do now ?


Shinpei Kato

System Details
GeForce GT 420
Linux -3.3.0

modprobe nouveau modeset=1 noaccel=0
crashes my kernel
It works without the extra parameters (modprobe nouveau) but in dmesg I find unknown symbol error.


Shinpei Kato

I'm a bit worried about GT 420 as this series is the most tricky architecture in Fermi AFAIK, though it should work with Gdev by now.
You need "modeset=1 noaccel=0" to enable GPU acceleration with Nouveau.
Can you try to install vanilla Nouveau with "modeset=1 noaccel=0" parameters?
If this doesn't cause your system to crash, it means Gdev has some bug to set up GT 420.

Best Regards,

  • Shinpei
Kaibo Wang wkbjerry closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.