From: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 14/27] drm/i915: Don't mark an execlists context-switch when idle
Date: Thu, 20 Apr 2017 11:53:19 +0300 [thread overview]
Message-ID: <1492678399.17161.4.camel@linux.intel.com> (raw)
In-Reply-To: <20170419094143.16922-15-chris@chris-wilson.co.uk>
On ke, 2017-04-19 at 10:41 +0100, Chris Wilson wrote:
> If we *know* that the engine is idle, i.e. we have not more contexts in
> lift, we can skip any spurious CSB idle interrupts. These spurious
in flight?
> interrupts seem to arrive long after we assert that the engines are
> completely idle, triggering later assertions:
>
> [ 178.896646] intel_engine_is_idle(bcs): interrupt not handled, irq_posted=2
> [ 178.896655] ------------[ cut here ]------------
> [ 178.896658] kernel BUG at drivers/gpu/drm/i915/intel_engine_cs.c:226!
> [ 178.896661] invalid opcode: 0000 [#1] SMP
> [ 178.896663] Modules linked in: i915(E) x86_pkg_temp_thermal(E) crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) ghash_clmulni_intel(E) nls_ascii(E) nls_cp437(E) vfat(E) fat(E) intel_gtt(E) i2c_algo_bit(E) drm_kms_helper(E) syscopyarea(E) sysfillrect(E) sysimgblt(E) fb_sys_fops(E) aesni_intel(E) prime_numbers(E) evdev(E) aes_x86_64(E) drm(E) crypto_simd(E) cryptd(E) glue_helper(E) mei_me(E) mei(E) lpc_ich(E) efivars(E) mfd_core(E) battery(E) video(E) acpi_pad(E) button(E) tpm_tis(E) tpm_tis_core(E) tpm(E) autofs4(E) i2c_i801(E) fan(E) thermal(E) i2c_designware_platform(E) i2c_designware_core(E)
> [ 178.896694] CPU: 1 PID: 522 Comm: gem_exec_whispe Tainted: G E 4.11.0-rc5+ #14
> [ 178.896702] task: ffff88040aba8d40 task.stack: ffffc900003f0000
> [ 178.896722] RIP: 0010:intel_engine_init_global_seqno+0x1db/0x1f0 [i915]
> [ 178.896725] RSP: 0018:ffffc900003f3ab0 EFLAGS: 00010246
> [ 178.896728] RAX: 0000000000000000 RBX: ffff88040af54000 RCX: 0000000000000000
> [ 178.896731] RDX: ffff88041ec933e0 RSI: ffff88041ec8cc48 RDI: ffff88041ec8cc48
> [ 178.896734] RBP: ffffc900003f3ac8 R08: 0000000000000000 R09: 000000000000047d
> [ 178.896736] R10: 0000000000000040 R11: ffff88040b344f80 R12: 0000000000000000
> [ 178.896739] R13: ffff88040bce0000 R14: ffff88040bce52d8 R15: ffff88040bce0000
> [ 178.896742] FS: 00007f2cccc2d8c0(0000) GS:ffff88041ec80000(0000) knlGS:0000000000000000
> [ 178.896746] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 178.896749] CR2: 00007f41ddd8f000 CR3: 000000040bb03000 CR4: 00000000001406e0
> [ 178.896752] Call Trace:
> [ 178.896768] reset_all_global_seqno.part.33+0x4e/0xd0 [i915]
> [ 178.896782] i915_gem_request_alloc+0x304/0x330 [i915]
> [ 178.896795] i915_gem_do_execbuffer+0x8a1/0x17d0 [i915]
> [ 178.896799] ? remove_wait_queue+0x48/0x50
> [ 178.896812] ? i915_wait_request+0x300/0x590 [i915]
> [ 178.896816] ? wake_up_q+0x70/0x70
> [ 178.896819] ? refcount_dec_and_test+0x11/0x20
> [ 178.896823] ? reservation_object_add_excl_fence+0xa5/0x100
> [ 178.896835] i915_gem_execbuffer2+0xab/0x1f0 [i915]
> [ 178.896844] drm_ioctl+0x1e6/0x460 [drm]
> [ 178.896858] ? i915_gem_execbuffer+0x260/0x260 [i915]
> [ 178.896862] ? dput+0xcf/0x250
> [ 178.896866] ? full_proxy_release+0x66/0x80
> [ 178.896869] ? mntput+0x1f/0x30
> [ 178.896872] do_vfs_ioctl+0x8f/0x5b0
> [ 178.896875] ? ____fput+0x9/0x10
> [ 178.896878] ? task_work_run+0x80/0xa0
> [ 178.896881] SyS_ioctl+0x3c/0x70
> [ 178.896885] entry_SYSCALL_64_fastpath+0x17/0x98
> [ 178.896888] RIP: 0033:0x7f2ccb455ca7
> [ 178.896890] RSP: 002b:00007ffcabec72d8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
> [ 178.896894] RAX: ffffffffffffffda RBX: 000055f897a44b90 RCX: 00007f2ccb455ca7
> [ 178.896897] RDX: 00007ffcabec74a0 RSI: 0000000040406469 RDI: 0000000000000003
> [ 178.896900] RBP: 00007f2ccb70a440 R08: 00007f2ccb70d0a4 R09: 0000000000000000
> [ 178.896903] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
> [ 178.896905] R13: 000055f89782d71a R14: 00007ffcabecf838 R15: 0000000000000003
> [ 178.896908] Code: 00 31 d2 4c 89 ef 8d 70 48 41 ff 95 f8 06 00 00 e9 68 fe ff ff be 0f 00 00 00 48 c7 c7 48 dc 37 a0 e8 fa 33 d6 e0 e9 0b ff ff ff <0f> 0b 0f 0b 0f 0b 0f 0b 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00
>
> On the other hand, by ignoring the interrupt do we risk running out of
> space in CSB ring? Testing for a few hours suggests not, i.e. that we
> only seem to get the odd delayed CSB idle notification.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Slap your Tested-by too.
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Even with that, I dislike the port_count macro.
Regards, Joonas
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2017-04-20 8:53 UTC|newest]
Thread overview: 95+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-19 9:41 Confluence of eb + timeline improvements Chris Wilson
2017-04-19 9:41 ` [PATCH 01/27] drm/i915/selftests: Allocate inode/file dynamically Chris Wilson
2017-04-20 7:42 ` Joonas Lahtinen
2017-04-19 9:41 ` [PATCH 02/27] drm/i915: Mark CPU cache as dirty on every transition for CPU writes Chris Wilson
2017-04-19 16:52 ` Dongwon Kim
2017-04-19 17:15 ` Chris Wilson
2017-04-19 17:46 ` Chris Wilson
2017-04-19 18:08 ` Chris Wilson
2017-04-19 18:13 ` Dongwon Kim
2017-04-19 18:26 ` Chris Wilson
2017-04-19 20:30 ` Dongwon Kim
2017-04-19 20:49 ` Dongwon Kim
2017-04-19 9:41 ` [PATCH 03/27] drm/i915: Mark up clflushes as belonging to an unordered timeline Chris Wilson
2017-04-19 9:41 ` [PATCH 04/27] drm/i915: Lift timeline ordering to await_dma_fence Chris Wilson
2017-04-19 9:41 ` [PATCH 05/27] drm/i915: Make ptr_unpack_bits() more function-like Chris Wilson
2017-04-19 9:41 ` [PATCH 06/27] drm/i915: Redefine ptr_pack_bits() and friends Chris Wilson
2017-04-19 9:41 ` [PATCH 07/27] drm/i915: Squash repeated awaits on the same fence Chris Wilson
2017-04-24 13:03 ` Tvrtko Ursulin
2017-04-24 13:19 ` Chris Wilson
2017-04-24 13:31 ` Chris Wilson
2017-04-26 10:20 ` Tvrtko Ursulin
2017-04-26 10:38 ` Chris Wilson
2017-04-26 10:54 ` Tvrtko Ursulin
2017-04-26 11:18 ` Chris Wilson
2017-04-26 12:13 ` Tvrtko Ursulin
2017-04-26 12:23 ` Chris Wilson
2017-04-26 14:36 ` Tvrtko Ursulin
2017-04-26 14:55 ` Chris Wilson
2017-04-26 15:04 ` Chris Wilson
2017-04-26 18:56 ` Chris Wilson
2017-04-26 22:22 ` Chris Wilson
2017-04-27 9:20 ` Tvrtko Ursulin
2017-04-27 9:47 ` Chris Wilson
2017-04-27 7:06 ` [PATCH v8] " Chris Wilson
2017-04-27 7:14 ` Chris Wilson
2017-04-27 9:50 ` Chris Wilson
2017-04-27 11:42 ` Chris Wilson
2017-04-27 11:48 ` [PATCH v9] " Chris Wilson
2017-04-27 16:47 ` Tvrtko Ursulin
2017-04-27 17:25 ` Chris Wilson
2017-04-27 20:34 ` Chris Wilson
2017-04-27 20:53 ` Chris Wilson
2017-04-28 7:41 ` [PATCH v10] " Chris Wilson
2017-04-28 7:59 ` Chris Wilson
2017-04-28 9:32 ` Tvrtko Ursulin
2017-04-28 9:54 ` Chris Wilson
2017-04-28 9:55 ` Tvrtko Ursulin
2017-04-28 10:11 ` Chris Wilson
2017-04-28 14:12 ` [PATCH v13] " Chris Wilson
2017-04-28 19:02 ` [PATCH v14] " Chris Wilson
2017-05-02 12:24 ` Tvrtko Ursulin
2017-05-02 14:45 ` Chris Wilson
2017-05-02 15:11 ` Chris Wilson
2017-05-02 15:17 ` Tvrtko Ursulin
2017-05-02 14:50 ` Chris Wilson
2017-04-19 9:41 ` [PATCH 08/27] drm/i915: Rename intel_timeline.sync_seqno[] to .global_sync[] Chris Wilson
2017-04-19 9:41 ` [PATCH 09/27] drm/i915: Confirm the request is still active before adding it to the await Chris Wilson
2017-04-19 9:41 ` [PATCH 10/27] drm/i915: Do not record a successful syncpoint for a dma-await Chris Wilson
2017-04-19 9:41 ` [PATCH 11/27] drm/i915: Switch the global i915.semaphores check to a local predicate Chris Wilson
2017-04-19 9:41 ` [PATCH 12/27] drm/i915: Only report a wakeup if the waiter was truly asleep Chris Wilson
2017-04-20 13:30 ` Tvrtko Ursulin
2017-04-20 13:57 ` Chris Wilson
2017-04-19 9:41 ` [PATCH 13/27] drm/i915/execlists: Pack the count into the low bits of the port.request Chris Wilson
2017-04-20 14:58 ` Tvrtko Ursulin
2017-04-27 14:37 ` Chris Wilson
2017-04-28 12:02 ` Tvrtko Ursulin
2017-04-28 12:21 ` Chris Wilson
2017-04-19 9:41 ` [PATCH 14/27] drm/i915: Don't mark an execlists context-switch when idle Chris Wilson
2017-04-20 8:53 ` Joonas Lahtinen [this message]
2017-04-19 9:41 ` [PATCH 15/27] drm/i915: Split execlist priority queue into rbtree + linked list Chris Wilson
2017-04-24 10:28 ` Tvrtko Ursulin
2017-04-24 11:07 ` Chris Wilson
2017-04-24 12:18 ` Chris Wilson
2017-04-24 12:44 ` Tvrtko Ursulin
2017-04-24 13:06 ` Chris Wilson
2017-04-19 9:41 ` [PATCH 16/27] drm/i915: Reinstate reservation_object zapping for batch_pool objects Chris Wilson
2017-04-28 12:20 ` Tvrtko Ursulin
2017-04-19 9:41 ` [PATCH 17/27] drm/i915: Amalgamate execbuffer parameter structures Chris Wilson
2017-04-19 9:41 ` [PATCH 18/27] drm/i915: Use vma->exec_entry as our double-entry placeholder Chris Wilson
2017-04-19 9:41 ` [PATCH 19/27] drm/i915: Split vma exec_link/evict_link Chris Wilson
2017-04-19 9:41 ` [PATCH 20/27] drm/i915: Store a direct lookup from object handle to vma Chris Wilson
2017-04-19 9:41 ` [PATCH 21/27] drm/i915: Pass vma to relocate entry Chris Wilson
2017-04-19 9:41 ` [PATCH 22/27] drm/i915: Eliminate lots of iterations over the execobjects array Chris Wilson
2017-04-20 8:49 ` Joonas Lahtinen
2017-04-19 9:41 ` [PATCH 23/27] drm/i915: First try the previous execbuffer location Chris Wilson
2017-04-19 9:41 ` [PATCH 24/27] drm/i915: Wait upon userptr get-user-pages within execbuffer Chris Wilson
2017-04-19 9:41 ` [PATCH 25/27] drm/i915: Allow execbuffer to use the first object as the batch Chris Wilson
2017-04-19 9:41 ` [PATCH 26/27] drm/i915: Async GPU relocation processing Chris Wilson
2017-04-19 9:41 ` [PATCH 27/27] drm/i915/scheduler: Support user-defined priorities Chris Wilson
2017-04-19 10:09 ` Chris Wilson
2017-04-19 11:07 ` Tvrtko Ursulin
2017-04-19 10:01 ` ✗ Fi.CI.BAT: failure for series starting with [01/27] drm/i915/selftests: Allocate inode/file dynamically Patchwork
2017-04-27 7:27 ` ✓ Fi.CI.BAT: success for series starting with [01/27] drm/i915/selftests: Allocate inode/file dynamically (rev2) Patchwork
2017-04-28 14:31 ` ✓ Fi.CI.BAT: success for series starting with [01/27] drm/i915/selftests: Allocate inode/file dynamically (rev5) Patchwork
2017-04-28 19:22 ` ✓ Fi.CI.BAT: success for series starting with [01/27] drm/i915/selftests: Allocate inode/file dynamically (rev6) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1492678399.17161.4.camel@linux.intel.com \
--to=joonas.lahtinen@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox