Displaying 3 results from an estimated 3 matches for "nvif_event_keep".
2024 Jan 29
1
[PATCH] nouveau: offload fence uevents work to workqueue
...repc)
+static void
+nouveau_fence_uevent_work(struct work_struct *work)
{
- struct nouveau_fence_chan *fctx = container_of(event, typeof(*fctx), event);
+ struct nouveau_fence_chan *fctx = container_of(work, struct nouveau_fence_chan,
+ uevent_work);
unsigned long flags;
- int ret = NVIF_EVENT_KEEP;
+ int drop = 0;
spin_lock_irqsave(&fctx->lock, flags);
if (!list_empty(&fctx->pending)) {
@@ -160,11 +162,20 @@ nouveau_fence_wait_uevent_handler(struct nvif_event *event, void *repv, u32 repc
fence = list_entry(fctx->pending.next, typeof(*fence), head);
chan = rcu_der...
2024 Feb 22
1
[PATCH] drm/nouveau: use dedicated wq for fence uevents work
...-174,7 +174,7 @@ static int
nouveau_fence_wait_uevent_handler(struct nvif_event *event, void *repv, u32 repc)
{
struct nouveau_fence_chan *fctx = container_of(event, typeof(*fctx), event);
- schedule_work(&fctx->uevent_work);
+ queue_work(fctx->wq, &fctx->uevent_work);
return NVIF_EVENT_KEEP;
}
@@ -194,6 +194,7 @@ nouveau_fence_context_new(struct nouveau_channel *chan, struct nouveau_fence_cha
INIT_LIST_HEAD(&fctx->pending);
spin_lock_init(&fctx->lock);
fctx->context = chan->drm->runl[chan->runlist].context_base + chan->chid;
+ fctx->wq = chan-&...
2024 Feb 23
1
[PATCH] drm/nouveau: use dedicated wq for fence uevents work
..._event *event, void *repv, u32 repc)
> > {
> > struct nouveau_fence_chan *fctx = container_of(event, typeof(*fctx), event);
> > - schedule_work(&fctx->uevent_work);
> > + queue_work(fctx->wq, &fctx->uevent_work);
> > return NVIF_EVENT_KEEP;
> > }
> >
> > @@ -194,6 +194,7 @@ nouveau_fence_context_new(struct nouveau_channel *chan, struct nouveau_fence_cha
> > INIT_LIST_HEAD(&fctx->pending);
> > spin_lock_init(&fctx->lock);
> > fctx->context = chan->drm->...