search for: nouveau_fence_work

Displaying 19 results from an estimated 19 matches for "nouveau_fence_work".

2014 May 14
0
[RFC PATCH v1 07/16] drm/nouveau: rework to new fence interface
...t;object; + + fctx->lock = &pfifo->uevent->list_lock; INIT_LIST_HEAD(&fctx->flip); INIT_LIST_HEAD(&fctx->pending); - spin_lock_init(&fctx->lock); + + snprintf(fctx->name, sizeof(fctx->name) - 1, "nouveau channel %i", fifo->chid); } +struct nouveau_fence_work { + struct work_struct work; + struct fence_cb cb; + void (*func)(void *); + void *data; +}; + static void nouveau_fence_work_handler(struct work_struct *kwork) { - struct fence_work *work = container_of(kwork, typeof(*work), base); + struct nouveau_fence_work *work = container_of(kwork, typeof(...
2015 Mar 29
1
[PATCH] nouveau: synchronize "scratch runout" destruction with the command stream
...; - } while (nv->scratch.nr_runout); - FREE(nv->scratch.runout); + struct bos *b = MALLOC(sizeof(*b)); + b->arr = nv->scratch.runout; + b->nr = nv->scratch.nr_runout; + + struct nouveau_fence *fence = NULL; + nouveau_fence_new(nv->screen, &fence, TRUE); + nouveau_fence_work(fence, unref_bos, b); + nv->scratch.end = 0; nv->scratch.runout = NULL; + nv->scratch.nr_runout = 0; } /* Allocate an extra bo if we can't fit everything we need simultaneously. -- 2.1.0
2014 May 14
0
[RFC PATCH v1 12/16] drm/ttm: flip the switch, and convert to dma_fence
...vers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c index 9a9e04985826..b1aba6f79605 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fence.c +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c @@ -139,17 +139,18 @@ static bool nouveau_fence_is_signaled(struct fence *f) } void -nouveau_fence_work(struct nouveau_fence *fence, +nouveau_fence_work(struct fence *fence, void (*func)(void *), void *data) { struct nouveau_fence_work *work; - if (fence_is_signaled(&fence->base)) + if (fence_is_signaled(fence)) goto err; work = kmalloc(sizeof(*work), GFP_KERNEL); if (!work...
2015 Dec 01
3
[Bug 93197] New: Warsow 2.0 crashes in nouveau_fence_trigger_work
...?? () #7 0x0000000000405bc9 in ?? () #8 0x00007fffd72eb304 in ?? () from ./libs/libref_gl_x86_64.so #9 0x00007ffff78bc6aa in start_thread (arg=0x7fffe704a700) at pthread_create.c:333 #10 0x00007ffff70e1eed in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109 (gdb) print work $1 = (struct nouveau_fence_work *) 0x7fffd815fc50 (gdb) print work->list $2 = {prev = 0x0, next = 0x7fffd8121510} (gdb) list 52 { 53 struct nouveau_fence_work *work, *tmp; 54 55 LIST_FOR_EACH_ENTRY_SAFE(work, tmp, &fence->work, list) { 56 work->func(work->data); 57 LIST_DEL(&a...
2014 Jul 09
0
[PATCH 13/17] drm/ttm: flip the switch, and convert to dma_fence
...vers/gpu/drm/nouveau/nouveau_fence.c b/drivers/gpu/drm/nouveau/nouveau_fence.c index d24f8ce4341a..9f92ad37637d 100644 --- a/drivers/gpu/drm/nouveau/nouveau_fence.c +++ b/drivers/gpu/drm/nouveau/nouveau_fence.c @@ -139,17 +139,18 @@ static bool nouveau_fence_is_signaled(struct fence *f) } void -nouveau_fence_work(struct nouveau_fence *fence, +nouveau_fence_work(struct fence *fence, void (*func)(void *), void *data) { struct nouveau_fence_work *work; - if (fence_is_signaled(&fence->base)) + if (fence_is_signaled(fence)) goto err; work = kmalloc(sizeof(*work), GFP_KERNEL); if (!work...
2017 Nov 10
2
GP10B regression
Hello everyone, it seems that GP10B support has regressed recently. With linux-next, I need to modify device/base.c to set .mmu = gp10b_mmu_new for GP10B (makes sense - I guess this was left as gf100_mmu_new as a typo) to probe. After that, running a trivial testcase (running a NOP method in 3D class) fails with [ 110.084649] nouveau 17000000.gpu: fifo: read fault at 0000011000 engine 06
2014 Jun 16
2
[PATCH 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...uveau_fence **fence, boolean emit) { *fence = CALLOC_STRUCT(nouveau_fence); if (!*fence) return FALSE; - (*fence)->screen = screen; + (*fence)->mgr = mgr; (*fence)->ref = 1; LIST_INITHEAD(&(*fence)->work); @@ -83,7 +83,7 @@ nouveau_fence_work(struct nouveau_fence *fence, void nouveau_fence_emit(struct nouveau_fence *fence) { - struct nouveau_screen *screen = fence->screen; + struct nouveau_fence_mgr *mgr = fence->mgr; assert(fence->state == NOUVEAU_FENCE_STATE_AVAILABLE); @@ -92,14 +92,14 @@ nouveau_fence_e...
2017 Nov 11
0
GP10B regression
Bisection status report: The latest commit I have gotten to work is 10842ba074e9 drm/nouveau: remove unused nouveau_fence_work() i.e. the first bad commit is d7722134b825 drm/nouveau: switch over to new memory and vmm interfaces Even with the first one some patches/hacks are needed: - in mmu/gp10b.c, in the constructor we need to select the GM200 path - the GP100 path seems to not to work - as mentioned in the first...
2013 Jul 29
0
[PATCH] drm/nouveau: protect vm refcount with mutex
...[<ffffffffa02d5cdb>] ? nouveau_mm_free+0x85/0x116 [nouveau] [<ffffffffa02f57c9>] nouveau_vm_put+0x9a/0xb0 [nouveau] [<ffffffffa033462d>] ? nouveau_gem_info+0x9d/0x9d [nouveau] [<ffffffffa0334646>] nouveau_gem_object_delete+0x19/0x28 [nouveau] [<ffffffffa032fc90>] nouveau_fence_work+0xc9/0x102 [nouveau] [<ffffffffa0334d59>] nouveau_gem_object_close+0x103/0x182 [nouveau] [<ffffffffa01d8bcd>] drm_gem_handle_delete+0xcc/0x153 [drm] [<ffffffffa01d8fc5>] drm_gem_close_ioctl+0x23/0x25 [drm] [<ffffffffa01d6f75>] drm_ioctl+0x4cc/0x612 [drm] [<ffffffff81...
2014 Jun 17
2
[PATCH try 2 1/2] gallium/nouveau: decouple nouveau_fence implementation from screen
...struct nouveau_fence **fence, boolean emit) { *fence = CALLOC_STRUCT(nouveau_fence); if (!*fence) return FALSE; - (*fence)->screen = screen; + (*fence)->mgr = mgr; (*fence)->ref = 1; LIST_INITHEAD(&(*fence)->work); @@ -83,7 +83,7 @@ nouveau_fence_work(struct nouveau_fence *fence, void nouveau_fence_emit(struct nouveau_fence *fence) { - struct nouveau_screen *screen = fence->screen; + struct nouveau_fence_mgr *mgr = fence->mgr; assert(fence->state == NOUVEAU_FENCE_STATE_AVAILABLE); @@ -92,14 +92,14 @@ nouveau_fence_emit(st...
2014 May 14
17
[RFC PATCH v1 00/16] Convert all ttm drivers to use the new reservation interface
This series depends on the previously posted reservation api patches. 2 of them are not yet in for-next-fences branch of git://git.linaro.org/people/sumit.semwal/linux-3.x.git The missing patches are still in my vmwgfx_wip branch at git://people.freedesktop.org/~mlankhorst/linux All ttm drivers are converted to the fence api, fence_lock is removed and rcu is used in its place. qxl is the first
2014 Jul 31
19
[PATCH 01/19] fence: add debugging lines to fence_is_signaled for the callback
fence_is_signaled callback should support being run in atomic context, but not in irq context. Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com> --- include/linux/fence.h | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/include/linux/fence.h b/include/linux/fence.h index d174585b874b..c1a4519ba2f5 100644 ---
2014 Jul 09
22
[PATCH 00/17] Convert TTM to the new fence interface.
This series applies on top of the driver-core-next branch of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git Before converting ttm to the new fence interface I had to fix some drivers to require a reservation before poking with fence_obj. After flipping the switch RCU becomes available instead, and the extra reservations can be dropped again. :-) I've done at least basic
2014 Jun 17
0
[PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...fence, boolean emit) diff --git a/src/gallium/drivers/nouveau/nouveau_fence.h b/src/gallium/drivers/nouveau/nouveau_fence.h index cb44dd3..cdc60ed 100644 --- a/src/gallium/drivers/nouveau/nouveau_fence.h +++ b/src/gallium/drivers/nouveau/nouveau_fence.h @@ -32,10 +32,10 @@ struct nouveau_fence_work { }; struct nouveau_fence { + int32_t ref; struct nouveau_fence *next; struct nouveau_fence_mgr *mgr; int state; - int ref; uint32_t sequence; struct list_head work; }; @@ -55,10 +55,10 @@ static INLINE void nouveau_fence_ref(struct nouveau_fence *fence, struct nouveau...
2014 Jun 21
3
[Mesa-dev] [PATCH try 2 2/2] gallium/nouveau: move pushbuf and fences to context
...boolean emit) > diff --git a/src/gallium/drivers/nouveau/nouveau_fence.h b/src/gallium/drivers/nouveau/nouveau_fence.h > index cb44dd3..cdc60ed 100644 > --- a/src/gallium/drivers/nouveau/nouveau_fence.h > +++ b/src/gallium/drivers/nouveau/nouveau_fence.h > @@ -32,10 +32,10 @@ struct nouveau_fence_work { > }; > > struct nouveau_fence { > + int32_t ref; > struct nouveau_fence *next; > struct nouveau_fence_mgr *mgr; > int state; > - int ref; > uint32_t sequence; > struct list_head work; > }; > @@ -55,10 +55,10 @@ static INLINE void >...
2014 Jul 22
3
[PATCH 09/17] drm/radeon: use common fence implementation for fences
On 9 July 2014 22:29, Maarten Lankhorst <maarten.lankhorst at canonical.com> wrote: > Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com> > --- > drivers/gpu/drm/radeon/radeon.h | 15 +- > drivers/gpu/drm/radeon/radeon_device.c | 60 ++++++++- > drivers/gpu/drm/radeon/radeon_fence.c | 223 ++++++++++++++++++++++++++------ > 3 files
2017 Nov 21
2
GP10B regression
...KM_VMM_PAGE_SxHx }, {} } on top of next-20171121 works at least for a simple test. Mikko On 11/11/2017 03:02 PM, Mikko Perttunen wrote: > Bisection status report: > > The latest commit I have gotten to work is > > 10842ba074e9 drm/nouveau: remove unused nouveau_fence_work() > > i.e. the first bad commit is > > d7722134b825 drm/nouveau: switch over to new memory and vmm interfaces > > Even with the first one some patches/hacks are needed: > > - in mmu/gp10b.c, in the constructor we need to select the GM200 path - > the GP100 path seems...
2014 Sep 26
14
[RFC] Explicit synchronization for Nouveau
Hi guys, I'd like to start a new thread about explicit fence synchronization. This time with a Nouveau twist. :-) First, let me define what I understand by implicit/explicit sync: Implicit synchronization * Fences are attached to buffers * Kernel manages fences automatically based on buffer read/write access Explicit synchronization * Fences are passed around independently * Kernel takes
2016 Jun 05
0
[RFC PATCH] nouveau: add locking
...m2mf_transfer_rect(nv50, &tx->rect[0], &tx->rect[1], tx->nblocksx, tx->nblocksy); @@ -362,6 +367,7 @@ nv50_miptree_transfer_unmap(struct pipe_context *pctx, /* Allow the copies above to finish executing before freeing the source */ nouveau_fence_work(nv50->screen->base.fence.current, nouveau_fence_unref_bo, tx->rect[1].bo); + pipe_mutex_unlock(nv50->screen->base.push_mutex); } else { nouveau_bo_ref(NULL, &tx->rect[1].bo); } diff --git a/src/gallium/drivers/nouveau/nv50/nv50_vbo...