[Intel-gfx] [PATCH] drm/i915: Initialise breadcrumb lists on the virtual engine

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Tue Oct 1 10:42:49 UTC 2019


On 01/10/2019 11:35, Chris Wilson wrote:
> With deferring the breadcrumb signalling to the virtual engine (thanks
> preempt-to-busy) we need to make sure the lists and irq-worker are ready
> to send a signal.
> 
> [41958.710544] BUG: kernel NULL pointer dereference, address: 0000000000000000
> [41958.710553] #PF: supervisor write access in kernel mode
> [41958.710556] #PF: error_code(0x0002) - not-present page
> [41958.710558] PGD 0 P4D 0
> [41958.710562] Oops: 0002 [#1] SMP
> [41958.710565] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G     U            5.3.0+ #207
> [41958.710568] Hardware name: Intel Corporation NUC7i5BNK/NUC7i5BNB, BIOS BNKBL357.86A.0052.2017.0918.1346 09/18/2017
> [41958.710602] RIP: 0010:i915_request_enable_breadcrumb+0xe1/0x130 [i915]
> [41958.710605] Code: 8b 44 24 30 48 89 41 08 48 89 08 48 8b 85 98 01 00 00 48 8d 8d 90 01 00 00 48 89 95 98 01 00 00 49 89 4c 24 28 49 89 44 24 30 <48> 89 10 f0 80 4b 30 10 c6 85 88 01 00 00 00 e9 1a ff ff ff 48 83
> [41958.710609] RSP: 0018:ffffc90000003de0 EFLAGS: 00010046
> [41958.710612] RAX: 0000000000000000 RBX: ffff888735424480 RCX: ffff8887cddb2190
> [41958.710614] RDX: ffff8887cddb3570 RSI: ffff888850362190 RDI: ffff8887cddb2188
> [41958.710617] RBP: ffff8887cddb2000 R08: ffff8888503624a8 R09: 0000000000000100
> [41958.710619] R10: 0000000000000001 R11: 0000000000000000 R12: ffff8887cddb3548
> [41958.710622] R13: 0000000000000000 R14: 0000000000000046 R15: ffff888850362070
> [41958.710625] FS:  0000000000000000(0000) GS:ffff88885ea00000(0000) knlGS:0000000000000000
> [41958.710628] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [41958.710630] CR2: 0000000000000000 CR3: 0000000002c09002 CR4: 00000000001606f0
> [41958.710633] Call Trace:
> [41958.710636]  <IRQ>
> [41958.710668]  __i915_request_submit+0x12b/0x160 [i915]
> [41958.710693]  virtual_submit_request+0x67/0x120 [i915]
> [41958.710720]  __unwind_incomplete_requests+0x131/0x170 [i915]
> [41958.710744]  execlists_dequeue+0xb40/0xe00 [i915]
> [41958.710771]  execlists_submission_tasklet+0x10f/0x150 [i915]
> [41958.710776]  tasklet_action_common.isra.17+0x41/0xa0
> [41958.710781]  __do_softirq+0xc8/0x221
> [41958.710785]  irq_exit+0xa6/0xb0
> [41958.710788]  smp_apic_timer_interrupt+0x4d/0x80
> [41958.710791]  apic_timer_interrupt+0xf/0x20
> [41958.710794]  </IRQ>
> 
> Fixes: cb2377a919bb ("drm/i915: Fixup preempt-to-busy vs reset of a virtual request")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
> Include the GPF trace from using the NULL lists
> ---
>   drivers/gpu/drm/i915/gt/intel_lrc.c | 1 +
>   1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index 3566ec8ad33a..48a1ef4c3572 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -4195,6 +4195,7 @@ intel_execlists_create_virtual(struct i915_gem_context *ctx,
>   	snprintf(ve->base.name, sizeof(ve->base.name), "virtual");
>   
>   	intel_engine_init_active(&ve->base, ENGINE_VIRTUAL);
> +	intel_engine_init_breadcrumbs(&ve->base);
>   
>   	intel_engine_init_execlists(&ve->base);
>   
> 

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Regards,

Tvrtko


More information about the Intel-gfx mailing list