[Intel-gfx] [PATCH] drm/i915: Do not poison i915_request.link on removal
Mika Kuoppala
mika.kuoppala at linux.intel.com
Fri Mar 6 15:04:24 UTC 2020
Chris Wilson <chris at chris-wilson.co.uk> 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 <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list