• Chris Wilson's avatar
    drm/i915: Initialise breadcrumb lists on the virtual engine · f8db4d05
    Chris Wilson authored
    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: cb2377a9 ("drm/i915: Fixup preempt-to-busy vs reset of a virtual request")
    Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
    Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191001103518.9113-1-chris@chris-wilson.co.uk
    f8db4d05
intel_lrc.c 123 KB