[Intel-gfx] [PATCH] drm/i915: Do not poison i915_request.link on removal
Chris Wilson
chris at chris-wilson.co.uk
Fri Mar 6 14:01:15 UTC 2020
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>
---
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