search for: nouveau_event_trigger

Displaying 14 results from an estimated 14 matches for "nouveau_event_trigger".

2013 Jul 23
4
[PATCH 1/3] drm/nouveau: fix vblank interrupt being called before event is setup
...b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c index 7e3875d..35e526b 100644 --- a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c +++ b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c @@ -1266,13 +1266,15 @@ nv50_disp_intr(struct nouveau_subdev *subdev) } if (intr1 & 0x00000004) { - nouveau_event_trigger(priv->base.vblank, 0); + if (priv->base.vblank) + nouveau_event_trigger(priv->base.vblank, 0); nv_wr32(priv, 0x610024, 0x00000004); intr1 &= ~0x00000004; } if (intr1 & 0x00000008) { - nouveau_event_trigger(priv->base.vblank, 1); + if (priv->base.vblank) + n...
2013 Jul 30
0
[PATCH 1/3] drm/nouveau: fix vblank interrupt being called before event is setup
...e3875d..35e526b 100644 > --- a/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c > +++ b/drivers/gpu/drm/nouveau/core/engine/disp/nv50.c > @@ -1266,13 +1266,15 @@ nv50_disp_intr(struct nouveau_subdev *subdev) > } > > if (intr1 & 0x00000004) { > - nouveau_event_trigger(priv->base.vblank, 0); > + if (priv->base.vblank) > + nouveau_event_trigger(priv->base.vblank, 0); > nv_wr32(priv, 0x610024, 0x00000004); > intr1 &= ~0x00000004; > } > > if (intr1 &...
2013 Aug 27
0
[PATCH 6/9] drm/nouveau: Convert event handler list to RCU
...-------------------- swapper/7/0 is trying to acquire lock: (&(&dev->vblank_time_lock)->rlock){-.....}, at: [<ffffffffa0086269>] drm_handle_vblank+0x69/0x400 [drm] but task is already holding lock: (&(&event->lock)->rlock){-.....}, at: [<ffffffffa0101dbd>] nouveau_event_trigger+0x4d/0xd0 [nouveau] which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&(&event->lock)->rlock){-.....}: [<ffffffff810b6d62>] lock_acquire+0x92/0x1f0 [<ffffffff8175e926>] _raw_spin_lock_irqsave+0x46/0x...
2013 Aug 12
2
[PATCH] drm/nouveau: fix vblank deadlock
...gt;head, &event->index[index].list); + if (event->toggle_lock) + spin_lock(event->toggle_lock); + nouveau_event_enable_locked(event, index); + if (event->toggle_lock) + spin_unlock(event->toggle_lock); spin_unlock_irqrestore(&event->lock, flags); } @@ -68,6 +89,7 @@ nouveau_event_trigger(struct nouveau_event *event, int index) { struct nouveau_eventh *handler, *temp; unsigned long flags; + int refs = 0; if (index >= event->index_nr) return; @@ -75,9 +97,17 @@ nouveau_event_trigger(struct nouveau_event *event, int index) spin_lock_irqsave(&event->lock, fla...
2013 Aug 27
11
[PATCH 0/9] drm/nouveau: Cleanup event/handler design
This series was originally motivated by a deadlock, introduced in commit 1d7c71a3e2f77336df536855b0efd2dc5bdeb41b 'drm/nouveau/disp: port vblank handling to event interface', due to inverted lock order between nouveau_drm_vblank_enable() and nouveau_drm_vblank_handler() (the complete lockdep report is included in the patch 4/5 changelog). Because this series fixes the vblank event
2013 Aug 19
0
[PATCH] drm/nouveau: fix vblank deadlock
...gt; + if (event->toggle_lock) > + spin_lock(event->toggle_lock); > + nouveau_event_enable_locked(event, index); > + if (event->toggle_lock) > + spin_unlock(event->toggle_lock); > spin_unlock_irqrestore(&event->lock, flags); > } > > @@ -68,6 +89,7 @@ nouveau_event_trigger(struct nouveau_event *event, int index) > { > struct nouveau_eventh *handler, *temp; > unsigned long flags; > + int refs = 0; > > if (index >= event->index_nr) > return; > @@ -75,9 +97,17 @@ nouveau_event_trigger(struct nouveau_event *event, int index) &...
2013 Sep 08
1
[PATCH] drm/nv10/plane: add plane support for nv10-nv40
...04.c +++ b/drivers/gpu/drm/nouveau/core/engine/disp/nv04.c @@ -59,6 +59,7 @@ nv04_disp_intr(struct nouveau_subdev *subdev) struct nv04_disp_priv *priv = (void *)subdev; u32 crtc0 = nv_rd32(priv, 0x600100); u32 crtc1 = nv_rd32(priv, 0x602100); + u32 pvideo; if (crtc0 & 0x00000001) { nouveau_event_trigger(priv->base.vblank, 0); @@ -69,6 +70,14 @@ nv04_disp_intr(struct nouveau_subdev *subdev) nouveau_event_trigger(priv->base.vblank, 1); nv_wr32(priv, 0x602100, 0x00000001); } + + if (nv_device(priv)->chipset >= 0x10 && + nv_device(priv)->chipset <= 0x40) { + pvid...
2013 Mar 23
1
[bisected][3.9.0-rc3] NULL ptr dereference from nv50_disp_intr()
...Stack: > ffffffffa0159d8a 0000000000000082 ffff88029f6e5820 0000000000000001 > ffff88029f71aa00 0000000000000000 0000000000000000 0000000004000000 > 0000000004000000 ffff8802afcc3e38 ffffffffa01843b5 ffff8802afcc3df8 > Call Trace: > <IRQ> > [<ffffffffa0159d8a>] ? nouveau_event_trigger+0xaa/0xe0 [nouveau] > [<ffffffffa01843b5>] nv50_disp_intr+0xc5/0x200 [nouveau] > [<ffffffff816fbacc>] ? _raw_spin_unlock_irqrestore+0x2c/0x50 > [<ffffffff816ff98d>] ? notifier_call_chain+0x4d/0x70 > [<ffffffffa017a105>] nouveau_mc_intr+0xb5/0x110 [nouveau] &g...
2013 Aug 27
0
[PATCH 5/9] drm/nouveau: Add install/remove semantics for event handlers
...save(&event->lock, flags); if (!__test_and_set_bit(NVKM_EVENT_ENABLE, &handler->flags)) { - list_add(&handler->head, &event->index[index].list); if (!event->index[index].refs++) { if (event->enable) event->enable(event, index); @@ -105,8 +155,9 @@ nouveau_event_trigger(struct nouveau_event *event, int index) spin_lock_irqsave(&event->lock, flags); list_for_each_entry_safe(handler, temp, &event->index[index].list, head) { - if (handler->func(handler, index) == NVKM_EVENT_DROP) { - nouveau_event_put_locked(event, index, handler); + if (te...
2014 May 14
0
[RFC PATCH v1 07/16] drm/nouveau: rework to new fence interface
...ore/event.c b/drivers/gpu/drm/nouveau/core/core/event.c index 3f3c76581a9e..167408b72099 100644 --- a/drivers/gpu/drm/nouveau/core/core/event.c +++ b/drivers/gpu/drm/nouveau/core/core/event.c @@ -118,14 +118,14 @@ nouveau_event_ref(struct nouveau_eventh *handler, struct nouveau_eventh **ref) void nouveau_event_trigger(struct nouveau_event *event, int index) { - struct nouveau_eventh *handler; + struct nouveau_eventh *handler, *next; unsigned long flags; if (WARN_ON(index >= event->index_nr)) return; spin_lock_irqsave(&event->list_lock, flags); - list_for_each_entry(handler, &event-...
2014 Mar 28
48
[Bug 76732] New: Kworker using 100% CPU
https://bugs.freedesktop.org/show_bug.cgi?id=76732 Priority: medium Bug ID: 76732 Assignee: nouveau at lists.freedesktop.org Summary: Kworker using 100% CPU QA Contact: xorg-team at lists.x.org Severity: normal Classification: Unclassified OS: Linux (All) Reporter: patrick.clara at gmail.com
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