Chris Wilson <[email protected]> writes:

> Do not poison the timeline link on the i915_request to allow both
> forward/backward list traversal under RCU.
>
> [ 9759.139229] RIP: 0010:active_request+0x2a/0x90 [i915]
> [ 9759.139240] Code: 41 56 41 55 41 54 55 48 89 fd 53 48 89 f3 48 83 c5 60 e8 
> 49 de dc e0 48 8b 83 e8 01 00 00 48 39 c5 74 12 48 8d 90 20 fe ff ff <48> 8b 
> 80 50 fe ff ff a8 01 74 11 e8 66 20 dd e0 48 89 d8 5b 5d 41
> [ 9759.139251] RSP: 0018:ffffc9000014ce80 EFLAGS: 00010012
> [ 9759.139260] RAX: dead000000000122 RBX: ffff888817cac040 RCX: 
> 0000000000022000
> [ 9759.139267] RDX: deacffffffffff42 RSI: ffff888817cac040 RDI: 
> ffff888851fee900
> [ 9759.139275] RBP: ffff888851fee960 R08: 000000000000001a R09: 
> ffffffffa04702e0
> [ 9759.139282] R10: ffffffff82187ea0 R11: 0000000000000002 R12: 
> 0000000000000004
> [ 9759.139289] R13: ffffffffa04d5179 R14: ffff8887f994ae40 R15: 
> ffff888857b9a068
> [ 9759.139296] FS:  0000000000000000(0000) GS:ffff88885ed80000(0000) 
> knlGS:0000000000000000
> [ 9759.139304] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 9759.139311] CR2: 00007fff5bdec000 CR3: 00000008534fe001 CR4: 
> 00000000001606e0
> [ 9759.139318] Call Trace:
> [ 9759.139325]  <IRQ>
> [ 9759.139389]  execlists_reset+0x14d/0x310 [i915]
> [ 9759.139400]  ? _raw_spin_unlock_irqrestore+0xf/0x30
> [ 9759.139445]  ? fwtable_read32+0x90/0x230 [i915]
> [ 9759.139499]  execlists_submission_tasklet+0xf6/0x150 [i915]
> [ 9759.139508]  tasklet_action_common.isra.17+0x32/0xa0
> [ 9759.139516]  __do_softirq+0x114/0x3dc
> [ 9759.139525]  ? handle_irq_event_percpu+0x59/0x70
> [ 9759.139533]  irq_exit+0xa1/0xc0
> [ 9759.139540]  do_IRQ+0x76/0x150
> [ 9759.139547]  common_interrupt+0xf/0xf
> [ 9759.139554]  </IRQ>
>
> Signed-off-by: Chris Wilson <[email protected]>
> Cc: Mika Kuoppala <[email protected]>

Reviewed-by: Mika Kuoppala <[email protected]>

> ---
>  drivers/gpu/drm/i915/i915_request.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_request.c 
> b/drivers/gpu/drm/i915/i915_request.c
> index 66efd16c4850..5de3989b6c4f 100644
> --- a/drivers/gpu/drm/i915/i915_request.c
> +++ b/drivers/gpu/drm/i915/i915_request.c
> @@ -290,7 +290,7 @@ bool i915_request_retire(struct i915_request *rq)
>       spin_unlock_irq(&rq->lock);
>  
>       remove_from_client(rq);
> -     list_del_rcu(&rq->link);
> +     __list_del_entry(&rq->link); /* poison neither prev/next (RCU walks) */
>  
>       intel_context_exit(rq->context);
>       intel_context_unpin(rq->context);
> -- 
> 2.25.1
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to