Coder Social home page Coder Social logo

shinpei0208 / gdev Goto Github PK

View Code? Open in Web Editor NEW
337.0 337.0 68.0 149.9 MB

First-Class GPU Resource Management: Device Drivers, Runtimes, and CUDA Compilers for Nouveau.

Home Page: http://www.pdsl.jp/

License: MIT License

C 65.99% C++ 33.16% Shell 0.04% Objective-C 0.14% Cuda 0.24% Python 0.43%

gdev's People

Contributors

alexxy avatar constellation avatar kris7t avatar m-iwata avatar mgottschlag avatar mwkmwkmwk avatar shinpei0208 avatar wkbjerry avatar yk-fujii avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gdev's Issues

GTX480(nvc0): Error in the generation of many contexts

Error occurs when you try to generate more than a certain context.
In my environment (Fedora 15: linux3.3.0, GTX480, 4 virtual devices created, each devices are 25% bandwidth ), I get up when you generated the context of the 18 th.

*Error Logs ( I have changed a little debugging information Gdev...)

 Mar 27 10:38:57 fermi kernel: [  259.724272] [DEBUG_INFO]:gdev#1,gdev_ctx_new
 Mar 27 10:38:57 fermi kernel: [  259.724567] [DEBUG_INFO]:gdev#1,context create #19
 Mar 27 10:38:57 fermi kernel: [  259.724570] [drm] nouveau 0000:01:00.0: PFIFO: read fault at 0x935bac0000 [PT_NOT_PRESENT] from PGRAPH/GPC3/(unknown enum 0x00000002) on channel 0x0030e1e000
 Mar 27 10:38:57 fermi kernel: [  259.724574] [drm] nouveau 0000:01:00.0: PFIFO: unknown status 0x40000000

Anyway, I was addressed by adding/changing a source below.
Is required to resolve this issue....

*gdev_drv_nvidia.c:

 struct gdev_device *gdev_raw_dev_open(int minor)
 {        
          struct gdev_device *gdev = &gdev_vds[minor]; /* virutal device */
          struct gdev_device *phys = gdev->parent;
          if(phys){
retry:
              gdev_lock(&phys->global_lock);
              if(phys->users >= GDEV_CONTEXT_LIMIT){
                  gdev_unlock(&phys->global_lock);
                  schedule_timeout(5);
                  goto retry;
              }
              phys->users++; 
              gdev_unlock(&phys->global_lock);
          }
          gdev->users++;     
          return gdev;       
}      

How to run multiple benchmarks simultaneously using gdev?

At first, I'm sorry if here is not appropriate place to ask my question.
(please let me know, if there exists right way to ask any related questions.)

I have installed linux v3.3 on ubuntu LTS 12.04, nouveau-3.3.0 bundled in gdev source, gdev kernel module, gdev cuda driver api, and checkout gdev-bench.
I read the atc'12 paper (GDEV), and i felt interests about
how GDEV schedules multiple applications for single GPU device. (and Isolation among virtual GPUs)

So, i tried to launch two different benchmarks(heartwall, lud), consecutively.
(to recognize what will happen when multiple benchmarks run simultaneously on single gpu device)
But, both benchmarks didn't halt and
dmesg log are shown as followings.


Jul 30 23:34:04 iliosserv2 kernel: [ 485.132334] [gdev] Opened gdev0
Jul 30 23:34:06 iliosserv2 kernel: [ 487.460725] sched: RT throttling activated
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348046] INFO: task gschedm0:2744 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348054] gschedm0 D 0000000000000000 0 2744 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348060] ffff880067051ea0 0000000000000046 ffff88006adb4410 ffffffffa032a930
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348067] ffff88006adb4410 ffff880067051fd8 ffff880067051fd8 ffff880067051fd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348072] ffff88007b0d2d60 ffff88006adb4410 ffff880067051ec0 ffff8800705a2000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348078] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348090] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348097] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348105] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348111] [] __gdev_sched_mem_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348117] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348122] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348127] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348132] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348135] INFO: task gschedc1:2747 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348138] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348141] gschedc1 D 0000000000000000 0 2747 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348146] ffff88006851dea0 0000000000000046 ffff88007bfe0000 ffffffffa032a9c0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348151] ffff88007bfe0000 ffff88006851dfd8 ffff88006851dfd8 ffff88006851dfd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348156] ffff88007b0d2d60 ffff88007bfe0000 ffff88006851dec0 ffff8800705a2198
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348162] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348168] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348174] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348178] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348184] [] __gdev_sched_com_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348188] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348192] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348197] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348201] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348204] INFO: task gschedm1:2748 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348207] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348210] gschedm1 D 0000000000000000 0 2748 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348214] ffff880067e13ea0 0000000000000046 ffff880071362d60 ffffffffa032a930
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348220] ffff880071362d60 ffff880067e13fd8 ffff880067e13fd8 ffff880067e13fd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348225] ffff88007b0d2d60 ffff880071362d60 ffff880067e13ec0 ffff8800705a2198
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348231] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348236] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348243] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348247] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348253] [] __gdev_sched_mem_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348257] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348261] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348266] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348270] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348273] INFO: task gschedc2:2751 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348276] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348279] gschedc2 D 0000000000000000 0 2751 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348283] ffff880068413ea0 0000000000000046 ffff88007aecc410 ffffffffa032a9c0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348289] ffff88007aecc410 ffff880068413fd8 ffff880068413fd8 ffff880068413fd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348294] ffff88007b0d2d60 ffff88007aecc410 ffff880068413ec0 ffff8800705a2330
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348299] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348305] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348311] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348315] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348321] [] __gdev_sched_com_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348325] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348329] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348334] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348338] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348341] INFO: task gschedm2:2752 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348344] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348346] gschedm2 D 0000000000000000 0 2752 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348351] ffff880067013ea0 0000000000000046 ffff88007d3d4410 ffffffffa032a930
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348357] ffff88007d3d4410 ffff880067013fd8 ffff880067013fd8 ffff880067013fd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348362] ffff88007b0d2d60 ffff88007d3d4410 ffff880067013ec0 ffff8800705a2330
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348367] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348373] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348379] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348384] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348390] [] __gdev_sched_mem_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348394] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348398] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348402] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348407] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348410] INFO: task gschedc3:2755 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348412] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348415] gschedc3 D 0000000000000000 0 2755 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348420] ffff8800684e3ea0 0000000000000046 ffff88006ad0c410 ffffffffa032a9c0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348425] ffff88006ad0c410 ffff8800684e3fd8 ffff8800684e3fd8 ffff8800684e3fd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348430] ffff88007b0d2d60 ffff88006ad0c410 ffff8800684e3ec0 ffff8800705a24c8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348436] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348441] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348447] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348452] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348457] [] __gdev_sched_com_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348461] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348466] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348470] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348474] [] ? gs_change+0xb/0xb
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348477] INFO: task gschedm3:2756 blocked for more than 120 seconds.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348480] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348482] gschedm3 D 0000000000000000 0 2756 2 0x00000000
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348487] ffff88006700bea0 0000000000000046 ffff88006ad0dac0 ffffffffa032a930
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348493] ffff88006ad0dac0 ffff88006700bfd8 ffff88006700bfd8 ffff88006700bfd8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348498] ffff88007b0d2d60 ffff88006ad0dac0 ffff88006700bec0 ffff8800705a24c8
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348504] Call Trace:
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348509] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348516] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348520] [] schedule+0x3f/0x60
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348526] [] __gdev_sched_mem_thread+0x5e/0x90 [gdev]
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348530] [] kthread+0x93/0xa0
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348534] [] kernel_thread_helper+0x4/0x10
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348539] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:35:59 iliosserv2 kernel: [ 600.348543] [] ? gs_change+0xb/0xb
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348046] INFO: task gschedc0:2743 blocked for more than 120 seconds.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348051] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348055] gschedc0 D 0000000000000000 0 2743 2 0x00000000
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348061] ffff880067005ea0 0000000000000046 ffff880067005eb0 ffffffffa0331258
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348067] ffff88006adb16b0 ffff880067005fd8 ffff880067005fd8 ffff880067005fd8
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348073] ffff88007c848000 ffff88006adb16b0 ffffc90000000000 ffff8800705a2000
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348078] Call Trace:
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348092] [] ? gdev_select_next_compute+0x198/0x4a0 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348099] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348106] [] schedule+0x3f/0x60
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348113] [] __gdev_sched_com_thread+0x5e/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348118] [] kthread+0x93/0xa0
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348124] [] kernel_thread_helper+0x4/0x10
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348128] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348133] [] ? gs_change+0xb/0xb
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348136] INFO: task gschedm0:2744 blocked for more than 120 seconds.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348139] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348142] gschedm0 D 0000000000000000 0 2744 2 0x00000000
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348147] ffff880067051ea0 0000000000000046 ffff88006adb4410 ffffffffa032a930
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348152] ffff88006adb4410 ffff880067051fd8 ffff880067051fd8 ffff880067051fd8
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348158] ffff88007b0d2d60 ffff88006adb4410 ffff880067051ec0 ffff8800705a2000
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348163] Call Trace:
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348169] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348175] [] ? gdev_sched_create_scheduler+0x1a0/0x1a0 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348180] [] schedule+0x3f/0x60
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348185] [] __gdev_sched_mem_thread+0x5e/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348189] [] kthread+0x93/0xa0
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348194] [] kernel_thread_helper+0x4/0x10
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348198] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348203] [] ? gs_change+0xb/0xb
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348206] INFO: task gschedc1:2747 blocked for more than 120 seconds.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348209] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348211] gschedc1 D 0000000000000000 0 2747 2 0x00000000
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348216] ffff88006851dea0 0000000000000046 ffff88007bfe0000 ffffffffa032a9c0
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348222] ffff88007bfe0000 ffff88006851dfd8 ffff88006851dfd8 ffff88006851dfd8
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348227] ffff88007b0d2d60 ffff88007bfe0000 ffff88006851dec0 ffff8800705a2198
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348232] Call Trace:
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348238] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348244] [] ? __gdev_sched_mem_thread+0x90/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348248] [] schedule+0x3f/0x60
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348254] [] __gdev_sched_com_thread+0x5e/0x90 [gdev]
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348258] [] kthread+0x93/0xa0
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348262] [] kernel_thread_helper+0x4/0x10
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348267] [] ? kthread_freezable_should_stop+0x70/0x70
Jul 30 23:37:59 iliosserv2 kernel: [ 720.348271] [] ? gs_change+0xb/0xb


What should i do to launch multiple benchmarks at same time within gdev?
and to figure out how gdev schedules and isolates multiple contexts.
or.. did i misunderstand the gdev paper?

My gpu device is Geforce GTX 480.

Any help would be really appreciated for me.
Thank you!!

Installing gdev.ko module fails with nouveau.

Hi. We are installing gdev on ubuntu 10.04 64 bit. However, Installing gdev.ko module fails with nouveau. Here are the details:

cd $(TOPDIR)/gdev/mod
mkdir build
cd build
../configure
(Gdev Module: must copy gdev_interface.h to build directory for build to succeed.)
(From: $(TOPDIR)/gdev/mod/linux/nouveau-3.3.0/drivers/gpu/drm/nouveau/gdev_interface.h)
(To: $(TOPDIR)/gdev/mod/build)

make

/***list***/
make -C /lib/modules/3.3.0-gdev+nouveau/build M=/home/seven/Gdev/gdev/mod/build modules
make[1]: Entering directory `/home/seven/linux'
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_drv.o
/home/seven/Gdev/gdev/mod/build/gdev_drv.c:63: warning: ‘__gdev_notify_handler’ defined but not used
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_drv_nvidia.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_fops.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_ioctl.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_proc.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_api.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_device.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_sched.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_fifo.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_compute.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_mem.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_shm.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_nvc0.o
CC [M]  /home/seven/Gdev/gdev/mod/build/gdev_nvidia_nve4.o
/home/seven/Gdev/gdev/mod/build/gdev_nvidia_nve4.c: In function ‘nve4_copy_linear’:
/home/seven/Gdev/gdev/mod/build/gdev_nvidia_nve4.c:519: warning: unused variable ‘page_count’
/home/seven/Gdev/gdev/mod/build/gdev_nvidia_nve4.c: At top level:
/home/seven/Gdev/gdev/mod/build/gdev_nvidia_nve4.c:461: warning: ‘nve4_memcpy_m2mf_transfer_rect’ defined but not used
LD [M]  /home/seven/Gdev/gdev/mod/build/gdev.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "gdev_drv_getdrm" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unmap" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getdevice" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getparam" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_map" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read32" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_bind" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getaddr" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unbind" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write32" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
CC      /home/seven/Gdev/gdev/mod/build/gdev.mod.o
LD [M]  /home/seven/Gdev/gdev/mod/build/gdev.ko
make[1]: Leaving directory `/home/seven/linux'

make install

/***list***/
make -C /lib/modules/3.3.0-gdev+nouveau/build M=/home/seven/Gdev/gdev/mod/build modules
make[1]: Entering directory `/home/seven/linux'
Building modules, stage 2.
MODPOST 1 modules
WARNING: "gdev_drv_getdrm" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unmap" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getdevice" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_alloc" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getparam" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_map" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read32" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_bind" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getaddr" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unbind" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write32" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_free" [/home/seven/Gdev/gdev/mod/build/gdev.ko] undefined!
make[1]: Leaving directory `/home/seven/linux'
sudo rmmod gdev
ERROR: Module gdev does not exist in /proc/modules
make: [install] Error 1 (ignored)
sudo make -C /lib/modules/3.3.0-gdev+nouveau/build M=/home/seven/Gdev/gdev/mod/build modules_install
make: Entering directory `/home/seven/linux'
INSTALL /home/seven/Gdev/gdev/mod/build/gdev.ko
DEPMOD  3.3.0-gdev+nouveau
make: Leaving directory `/home/seven/linux'
sudo install -o root -m 0755 -d /usr/local/gdev
sudo install -o root -m 0755 -d /usr/local/gdev/include
sudo install -o root -m 0755 -d /usr/local/gdev/etc
sudo install -o root -m 0644 Module.symvers \
         /usr/local/gdev/etc/Module.symvers.gdev
sudo install -o root -m 0644 gdev_api.h gdev_autogen.h \
         gdev_nvidia_def.h gdev_list.h gdev_time.h /usr/local/gdev/include
sudo install -o root -m 0644 gdev.rules \
         /etc/udev/rules.d/80-gdev.rules
sudo modprobe gdev
FATAL: Error inserting gdev (/lib/modules/3.3.0-gdev+nouveau/extra/gdev.ko): Invalid argument
make: [install] Error 1 (ignored)

dmesg

/***list***/
[  709.379405] This is Gdev-compatible Nouveau driver.
[  709.379423] VGA switcheroo: detected Optimus DSM method \ handle
[  709.380834] [drm] nouveau 0000:01:00.0: Unsupported chipset 0x0e7010a2
[  709.381456] nouveau: probe of 0000:01:00.0 failed with error -22
[ 1140.633619] gdev: no symbol version for gdev_drv_chan_free
[ 1140.633624] gdev: Unknown symbol gdev_drv_chan_free (err -22)
[ 1140.633638] gdev: no symbol version for gdev_drv_write32
[ 1140.633640] gdev: Unknown symbol gdev_drv_write32 (err -22)
[ 1140.633647] gdev: no symbol version for gdev_drv_bo_free
[ 1140.633649] gdev: Unknown symbol gdev_drv_bo_free (err -22)
[ 1140.633654] gdev: no symbol version for gdev_drv_bo_unbind
[ 1140.633656] gdev: Unknown symbol gdev_drv_bo_unbind (err -22)
[ 1140.633673] gdev: no symbol version for gdev_drv_getaddr
[ 1140.633674] gdev: Unknown symbol gdev_drv_getaddr (err -22)
[ 1140.633683] gdev: no symbol version for gdev_drv_bo_bind
[ 1140.633684] gdev: Unknown symbol gdev_drv_bo_bind (err -22)
[ 1140.633687] gdev: no symbol version for gdev_drv_read32
[ 1140.633688] gdev: Unknown symbol gdev_drv_read32 (err -22)
[ 1140.633698] gdev: no symbol version for gdev_drv_read
[ 1140.633700] gdev: Unknown symbol gdev_drv_read (err -22)
[ 1140.633702] gdev: no symbol version for gdev_drv_bo_map
[ 1140.633703] gdev: Unknown symbol gdev_drv_bo_map (err -22)
[ 1140.633713] gdev: no symbol version for gdev_drv_getparam
[ 1140.633715] gdev: Unknown symbol gdev_drv_getparam (err -22)
[ 1140.633720] gdev: no symbol version for gdev_drv_vspace_alloc
[ 1140.633722] gdev: Unknown symbol gdev_drv_vspace_alloc (err -22)
[ 1140.633725] gdev: no symbol version for gdev_drv_getdevice
[ 1140.633726] gdev: Unknown symbol gdev_drv_getdevice (err -22)
[ 1140.633738] gdev: no symbol version for gdev_drv_bo_alloc
[ 1140.633740] gdev: Unknown symbol gdev_drv_bo_alloc (err -22)
[ 1140.633743] gdev: no symbol version for gdev_drv_vspace_free
[ 1140.633744] gdev: Unknown symbol gdev_drv_vspace_free (err -22)
[ 1140.633746] gdev: no symbol version for gdev_drv_write
[ 1140.633748] gdev: Unknown symbol gdev_drv_write (err -22)
[ 1140.633752] gdev: no symbol version for gdev_drv_chan_alloc
[ 1140.633753] gdev: Unknown symbol gdev_drv_chan_alloc (err -22)
[ 1140.633756] gdev: no symbol version for gdev_drv_bo_unmap
[ 1140.633757] gdev: Unknown symbol gdev_drv_bo_unmap (err -22)
[ 1140.633759] gdev: no symbol version for gdev_drv_getdrm
[ 1140.633761] gdev: Unknown symbol gdev_drv_getdrm (err -22)
[ 1469.629974] gdev: no symbol version for gdev_drv_chan_free
[ 1469.629979] gdev: Unknown symbol gdev_drv_chan_free (err -22)
[ 1469.629992] gdev: no symbol version for gdev_drv_write32
[ 1469.629994] gdev: Unknown symbol gdev_drv_write32 (err -22)
[ 1469.630047] gdev: no symbol version for gdev_drv_bo_free
[ 1469.630048] gdev: Unknown symbol gdev_drv_bo_free (err -22)
[ 1469.630054] gdev: no symbol version for gdev_drv_bo_unbind
[ 1469.630056] gdev: Unknown symbol gdev_drv_bo_unbind (err -22)
[ 1469.630077] gdev: no symbol version for gdev_drv_getaddr
[ 1469.630079] gdev: Unknown symbol gdev_drv_getaddr (err -22)
[ 1469.630088] gdev: no symbol version for gdev_drv_bo_bind
[ 1469.630089] gdev: Unknown symbol gdev_drv_bo_bind (err -22)
[ 1469.630092] gdev: no symbol version for gdev_drv_read32
[ 1469.630093] gdev: Unknown symbol gdev_drv_read32 (err -22)
[ 1469.630104] gdev: no symbol version for gdev_drv_read
[ 1469.630105] gdev: Unknown symbol gdev_drv_read (err -22)
[ 1469.630107] gdev: no symbol version for gdev_drv_bo_map
[ 1469.630109] gdev: Unknown symbol gdev_drv_bo_map (err -22)
[ 1469.630119] gdev: no symbol version for gdev_drv_getparam
[ 1469.630121] gdev: Unknown symbol gdev_drv_getparam (err -22)
[ 1469.630126] gdev: no symbol version for gdev_drv_vspace_alloc
[ 1469.630128] gdev: Unknown symbol gdev_drv_vspace_alloc (err -22)
[ 1469.630131] gdev: no symbol version for gdev_drv_getdevice
[ 1469.630132] gdev: Unknown symbol gdev_drv_getdevice (err -22)
[ 1469.630145] gdev: no symbol version for gdev_drv_bo_alloc
[ 1469.630146] gdev: Unknown symbol gdev_drv_bo_alloc (err -22)
[ 1469.630149] gdev: no symbol version for gdev_drv_vspace_free
[ 1469.630151] gdev: Unknown symbol gdev_drv_vspace_free (err -22)
[ 1469.630153] gdev: no symbol version for gdev_drv_write
[ 1469.630155] gdev: Unknown symbol gdev_drv_write (err -22)
[ 1469.630159] gdev: no symbol version for gdev_drv_chan_alloc
[ 1469.630161] gdev: Unknown symbol gdev_drv_chan_alloc (err -22)
[ 1469.630163] gdev: no symbol version for gdev_drv_bo_unmap
[ 1469.630164] gdev: Unknown symbol gdev_drv_bo_unmap (err -22)
[ 1469.630166] gdev: no symbol version for gdev_drv_getdrm
[ 1469.630168] gdev: Unknown symbol gdev_drv_getdrm (err -22)

The supported Nvdia cards.

I installed the user mode api and cuda module for a student project using gdev. But when running the test programs a message apeared
" [gdev] NV98 not supported. "
with a segmentation fault.
My GPU is NVIDIA Corporation G98 [GeForce 8400 GS Rev. 2] as shown in lspci.

Does gdev really doesnot support G98 or is this some other message?
If it does not support G98 can you please come up with a list of supported Nvdia devices. It will be a great help for new users.

Support for kernel 3.7

Is there any work to support kernel 3.7. Also is there soe plans to merge kernel modules into mainline kernel?

Failed to create a context object (matrixadd test)

Hi,

I'm trying to use gdev with libdrm on nouveau driver.
Kernel: 3.14.0 x86_64
Tesla GK110 (NVF0), NVE0 Family

While running gdev/test/gdev/user/matrixadd I get the following error:

[gdev] Failed to create a context object
Test failed.

This is the backtrace from gdb:
#0 drmCommandWrite (fd=7, drmCommandIndex=4, data=0x7fffffffdf50, size=12) at xf86drm.c:2419
#1 0x00007ffff76012fb in abi16_engobj (obj=0x607280) at abi16.c:110
#2 0x00007ffff75fe18d in nouveau_object_new (parent=0x607450, handle=3203347007, oclass=41024, data=0x0, length=8, pobj=0x7fffffffe028) at nouveau.c:280
#3 0x00007ffff7bd40a4 in gdev_raw_ctx_new (gdev=0x603c80, vas=0x6073d0) at nouveau_gdev.c:410
#4 0x00007ffff7bcda4a in gdev_ctx_new (gdev=0x603c80, vas=0x6073d0) at gdev_nvidia.c:104
#5 0x00007ffff7bc9ac3 in gopen (minor=0) at gdev_api.c:630
#6 0x0000000000400b83 in gdev_test_matrixadd (a=0x603010, b=0x603420, c=0x603830, n=16) at matrixadd.c:154
#7 0x0000000000400a55 in main (argc=2, argv=0x7fffffffe638) at main.c:23

GT 540M (nvc1): thread lockup, high CPU utilization

I am trying to get gdev run on my laptop with nVidia GT 540M which has Optimus features.

I had some success with porting the gdev-nouveau patch for a recent kernel (v3.5-rc5), as some older kernels seem to suffer from a regression that prevents nouveau from correctly loading the VBIOS of Optimus card.

I can get gdev load and initialize scheduling on my card.

[19399.565352] [drm] nouveau 0000:01:00.0: Detected an NVc0 generation card (0x0c1a00a1)
[19399.571400] [drm] nouveau 0000:01:00.0: Checking PRAMIN for VBIOS
[19399.581142] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[19399.581145] [drm] nouveau 0000:01:00.0: Checking PROM for VBIOS
[19399.581206] [drm] nouveau 0000:01:00.0: ... BIOS signature not found
[19399.581207] [drm] nouveau 0000:01:00.0: Checking ACPI for VBIOS
[19400.109459] [drm] nouveau 0000:01:00.0: ... appears to be valid
[19400.109463] [drm] nouveau 0000:01:00.0: Using VBIOS from ACPI
[19400.109465] [drm] nouveau 0000:01:00.0: BIT BIOS found
[19400.109467] [drm] nouveau 0000:01:00.0: Bios version 70.08.55.00
[19400.109469] [drm] nouveau 0000:01:00.0: TMDS table version 2.0
[19400.109804] [drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[19400.109806] [drm] nouveau 0000:01:00.0: DCB version 4.0
[19400.109808] [drm] nouveau 0000:01:00.0: DCB outp 00: 02000300 00000000
[19400.109810] [drm] nouveau 0000:01:00.0: DCB conn 00: 00000000
[19400.109824] [drm] nouveau 0000:01:00.0: Adaptor not initialised, running VBIOS init tables.
[19400.109826] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xD5E7
[19400.131225] [drm] nouveau 0000:01:00.0: 0xD591: i2c wr fail: -6
[19400.171601] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xDC43
[19400.198693] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xEE49
[19400.198699] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xEE4D
[19400.198754] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xEF35
[19400.198756] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xEF9A
[19400.221127] [TTM] Zone  kernel: Available graphics memory: 4045146 kiB
[19400.221129] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[19400.221130] [TTM] Initializing pool allocator
[19400.221133] [TTM] Initializing DMA pool allocator
[19400.221150] [drm] nouveau 0000:01:00.0: Detected 512MiB VRAM (DDR3)
[19400.225943] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[19400.231122] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[19400.231123] [drm] No driver support for vblank timestamp query.
[19400.231125] [drm] nouveau 0000:01:00.0: ACPI backlight interface available, not registering our own
[19400.236646] [drm] nouveau 0000:01:00.0: 3 available performance level(s)
[19400.236649] [drm] nouveau 0000:01:00.0: 0: core 50MHz shader 101MHz memory 135MHz voltage 830mV
[19400.236651] [drm] nouveau 0000:01:00.0: 1: core 202MHz shader 405MHz memory 324MHz voltage 830mV
[19400.236653] [drm] nouveau 0000:01:00.0: 3: core 672MHz shader 1344MHz memory 900MHz voltage 980mV
[19400.236655] [drm] nouveau 0000:01:00.0: c: core 202MHz shader 405MHz memory 324MHz voltage 980mV
[19400.241476] [drm] nouveau 0000:01:00.0: MM: using COPY1 for buffer copies
[19400.318223] [drm] nouveau 0000:01:00.0: allocated 1024x768 fb: 0x120000, bo ffff88023e7e6c00
[19400.318307] fb1: nouveaufb frame buffer device
[19400.318310] [drm] Initialized nouveau 1.0.0 20120316 for 0000:01:00.0 on minor 1
[19400.794484] [drm] nouveau 0000:01:00.0: no native mode, forcing panel scaling
[19421.057854] [gdev] Loading module...
[19421.057864] [gdev] Found 1 physical device(s).
[19421.057869] [gdev] Configured 4 virtual device(s).
[19421.058054] [gdev] Gdev#0 compute scheduler running
[19421.058093] [gdev] Gdev#0 memory scheduler running
[19421.058132] [gdev] Gdev#0 compute reserve running
[19421.058172] [gdev] Gdev#0 memory reserve running
[19421.058209] [gdev] Gdev#1 compute scheduler running
[19421.058247] [gdev] Gdev#1 memory scheduler running
[19421.058286] [gdev] Gdev#1 compute reserve running
[19421.058298] [gdev] Gdev#1 memory reserve running
[19421.058321] [gdev] Gdev#2 compute scheduler running
[19421.058336] [gdev] Gdev#2 memory scheduler running
[19421.058351] [gdev] Gdev#2 compute reserve running
[19421.058367] [gdev] Gdev#2 memory reserve running
[19421.358632] [gdev] Gdev#3 compute scheduler running
[19421.358663] [gdev] Gdev#3 memory scheduler running
[19421.358695] [gdev] Gdev#3 compute reserve running
[19421.358725] [gdev] Gdev#3 memory reserve running

I added some printf statemets to the (user-mode) madd in order to trach exection but not interfere by using a debugger or similar tools.
When I try to run it, cuInit and cuDeviceGet runs successfully. Things start to get interesting with cuCtxCreate, the first call that actually "does something" with the GPU. Although it returns successfully, the following dmesg output is produced:

*** [19435.092642] [gdev] Created context object on gdev0
[19435.092727] [drm] nouveau 0000:01:00.0: PFIFO: read fault at 0x0000000000 [PT_NOT_PRESENT] from PGRAPH/CTXCTL on channel 0x00004de000
[19435.092743] [drm] nouveau 0000:01:00.0: PFIFO: unknown status 0x40000000
*** [19435.092964] [gdev] Created DMA object on gdev0
*** [19435.092977] [gdev] Created scheduling entity on gdev0
[19435.092980] [gdev] Opened gdev0

Lines marked by *** were added by me, and complement the messages that would be printed in case of error. To sum up, the card gets into me sounknown state occurs, but some further memory allocations succeed and the CUDA context can be created.

The test program continues from this point. However, cuModuleLoad never returns and the CPU core on which madd runs gets stuck with 100% utilization. I cannot kill the test application with a SIGTERM, nor a SIGKILL, so I think it could be safely concluded that the kernel is stuck waiting for some spinlock.

Because what gdev_raw_ctx_new does is basically some buffer object allocation with gdev_drv_bo_alloc, I attempted fiddling with that method a bit. Setting an alignment value (0x1000) does not help. I haven't much knowledge about the inner workings of nouveau, nor implementation details of nVidia card, and the gdev_drv_bo_alloc -- comparing it with other code in v3.5-rc5's nouveau -- looked otherwise idiomatic to me, I cannot thing about anything else that could be done to fix this problem.

Do you have any idea how could I get gdev work on my machine? The other card I have access to is GTX 560 Ti (nvc3), which is even newer and I imagine has even... lighter support in nouveau. Although of course I will try gdev on that machine too: the lack of Optimus might help a bit. But currently I only have remote access to that machine and random kernel panics could annoy the system administrators deeply.

I also tried the pscnv driver, but had even less success: it loads an invalid VBIOS from PCIROM, thus a default: case with BUG(1) gets hit when pscnv tries to set the clock frequency for the card. (I wrote a patch for Bumblebee, the script that makes use of Optimus under Linux, to load pscnv. I will, for obvious reasons, only submit that patch to the Bumblebee git repo when I can actually load pscnv without a kernel panic.)

xf86drm.h not found error in compilation

make -C release
make: Entering directory '/home/ubuntu/gdev/gdev/release'
make[1]: Entering directory '/home/ubuntu/gdev/gdev/release'
make[2]: Entering directory '/home/ubuntu/gdev/gdev/release'
make[2]: Leaving directory '/home/ubuntu/gdev/gdev/release'
[ 2%] Built target cudump
make[2]: Entering directory '/home/ubuntu/gdev/gdev/release'
make[2]: Leaving directory '/home/ubuntu/gdev/gdev/release'
make[2]: Entering directory '/home/ubuntu/gdev/gdev/release'
[ 3%] Building C object lib/CMakeFiles/gdev.dir/user/nouveau/nouveau_gdev.c.o
/home/ubuntu/gdev/gdev/lib/user/nouveau/nouveau_gdev.c:32:10: fatal error: xf86drm.h: No such file or directory
#include "xf86drm.h"
^~~~~~~~~~~
compilation terminated.

nouveau patch error

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.

Thanks,
Balaji

Installing gdev.ko module fails.

Hi,
We are installing gdev on ubuntu 12.04 64 bit.
We compiled kernel 3.3.0 according to the instructions at https://gist.github.com/3057893 and booted from it.
We installed envytools and pscnv (from an older commit, d0bdb2f) as well.

When trying to proceed with instructions to install Gdev (https://github.com/shinpei0208/gdev , step 4), the make succeeded with warnings, and we got an error when trying to load gdev.ko (insmod gdev.ko)-
insmod: error inserting 'gdev.ko': -1 Unknown symbol in module
This modules which might be needed are loaded-

drm
drm_kms_helper
i2c_algo_bit
video
pscnv.ko

envytools is not loaded as we black-listed it.

When making gdev.ko we received the following output-

make -C /lib/modules/3.3.0-custom+/build M=/homes/uriv/gdev/mod/build modules
make[1]: Entering directory /homes/uriv/linux-2.6'
CC [M] /homes/uriv/gdev/mod/build/gdev_drv.o
CC [M] /homes/uriv/gdev/mod/build/gdev_drv_nvidia.o
CC [M] /homes/uriv/gdev/mod/build/gdev_fops.o
CC [M] /homes/uriv/gdev/mod/build/gdev_ioctl.o
CC [M] /homes/uriv/gdev/mod/build/gdev_proc.o
CC [M] /homes/uriv/gdev/mod/build/gdev_api.o
CC [M] /homes/uriv/gdev/mod/build/gdev_device.o
CC [M] /homes/uriv/gdev/mod/build/gdev_sched.o
CC [M] /homes/uriv/gdev/mod/build/gdev_nvidia.o
CC [M] /homes/uriv/gdev/mod/build/gdev_nvidia_compute.o
CC [M] /homes/uriv/gdev/mod/build/gdev_nvidia_mem.o
CC [M] /homes/uriv/gdev/mod/build/gdev_nvidia_shm.o
CC [M] /homes/uriv/gdev/mod/build/gdev_nvidia_nvc0.o
LD [M] /homes/uriv/gdev/mod/build/gdev.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "gdev_drv_getdrm" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unmap" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_alloc" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_free" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_alloc" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getdevice" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_vspace_alloc" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getparam" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_map" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_setnotify" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_read32" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_bind" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_getaddr" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_unsetnotify" [q/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_unbind" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_bo_free" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_write32" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
WARNING: "gdev_drv_chan_free" [/homes/uriv/gdev/mod/build/gdev.ko] undefined!
CC /homes/uriv/gdev/mod/build/gdev.mod.o
LD [M] /homes/uriv/gdev/mod/build/gdev.ko
make[1]: Leaving directory/homes/uriv/linux-2.6'

Please help us to resolve this issue.
Thank you.

Using cuda in scheduler

Hi, I want to use cuda in the linux scheduler ? can I use cuda in current CFS ,

Pl let me know?

Problem compiling on Ubuntu 15.04 64 bit

Had a bit of trouble compiling this:

/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp: In member function ‘bool analysis::ControlTree::_interact(const NodeVector&, const NodeVector&)’:
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:872:21: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
      boost::ref(this), _1, _2));
                     ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:878:21: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
      boost::ref(this), _1, _2));
                     ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:884:21: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
      boost::ref(this), _1, _2));
                     ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp: In member function ‘analysis::ControlTree::NodeVector analysis::ControlTree::_minimal_hammock_graph(const Edge&)’:
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:920:24: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
         boost::ref(this), _1, _2));
                        ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp: In member function ‘bool analysis::ControlTree::_forward_copy(analysis::ControlTree::Node*)’:
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:1135:24: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
         boost::ref(this), _1, _2));
                        ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:1142:24: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
         boost::ref(this), _1, _2));
                        ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:1149:24: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
         boost::ref(this), _1, _2));
                        ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
/home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:1162:24: error: invalid initialization of non-const reference of type ‘analysis::ControlTree*&’ from an rvalue of type ‘analysis::ControlTree*’
         boost::ref(this), _1, _2));
                        ^
In file included from /usr/include/boost/bind/bind.hpp:25:0,
                 from /usr/include/boost/bind.hpp:22,
                 from /home/stu/projects/external/gdev/cuda/runtime/ocelot/analysis/implementation/ControlTree.cpp:22:
/usr/include/boost/ref.hpp:64:63: note: in passing argument 1 of ‘const boost::reference_wrapper<T> boost::ref(T&) [with T = analysis::ControlTree*]’
 template<class T> inline reference_wrapper<T> BOOST_REF_CONST ref(T & t)
                                                               ^
cuda/CMakeFiles/ucuda.dir/build.make:365: recipe for target 'cuda/CMakeFiles/ucuda.dir/runtime/ocelot/analysis/implementation/ControlTree.cpp.o' failed
make[2]: *** [cuda/CMakeFiles/ucuda.dir/runtime/ocelot/analysis/implementation/ControlTree.cpp.o] Error 1
CMakeFiles/Makefile2:112: recipe for target 'cuda/CMakeFiles/ucuda.dir/all' failed
make[1]: *** [cuda/CMakeFiles/ucuda.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2

README.gdev:patch -p1 < $(TOPDIR)/gdev/mod/linux/patches/gdev-nouveau-X.X.patch problem

in the 3rd step in README.gdev file ,i am trying to execute the patch command:
patch -p1 < $(TOPDIR)/gdev/mod/linux/patches/gdev-nouveau-X.X.patch

as follow
hatem@hatem-VirtualBox:~/linux-2.6$ patch -p1 < ~/gdev/mod/linux/patches/gdev-nouveau-3.3.patch
patching file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED -- saving rejects to file drivers/gpu/drm/nouveau/Makefile.rej
The next patch would create the file drivers/gpu/drm/nouveau/gdev_interface.c,
which already exists! Assume -R? [n] n
Apply anyway? [n] n
Skipping patch.
1 out of 1 hunk ignored
The next patch would create the file drivers/gpu/drm/nouveau/gdev_interface.h,
which already exists! Assume -R? [n] n
Apply anyway? [n] n
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 574
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-11 17:18:03.200173623 +0900

File to patch:

i want to know what is wrong ,and what should i enter in File to patch:
actually i am just a beginner ,so forgive me if it seems fool question.

Passing a value to running kernel

I know that sometime back gdev was not supporting passing a value from CPU(host) to GPU(device) while GPU kernel is running via zero-copy memory. Is this support now?

User-level madd test program hungs after several repeated executions

My machine has GTX480 GPU (1536MB), and linux 3.3.0 installed. Both gdev/mod/nouveau and gdev/mod/pscnv compile successfully. Each of them loads well too.

I tried the user-level test program madd by repeated executing it several times, and it executes successfully initially. Then when I execute it for around the 20+th time, the program hungs. Here's dmesg output when pscnv was used:

[drm] Initialized drm 1.1.0 20060810
[drm] pscnv 0000:01:00.0: Detected an NVc0 generation card (0x0c0000a3)
[drm] pscnv 0000:01:00.0: Initializing card...
[drm] pscnv 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[drm] pscnv 0000:01:00.0: ... appears to be valid
[drm] pscnv 0000:01:00.0: BIT BIOS found
[drm] pscnv 0000:01:00.0: Bios version 70.00.35.00
[drm] pscnv 0000:01:00.0: TMDS table version 2.0
[drm] pscnv 0000:01:00.0: Found Display Configuration Block version 4.0
[drm] pscnv 0000:01:00.0: Raw DCB entry 0: 02000300 00000000
[drm] pscnv 0000:01:00.0: Raw DCB entry 1: 01000302 00020030
[drm] pscnv 0000:01:00.0: Raw DCB entry 2: 04011380 00000000
[drm] pscnv 0000:01:00.0: Raw DCB entry 3: 08011382 00020030
[drm] pscnv 0000:01:00.0: Raw DCB entry 4: 02022362 00020010
[drm] pscnv 0000:01:00.0: DCB connector table: VHER 0x40 5 16 4
[drm] pscnv 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07
[drm] pscnv 0000:01:00.0: 1: 0x00010130: type 0x30 idx 1 tag 0x51
[drm] pscnv 0000:01:00.0: 2: 0x00002261: type 0x61 idx 2 tag 0x08
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x6ABA
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x7151
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x83C0
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 3 at offset 0x83CA
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 4 at offset 0x85D3
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table at offset 0x8638
[drm] pscnv 0000:01:00.0: 0x8638: Condition still not met after 20ms, skipping following opcodes
[drm] pscnv 0000:01:00.0: VRAM: size 0x60000000, 6 controllers
adt7475 1-002e: ADT7473 device, revision 1
[drm] pscnv 0000:01:00.0: Detected monitoring device: adt7473
[drm] pscnv 0000:01:00.0: 4 available performance level(s)
[drm] pscnv 0000:01:00.0: 0: core 50MHz shader 101MHz memory 135MHz voltage 962mV
[drm] pscnv 0000:01:00.0: 1: core 405MHz shader 810MHz memory 324MHz voltage 962mV
[drm] pscnv 0000:01:00.0: 2: core 405MHz shader 810MHz memory 1848MHz voltage 987mV-1125mV
[drm] pscnv 0000:01:00.0: 3: core 700MHz shader 1401MHz memory 1848MHz voltage 987mV-1125mV
[drm] pscnv 0000:01:00.0: c: core 50MHz shader 101MHz memory 135MHz
[drm] pscnv 0000:01:00.0: VM: Allocating vspace -3
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel -3
[drm] pscnv 0000:01:00.0: VM: Allocating vspace -1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel -1
[drm] pscnv 0000:01:00.0: PGRAPH: Initializing...
[drm] pscnv 0000:01:00.0: PCOPY0: Initializing...
[drm] pscnv 0000:01:00.0: PCOPY1: Initializing...
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] No driver support for vblank timestamp query.
[drm] pscnv 0000:01:00.0: allocated 1600x900 fb: 0x200000 0x80000, bo ffff8802246072c0
fbcon: nouveaufb (fb0) is primary device
Console: switching to colour frame buffer device 200x56
fb0: nouveaufb frame buffer device
drm: registered panic notifier
[drm] pscnv 0000:01:00.0: Card initialized.
[drm] Initialized pscnv 0.0.0 20120123 for 0000:01:00.0 on minor 0
[gdev] Loading module...
[gdev] Found 1 physical device(s).
[gdev] Configured 4 virtual device(s).
[gdev] Gdev#0 memory scheduler running
[gdev] Gdev#0 compute reserve running
[gdev] Gdev#0 memory reserve running
[gdev] Gdev#1 compute scheduler running
[gdev] Gdev#1 memory scheduler running
[gdev] Gdev#1 compute reserve running
[gdev] Gdev#1 memory reserve running
[gdev] Gdev#2 compute scheduler running
[gdev] Gdev#2 memory scheduler running
[gdev] Gdev#2 compute reserve running
[gdev] Gdev#2 memory reserve running
[gdev] Gdev#3 compute scheduler running
[gdev] Gdev#3 memory scheduler running
[gdev] Gdev#3 compute reserve running
[gdev] Gdev#3 memory reserve running
[gdev] Gdev#0 compute scheduler running
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[drm] pscnv 0000:01:00.0: PGRAPH: generating default grctx
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: CHAN: Freeing channel 1
[drm] pscnv 0000:01:00.0: VM: Freeing vspace 1
[gdev] Closed gdev0
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: CHAN: Freeing channel 1
[drm] pscnv 0000:01:00.0: VM: Freeing vspace 1
[gdev] Closed gdev0
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: CHAN: Freeing channel 1
[drm] pscnv 0000:01:00.0: VM: Freeing vspace 1
[gdev] Closed gdev0
...... ...... ......
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: CHAN: Freeing channel 1
[drm] pscnv 0000:01:00.0: VM: Freeing vspace 1
[gdev] Closed gdev0
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: CHAN: Freeing channel 1
[drm] pscnv 0000:01:00.0: VM: Freeing vspace 1
[gdev] Closed gdev0
[drm] pscnv 0000:01:00.0: VM: Allocating vspace 1
[drm] pscnv 0000:01:00.0: CHAN: Allocating channel 1
[gdev] Opened gdev0
[drm] pscnv 0000:01:00.0: PGRAPH PAGE FAULT at 0x0000001000 (r, PTE not present)

The screen froze when nouveau was used, and I was not able to get the dmesg output. I also tried the nouveau patch with the nouveau source code bundled with linux 3.3.0 kernel. The same problem happened.

I remember I also met similar problem when I used GTX580, linux 3.3.8, and nouveau earlier this week. In that case, madd hang when it executed for the 20th time, but the screen did not freeze. I was able to switch to another console and get the dmesg output as follows:

[drm] Initialized drm 1.1.0 20060810
VGA switcheroo: detected Optimus DSM method \ handle
[drm] nouveau 0000:01:00.0: Detected an NVc0 generation card (0x0c8000a1)
checking generic (d7000000 e00000) vs hw (d8000000 8000000)
checking generic (d7000000 e00000) vs hw (d6000000 2000000)
fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver
Console: switching to colour dummy device 80x25
[drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[drm] nouveau 0000:01:00.0: ... appears to be valid
[drm] nouveau 0000:01:00.0: BIT BIOS found
[drm] nouveau 0000:01:00.0: Bios version 70.10.48.00
[drm] nouveau 0000:01:00.0: TMDS table version 2.0
[drm] nouveau 0000:01:00.0: MXM: no VBIOS data, nothing to do
[drm] nouveau 0000:01:00.0: DCB version 4.0
[drm] nouveau 0000:01:00.0: DCB outp 00: 02000300 00000000
[drm] nouveau 0000:01:00.0: DCB outp 01: 01000302 00020030
[drm] nouveau 0000:01:00.0: DCB outp 02: 04011380 00000000
[drm] nouveau 0000:01:00.0: DCB outp 03: 08011382 00020030
[drm] nouveau 0000:01:00.0: DCB outp 04: 02022362 00020010
[drm] nouveau 0000:01:00.0: DCB conn 00: 00001030
[drm] nouveau 0000:01:00.0: DCB conn 01: 00010130
[drm] nouveau 0000:01:00.0: DCB conn 02: 00002261
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x6BD4
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x7296
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x878C
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0x8796
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0x8A0A
[drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0x8A6F
[drm] nouveau 0000:01:00.0: 0x8A6F: Condition still not met after 20ms, skipping following opcodes
[TTM] Zone kernel: Available graphics memory: 4027584 kiB.
[TTM] Zone dma32: Available graphics memory: 2097152 kiB.
[TTM] Initializing pool allocator.
[TTM] Initializing DMA pool allocator.
[drm] nouveau 0000:01:00.0: Detected 1536MiB VRAM (GDDR5)
[drm] nouveau 0000:01:00.0: 512 MiB GART (aperture)
[drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[drm] No driver support for vblank timestamp query.
[drm] nouveau 0000:01:00.0: 0 available performance level(s)
[drm] nouveau 0000:01:00.0: c: core 50MHz shader 101MHz memory 135MHz voltage 963mV fanspeed 41%
[drm] nouveau 0000:01:00.0: allocated 1600x900 fb: 0x1e0000, bo ffff880232311400
fbcon: nouveaufb (fb0) is primary device
Console: switching to colour frame buffer device 200x56
fb0: nouveaufb frame buffer device
drm: registered panic notifier
[drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0
[gdev] Loading module...
[gdev] Found 1 physical device(s).
[gdev] Configured 4 virtual device(s).
[gdev] Opened gdev0
[gdev] Closed gdev0
[gdev] Opened gdev0
[gdev] Closed gdev0
...... ...... ......
[gdev] Opened gdev0
[gdev] Closed gdev0
[gdev] Opened gdev0
[gdev] Closed gdev0
[drm] nouveau 0000:01:00.0: PFIFO: write fault at 0x00000b9000 [PAGE_NOT_PRESENT] from BAR3/BAR_WRITE on channel 0x0000058000
[drm] nouveau 0000:01:00.0: PFIFO: unknown status 0x40000000
[drm] nouveau 0000:01:00.0: PFIFO: read fault at 0x0000000000 [PT_NOT_PRESENT] from PGRAPH/CTXCTL on channel 0x00215bf000
[gdev] Opened gdev0
[drm] nouveau 0000:01:00.0: GPU lockup - switching to software fbcon

The problem with 3.3.8 and GTX580 seemed to be about PFIFO, while the problem with 3.3.0 and GTX480 seemed to be about PGRAPH. Any ideas?

Renderer crashes after spawning 96000 particle emitters

Describe the bug

Spawn 2-20 emitters every frame.
Emitters have 1-100 particles in tank and the option of destroy the emitter when the tank is empty is enabled.

In about 96000 spawned emitters the display renderer (as well as the editor renderer) crashes rendering only black screen and nothing other than restarting the program removes it, Editor recovers itself in a few seconds but the game is done for).

To Reproduce

Events used.
image

Particle emitter used (The other one is identical copy of this one).
image

This is how it looks when it crashes.
Upper value is time in seconds
Lower is amount of particle emitters spawned.
https://user-images.githubusercontent.com/90930609/149629379-baac9557-9b50-4578-adf4-4ab9172a9a82.mp4

Here's the bug test program to test this with.
I put in 20 emitters per frame to speed up the crash event to happen, crashes every time around 96000 spawned emitters.
BugTestForParticleEmitterCrashingRenderer.zip

Other details

Been a problem for at least from New years eve but also in the latest build from today.
image

OS Windows 10

Patching the latest 3.12.0 nouveau fails with latest shinpei0208/gdev

Hi there,
I'm currently using the OS Fedora 20 64-bit with the latest drm,nouveau-kernel, mesa, and the xf86-video-nouveau DDX source code, from the git repositories.

I am interested with using CUDA-5.5 with the nouveau driver. I have downloaded another
nouveau-kernel inside another folder,so I can safely patch it with your patches.

Anyway, I have downloaded latest envytools and the latest gdev. I have tried the 2005 gdev,but I'm getting the same problem with that.

The Graphics Card I'm running currently is a Nvidia Geforce 560 with 1Gb of memory
(A NVCE card).

I have read the README.gdev and the other REDAME'S also.
I have tried patching my latest copy of the nouveau-kernel, but with no success.
FWIW, I was patching the kernel last night and I do know gdev-nouveau-3.3.patch did apply cleanly, but for some unknown reason, it now does not, or any of the other patches in the folder. The errors I am hitting are here:

[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.10.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 succeeded at 306 with fuzz 2 (offset 70 lines).
checking file drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
Hunk #1 succeeded at 676 with fuzz 1 (offset 253 lines).
Hunk #2 succeeded at 699 (offset 253 lines).
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
checking file drivers/gpu/drm/nouveau/nouveau_chan.c
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
checking file drivers/gpu/drm/nouveau/nouveau_drm.c
Hunk #1 succeeded at 88 with fuzz 2 (offset 17 lines).
Hunk #2 succeeded at 365 (offset 10 lines).
Hunk #3 FAILED at 382.
Hunk #4 succeeded at 658 with fuzz 1 (offset 51 lines).
Hunk #5 FAILED at 764.
2 out of 5 hunks FAILED
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.9.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 succeeded at 306 with fuzz 2 (offset 70 lines).
checking file drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
Hunk #1 succeeded at 676 with fuzz 1 (offset 267 lines).
Hunk #2 succeeded at 699 (offset 267 lines).
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
checking file drivers/gpu/drm/nouveau/nouveau_chan.c
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
checking file drivers/gpu/drm/nouveau/nouveau_drm.c
Hunk #1 succeeded at 88 with fuzz 2 (offset 17 lines).
Hunk #2 succeeded at 365 (offset 10 lines).
Hunk #3 FAILED at 386.
Hunk #4 succeeded at 658 with fuzz 1 (offset 58 lines).
Hunk #5 FAILED at 763.
2 out of 5 hunks FAILED
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.8.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 succeeded at 306 with fuzz 2 (offset 92 lines).
checking file drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
Hunk #1 succeeded at 676 with fuzz 1 (offset 267 lines).
Hunk #2 succeeded at 699 (offset 267 lines).
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
checking file drivers/gpu/drm/nouveau/nouveau_chan.c
Hunk #1 succeeded at 370 (offset 1 line).
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
checking file drivers/gpu/drm/nouveau/nouveau_drm.c
Hunk #1 succeeded at 79 (offset 11 lines).
Hunk #2 succeeded at 365 (offset 49 lines).
Hunk #3 FAILED at 347.
Hunk #4 succeeded at 658 with fuzz 1 (offset 98 lines).
Hunk #5 FAILED at 713.
2 out of 5 hunks FAILED
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.7.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 succeeded at 306 with fuzz 2 (offset 122 lines).
checking file drivers/gpu/drm/nouveau/core/engine/graph/nvc0.c
Hunk #1 succeeded at 676 with fuzz 1 (offset 267 lines).
Hunk #2 succeeded at 699 (offset 267 lines).
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
checking file drivers/gpu/drm/nouveau/nouveau_chan.c
Hunk #1 succeeded at 370 (offset 3 lines).
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
checking file drivers/gpu/drm/nouveau/nouveau_drm.c
Hunk #1 succeeded at 79 (offset 9 lines).
Hunk #2 succeeded at 365 (offset 53 lines).
Hunk #3 FAILED at 343.
Hunk #4 succeeded at 658 with fuzz 1 (offset 135 lines).
Hunk #5 FAILED at 668.
2 out of 5 hunks FAILED
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.6.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
can't find file to patch at input line 575
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
|*** a/drivers/gpu/drm/nouveau/nouveau_channel.c 2012-10-01 08:47:46.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_channel.c 2013-07-16 15:17:43.105682830 +0900

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
can't find file to patch at input line 612
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-10-01 08:47:46.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-16 15:17:43.106682772 +0900

File to patch: patch: tty read failed: Bad file descriptor
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 659
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|*** a/drivers/gpu/drm/nouveau/nouveau_state.c 2012-10-01 08:47:46.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_state.c 2013-07-16 15:17:43.107682718 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 694
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c
|*** a/drivers/gpu/drm/nouveau/nvc0_graph.c 2012-10-01 08:47:46.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nvc0_graph.c 2013-07-16 15:17:43.108682666 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.5.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
can't find file to patch at input line 574
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_channel.c b/drivers/gpu/drm/nouveau/nouveau_channel.c
|*** a/drivers/gpu/drm/nouveau/nouveau_channel.c 2012-07-22 05:58:29.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_channel.c 2013-07-16 13:55:54.091799828 +0900

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
checking file drivers/gpu/drm/nouveau/nouveau_dma.h
can't find file to patch at input line 611
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-07-22 05:58:29.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-16 13:55:54.093799949 +0900

File to patch: patch: tty read failed: Bad file descriptor
Skip this patch? [y]
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 655
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|*** a/drivers/gpu/drm/nouveau/nouveau_state.c 2012-07-22 05:58:29.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_state.c 2013-07-16 13:55:54.095800061 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 689
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c
|*** a/drivers/gpu/drm/nouveau/nvc0_graph.c 2012-07-22 05:58:29.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nvc0_graph.c 2013-07-16 13:55:54.096800113 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.4.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
can't find file to patch at input line 574
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-05-21 07:29:13.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-11 18:55:09.180310715 +0900

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 618
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|*** a/drivers/gpu/drm/nouveau/nouveau_state.c 2012-05-21 07:29:13.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_state.c 2013-07-11 18:55:09.185310851 +0900

File to patch: patch: tty read failed: Bad file descriptor
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 645
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c
|*** a/drivers/gpu/drm/nouveau/nvc0_graph.c 2012-05-21 07:29:13.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nvc0_graph.c 2013-07-11 18:55:09.194311022 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run < /home/steve/gdev/mod/linux/patches/gdev-nouveau-3.3.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
can't find file to patch at input line 574
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-11 17:18:03.200173623 +0900

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 618
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|*** a/drivers/gpu/drm/nouveau/nouveau_state.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_state.c 2013-07-11 17:18:03.202173151 +0900

File to patch: patch: tty read failed: Bad file descriptor
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 645
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c
|*** a/drivers/gpu/drm/nouveau/nvc0_graph.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nvc0_graph.c 2013-07-11 17:18:03.203172917 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
[steve@localhost linux-2.6-gdev]$ patch -p1 --dry-run </home/steve/gdev/mod/linux/patches/gdev-nouveau-3.3.patch
checking file drivers/gpu/drm/nouveau/Makefile
Hunk #1 FAILED at 3.
1 out of 1 hunk FAILED
checking file drivers/gpu/drm/nouveau/gdev_interface.c
checking file drivers/gpu/drm/nouveau/gdev_interface.h
can't find file to patch at input line 574
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_drv.c b/drivers/gpu/drm/nouveau/nouveau_drv.c
|*** a/drivers/gpu/drm/nouveau/nouveau_drv.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_drv.c 2013-07-11 17:18:03.200173623 +0900

File to patch:
Skip this patch? [y] y
Skipping patch.
1 out of 1 hunk ignored
can't find file to patch at input line 618
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nouveau_state.c b/drivers/gpu/drm/nouveau/nouveau_state.c
|*** a/drivers/gpu/drm/nouveau/nouveau_state.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nouveau_state.c 2013-07-11 17:18:03.202173151 +0900

File to patch: patch: tty read failed: Bad file descriptor
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored
can't find file to patch at input line 645
Perhaps you used the wrong -p or --strip option?

The text leading up to this was:

|diff -crN a/drivers/gpu/drm/nouveau/nvc0_graph.c b/drivers/gpu/drm/nouveau/nvc0_graph.c
|*** a/drivers/gpu/drm/nouveau/nvc0_graph.c 2012-03-19 08:15:34.000000000 +0900

|--- b/drivers/gpu/drm/nouveau/nvc0_graph.c 2013-07-11 17:18:03.203172917 +0900

File to patch:
Skip this patch? [y]
Skipping patch.
2 out of 2 hunks ignored

I hope you can help me with this issue and tell me if it is possible to use nouveau with gdev/CUDA.

Regards,
Steve555

How to developing manage memory in GPU?

Hello All
I have plan for improving DRM and API managed memory of GPU. Gdev will be help for manage memory for my algorithms search binary file. I research in fast search string algorithm with GPU topic. My question about for start to hacking/developing DRM and Gdev API.

 1)     Is Gdev is open source project license?
 2)     How should I  starting or learning the DRM for hack or develop API of Gdev? I should do only developing Gdev API for managing memory in GPU, right?

Sorry, If I write in issues topic. I cannot found another place for posting.

Thank you
Chatsiri Rattana.

gdev user_test 256 failed, [gdev] Failed to create a virtual address space object

Hello,

I tried to test gdev with Jetson TK1 and got the following:

root@tegra-ubuntu:/home/ubuntu/gdev/gdev/test/cuda/user/madd# ./user_test 256
block = (16, 16)
grid = (16, 16)
[gdev] Failed to create a virtual address space object
cuCtxCreate failed: res = 999
Test failed

This #17 issue report says that gdev does not support 32-bit machines, but it seems to run on a 64-Bit machine.

Does that mean gdev does not support ARM?

Best regards,

Evil-Lyn

can i use my laptop with NVIDIA GeForce GT 630M

I've an "HP Pavilion dv6-7030se" laptop with "NVIDIA GeForce GT 630M (2 GB DDR3 dedicated)" ,i don't know how it's connected through PCI or not ,as i purchased it as it is ,and i want to install and use gdev to do some tests, is it will work with my laptop?

pscnv.ko fails to load (valinna linux 2.6.38.8 kernel, GTX580 GPU)

The pscnv in gdev compiles well, but fails to load on my machine with valinna 2.6.38.8 kernel. The dmesg output shows:

[drm] Initialized drm 1.1.0 20060810
pscnv 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
pscnv 0000:01:00.0: setting latency timer to 64
[drm] pscnv 0000:01:00.0: Detected an NVc0 generation card (0x0c8000a1)
[drm] pscnv 0000:01:00.0: Initializing card...
[drm] pscnv 0000:01:00.0: Attempting to load BIOS image from PRAMIN
[drm] pscnv 0000:01:00.0: ... appears to be valid
[drm] pscnv 0000:01:00.0: BIT BIOS found
[drm] pscnv 0000:01:00.0: Bios version 70.10.48.00
[drm] pscnv 0000:01:00.0: TMDS table version 2.0
[drm] pscnv 0000:01:00.0: Found Display Configuration Block version 4.0
[drm] pscnv 0000:01:00.0: Raw DCB entry 0: 02000300 00000000
[drm] pscnv 0000:01:00.0: Raw DCB entry 1: 01000302 00020030
[drm] pscnv 0000:01:00.0: Raw DCB entry 2: 04011380 00000000
[drm] pscnv 0000:01:00.0: Raw DCB entry 3: 08011382 00020030
[drm] pscnv 0000:01:00.0: Raw DCB entry 4: 02022362 00020010
[drm] pscnv 0000:01:00.0: DCB connector table: VHER 0x40 5 16 4
[drm] pscnv 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07
[drm] pscnv 0000:01:00.0: 1: 0x00010130: type 0x30 idx 1 tag 0x51
[drm] pscnv 0000:01:00.0: 2: 0x00002261: type 0x61 idx 2 tag 0x08
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 0 at offset 0x6BD4
[drm] pscnv 0000:01:00.0: unknown i2c port 51
[drm] pscnv 0000:01:00.0: 0x6B49: Failed parsing init table opcode: INIT_I2C_IF -19
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 1 at offset 0x7296
[drm] pscnv 0000:01:00.0: unknown i2c port 51
[drm] pscnv 0000:01:00.0: 0x8553: Failed parsing init table opcode: INIT_I2C_LONG_IF -19
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 2 at offset 0x878C
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 3 at offset 0x8796
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table 4 at offset 0x8A0A
[drm] pscnv 0000:01:00.0: Parsing VBIOS init table at offset 0x8A6F
[drm] pscnv 0000:01:00.0: 0x8A6F: Condition still not met after 20ms, skipping following opcodes
[drm] pscnv 0000:01:00.0: VRAM: size 0x60000000, 6 controllers
[drm] pscnv 0000:01:00.0: unknown i2c port 51
BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
IP: [] i2c_transfer+0x16/0x110 [i2c_core]
PGD 22c58e067 PUD 22de76067 PMD 0
Oops: 0000 [#1] SMP
last sysfs file: /sys/module/i2c_core/initstate
CPU 0
Modules linked in: pscnv(+) drm_kms_helper drm i2c_algo_bit video autofs4 ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables nf_conntrack_tftp nf_conntrack_ftp ip6t_REJECT ip6t_ipv6header nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log dm_mod uinput sg dcdbas microcode pcspkr serio_raw i2c_i801 i2c_core iTCO_wdt iTCO_vendor_support broadcom tg3 snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc ext4 mbcache jbd2 sd_mod crc_t10dif ahci libahci [last unloaded: speedstep_lib]

Pid: 2010, comm: modprobe Not tainted 2.6.38.8 #1 Dell Inc. Precision T1500/0P67HD
RIP: 0010:[] [] i2c_transfer+0x16/0x110 [i2c_core]
RSP: 0018:ffff880229da3828 EFLAGS: 00010296
RAX: ffff880229da38a7 RBX: 0000000000000000 RCX: 0000000000003c75
RDX: 0000000000000002 RSI: ffff880229da3878 RDI: 0000000000000000
RBP: ffff880229da3868 R08: 0000000000000000 R09: ffffffff816419e0
R10: 0000000000000001 R11: 0000000000000000 R12: ffffffffa038d4e0
R13: ffff880229da3908 R14: 0000000000000000 R15: ffff88022c70f000
FS: 00007f919cd84700(0000) GS:ffff8800bf400000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000010 CR3: 000000022c0f6000 CR4: 00000000000006f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process modprobe (pid: 2010, threadinfo ffff880229da2000, task ffff88022ca8ab30)
Stack:
ffffffffa03ea5b2 0000000000000000 ffff88022c70f000 0000000000000000
ffffffffa038d4e0 ffff880229da3908 0000000000000000 ffff88022c70f000
ffff880229da38a8 ffffffffa038487b ffff00010000002d ffff880229da38a7
Call Trace:
[] ? probe_monitoring_device+0x0/0xc0 [pscnv]
[] nouveau_probe_i2c_addr+0x4b/0x60 [pscnv]
[] nouveau_i2c_identify+0x5b/0x170 [pscnv]
[] nouveau_temp_probe_i2c+0xdd/0xe0 [pscnv]
[] nouveau_temp_init+0x2d/0x4a0 [pscnv]
[] nouveau_pm_init+0x51/0x4f0 [pscnv]
[] ? __cond_resched+0x2a/0x40
[] ? _cond_resched+0x30/0x40
[] ? mutex_lock+0x1e/0x50
[] ? put_online_cpus+0x52/0x70
[] ? mtrr_add_page+0x1b5/0x470
[] ? mtrr_add+0x56/0x70
[] nouveau_card_init+0x206/0x8c0 [pscnv]
[] nouveau_load+0x570/0x8a0 [pscnv]
[] drm_get_pci_dev+0x180/0x2a0 [drm]
[] nouveau_pci_probe+0x15/0x1c [pscnv]
[] local_pci_probe+0x5f/0xd0
[] pci_device_probe+0x101/0x120
[] ? driver_sysfs_add+0x7a/0xb0
[] driver_probe_device+0xa3/0x2b0
[] __driver_attach+0xab/0xb0
[] ? __driver_attach+0x0/0xb0
[] bus_for_each_dev+0x64/0x90
[] driver_attach+0x1e/0x20
[] bus_add_driver+0x1e8/0x290
[] ? nouveau_init+0x0/0xd4 [pscnv]
[] driver_register+0x76/0x140
[] ? nouveau_init+0x0/0xd4 [pscnv]
[] __pci_register_driver+0x56/0xd0
[] drm_pci_init+0xe4/0xf0 [drm]
[] ? nouveau_init+0x0/0xd4 [pscnv]
[] drm_init+0x58/0x70 [drm]
[] nouveau_init+0xcf/0xd4 [pscnv]
[] do_one_initcall+0x43/0x190
[] sys_init_module+0xbb/0x200
[] system_call_fastpath+0x16/0x1b
Code: 00 00 00 00 00 48 83 e8 58 74 e6 48 89 c7 e8 c2 ff ff ff c9 c3 55 48 89 e5 41 57 41 56 41 55 41 54 53 48 83 ec 18 0f 1f 44 00 00 <48> 8b 47 10 48 89 fb 49 89 f5 41 89 d6 48 83 38 00 0f 84 a8 00
RIP [] i2c_transfer+0x16/0x110 [i2c_core]
RSP
CR2: 0000000000000010
---[ end trace c26142068be8f301 ]---

I checked modules.dep. The modules pscnv.ko depend on are:
extra/pscnv.ko: kernel/drivers/gpu/drm/drm_kms_helper.ko kernel/drivers/gpu/drm/drm.ko kernel/drivers/i2c/algos/i2c-algo-bit.ko kernel/drivers/i2c/i2c-core.ko kernel/drivers/acpi/video.ko
All from the valinna linux-2.6.38.8 installation. I guess there may be something wrong within some of the modules.

Maybe I should try to compile a history 2.6.38.8 kernel fetched from the nouveau repository (git://anongit.freedesktop.org/nouveau/linux-2.6), rather than from the valinna linux kernel website (www.kernel.org)?

Issue: [gdev] Failed to open gdev0

Hello,
I got an issue when I try to run sample matrixadd in /gdev/test/gdev/user/matrixadd/

$ ./user_test 256
[gdev] Failed to open gdev0
Test Failed

I tried "sudo ./user_test 256" but it produced the same result.
I found out that gdev0 is not existed in my /dev directory. Is that means there is something wrong during the installation?

Thanks in advance!

render nodes support

We can leverage render nodes to support non-priviledged GPGPU execution.
Searching /dev/dri/renderD%d is enough, the number is from 128 to 128 + 64.

Failed to open gdev0 / cuCtxCreate failed

Hello,

I'm very interested in Gdev and I would like to use the user-space runtime with the Nouveau driver.
Nouveau and libdrm were previously installed, so I followed to Readme.nouveau to install the Gdev library and the CUDA driver API.
I installed the CUDA 4.0 Toolkit (and only the toolkit) to use nvcc to compile the programs.
To test Gdev I compiled and tried to run the madd program (in test/cuda/user), changing the Makefile according to the Readme (add "-ldrm -ldrm_nouveau -L /usr/lib").

The compilation seems ok :
$ make
nvcc -arch sm_20 -cubin -o madd_gpu.cubin madd_gpu.cu
gcc -o user_test -L /usr/local/gdev/lib64 -I /usr/local/gdev/include -ldrm_nouveau -lcuda -lgdev main.c madd.c

But when I run the program I've got the following :
$ ./user_test 256
block = (16, 16)
grid = (16, 16)
[gdev] Failed to open gdev0
cuCtxCreate failed: res = 999
Test failed

Is there a common troubleshooting for this, or did I miss something?

My configuration :
Ubuntu 12.10 32 bit, kernel 3.5.0-27
GPU : Quadro 2000

Thank you,
Clementine

Issue: Failed to create a virtual address space object

I got issue when I run sample madd gdev.

$ cd gdev/test/cuda/user/madd

$ gdev/test/cuda/user/madd# make
nvcc -arch sm_20 -cubin -o madd_gpu.cubin madd_gpu.cu
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
gcc -o user_test -g -L /usr/local/gdev/lib64 -I /usr/local/gdev/include main.c madd.c -lucuda -lgdev

$ gdev/test/cuda/user/madd# ./user_test 256
block = (16, 16)
grid = (16, 16)
[gdev]: Failed to create a virtual address space object
cuCtxCreate failed: res = 999
Test failed

my Nvidia GPU card: GeForce GT 730
Driver Version: 367.57
Thanks in advance

Issues porting gdev to ARM

Hello,

I am trying to run gdev on a Jetson TK1 (32Bit ARMv7 CPU), but getting
error messages. Building gdev succeeds, but running test applications fails.
It seems like gdev is not suitable for ARM machines out of the box.
But I am not sure if I have to adjust some configurations or some lines of source code.
In any case I am willing to do both, but I need some clues where to start.

My current setup is a NVidia Jetson TK1 with Linux for Tegra R21.4 (ubuntu-like) with
the latest nouveau git driver and the latest git kernel. The Jetson comes with a NVidia Kepler "GK20a" GPU.

However, running the test application in "$TOPDIR/gdev/test/cuda/user/madd" yields

./user_test 256
block = (16, 16)
grid = (16, 16)
[gdev] Failed to create a context object
cuCtxCreate failed: res = 999
Test failed

Debugging the application leads me to an error in libdrm_nouveau.so.2.
http://sourcecodebrowser.com/libdrm/2.4.15/nouveau__bo_8c.html#a3d7d749eb4a6f0f1e3d7d3e48ff96b4d
The GDB backtrace is as follows:
#0 0xb6ead73c in nouveau_bo_new () from

/usr/lib/arm-linux-gnueabihf/libdrm_nouveau.so.2
#1 0xb6fd3d22 in gdev_raw_ctx_new (gdev=0x13030, vas=0x158d0) at

/home/ubuntu/gdev/gdev/lib/user/nouveau/nouveau_gdev.c:473
#2 0xb6fcda0a in gdev_ctx_new (gdev=0x13030, vas=0x158d0) at

/home/ubuntu/gdev/gdev/common/gdev_nvidia.c:104
#3 0xb6fcc7ba in gopen (minor=0) at

/home/ubuntu/gdev/gdev/common/gdev_api.c:630
#4 0x00008a70 in gdev_test_matrixadd (a=0xb6e6b008, b=0xb6e2a008,

c=0xb6de9008, n=256) at matrixadd.c:154
#5 0x0000890a in main (argc=2, argv=0xbefff6a4) at main.c:23

Anything helps!

nouveau.h error while building/using GDev with Cmake

Hi

I was trying to follow the instructions mentioned in https://github.com/shinpei0208/gdev/blob/master/docs/README.cmake.md
I have provided the default cmake options.
However, when I am executing make -C release there is an error of :
fatal error: nouveau.h: No such file or directory
and then the compilation is getting terminated.
Any help to overcome this error would be much appreciated. Thank you. The details of make -C release is provided below:
make[1]: Entering directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
make[2]: Entering directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
Scanning dependencies of target gdev
make[2]: Leaving directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
make[2]: Entering directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
[ 0%] Building C object lib/CMakeFiles/gdev.dir/user/gdev/gdev_lib.c.o
[ 1%] Building C object lib/CMakeFiles/gdev.dir//common/gdev_api.c.o
[ 2%] Building C object lib/CMakeFiles/gdev.dir/
/common/gdev_device.c.o
[ 3%] Building C object lib/CMakeFiles/gdev.dir//common/gdev_nvidia.c.o
[ 3%] Building C object lib/CMakeFiles/gdev.dir/
/common/gdev_nvidia_compute.c.o
[ 4%] Building C object lib/CMakeFiles/gdev.dir//common/gdev_nvidia_fifo.c.o
[ 5%] Building C object lib/CMakeFiles/gdev.dir/
/common/gdev_nvidia_mem.c.o
[ 6%] Building C object lib/CMakeFiles/gdev.dir//common/gdev_nvidia_nvc0.c.o
[ 6%] Building C object lib/CMakeFiles/gdev.dir/
/common/gdev_nvidia_nve4.c.o
[ 7%] Building C object lib/CMakeFiles/gdev.dir//common/gdev_nvidia_shm.c.o
[ 8%] Building C object lib/CMakeFiles/gdev.dir/
/common/gdev_sched.c.o
[ 9%] Building C object lib/CMakeFiles/gdev.dir/user/nouveau/libnouveau.c.o
[ 9%] Building C object lib/CMakeFiles/gdev.dir/user/nouveau/libnouveau_ib.c.o
[ 10%] Building C object lib/CMakeFiles/gdev.dir/user/nouveau/nouveau_gdev.c.o
/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/lib/user/nouveau/nouveau_gdev.c:35:21: fatal error: nouveau.h: No such file or directory
compilation terminated.
lib/CMakeFiles/gdev.dir/build.make:374: recipe for target 'lib/CMakeFiles/gdev.dir/user/nouveau/nouveau_gdev.c.o' failed
make[2]: *** [lib/CMakeFiles/gdev.dir/user/nouveau/nouveau_gdev.c.o] Error 1
make[2]: Leaving directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
CMakeFiles/Makefile2:179: recipe for target 'lib/CMakeFiles/gdev.dir/all' failed
make[1]: *** [lib/CMakeFiles/gdev.dir/all] Error 2
make[1]: Leaving directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
make: Leaving directory '/home/duttasankha/Desktop/SANKHA_ALL_FILES/RESEARCH_WORK/GDEV_TOP_DIR/gdev-master/release'

memcpy program failed in creating cuCtxCreate

Hi.. I have installed the gdev and kcuda in my system. I am using cuda in kernel space with nouveau driver. But when I am executing the test program memcpy it showing null deference error . I debugged it and found that gdev pointer is null inside "gdev_raw_dev_open" function in the file gdev_drv_nvdia.c . i.e &gdev_vds[minor] returned null. any help please??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.