Bug 87399 - [HSW Bisected]78a4237 drm/i915: Use batch pools with the command parser
Summary: [HSW Bisected]78a4237 drm/i915: Use batch pools with the command parser
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: DRI git
Hardware: Other All
: high normal
Assignee: Tvrtko Ursulin
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-12-17 08:05 UTC by Guo Jinxian
Modified: 2017-10-06 14:32 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Guo Jinxian 2014-12-17 08:05:31 UTC
==System Environment==
--------------------------
Regression: Yes

Non-working platforms: HSW

==kernel==
--------------------------
origin/drm-intel-nightly: 2012-12-17(fails)
    drm-intel-nightly: 2014y-11m-26d-20h-40m-01s UTC integration manifest

==Bug detailed description==
(HSW)igt/gem_ctx_exec/eviction PASS->DMESG_WARN

==Reproduce steps==
---------------------------- 
1. ./gem_ctx_exec --run-subtest eviction


Dmesg:
[ 1278.593396] WARNING: CPU: 1 PID: 31207 at drivers/gpu/drm/i915/i915_gem_evict.c:42 mark_free.part.0+0x3b/0x53 [i915]()
[ 1278.593397] WARN_ON(!list_empty(&vma->exec_list))
[ 1278.593398] Modules linked in: ipv6 dm_mod joydev iTCO_wdt iTCO_vendor_support snd_hda_codec_realtek snd_hda_codec_generic dcdbas snd_hda_codec_hdmi snd_hda_intel serio_raw pcspkr snd_hda_controller snd_hda_codec snd_hwdep snd_pcm shpchp lpc_ich snd_timer i2c_i801 mfd_core snd soundcore battery acpi_cpufreq i915 button video drm_kms_helper drm cfbfillrect cfbimgblt cfbcopyarea
[ 1278.593413] CPU: 1 PID: 31207 Comm: gem_ctx_exec Not tainted 3.18.0_prts_8b7ac3_20141217_debug+ #70
[ 1278.593414] Hardware name: Dell Inc. OptiPlex 9020/01PCY1, BIOS A07 04/25/2014
[ 1278.593415] 0000000000000009 ffff8801e1637978 ffffffff8182d11d 0000000002b65251
[ 1278.593417] ffff8801e16379c8 ffff8801e16379b8 ffffffff8103f9df 0000000000000100
[ 1278.593418] ffffffffa00ae977 ffff8801a5c64800 ffff8801e1637a78 ffff88020d567000
[ 1278.593420] Call Trace:
[ 1278.593425] [] dump_stack+0x46/0x58
[ 1278.593428] [] warn_slowpath_common+0x81/0x9b
[ 1278.593438] [] ? mark_free.part.0+0x3b/0x53 [i915]
[ 1278.593439] [] warn_slowpath_fmt+0x46/0x48
[ 1278.593448] [] mark_free.part.0+0x3b/0x53 [i915]
[ 1278.593457] [] i915_gem_evict_something+0x127/0x2c3 [i915]
[ 1278.593467] [] i915_gem_object_pin_view+0x3c0/0x673 [i915]
[ 1278.593476] [] i915_switch_context+0x19a/0x739 [i915]
[ 1278.593485] [] i915_gem_ringbuffer_submission+0x22e/0x7c1 [i915]
[ 1278.593494] [] i915_gem_do_execbuffer.isra.12+0xcdf/0xdbf [i915]
[ 1278.593496] [] ? retint_restore_args+0xe/0xe
[ 1278.593498] [] ? trace_hardirqs_on_caller+0x16e/0x18a
[ 1278.593501] [] ? trace_hardirqs_on_thunk+0x3a/0x3f
[ 1278.593509] [] i915_gem_execbuffer2+0x192/0x24e [i915]
[ 1278.593516] [] drm_ioctl+0x385/0x404 [drm]
[ 1278.593524] [] ? i915_gem_execbuffer+0x382/0x382 [i915]
[ 1278.593526] [] ? mntput_no_expire+0x5f/0x1c2
[ 1278.593527] [] ? mntput_no_expire+0x5/0x1c2
[ 1278.593530] [] ? dput+0x14e/0x16b
[ 1278.593531] [] do_vfs_ioctl+0x3a3/0x46c
[ 1278.593534] [] ? ____fput+0xe/0x10
[ 1278.593535] [] ? retint_swapgs+0xe/0x13
[ 1278.593537] [] SyS_ioctl+0x53/0x81
[ 1278.593538] [] system_call_fastpath+0x12/0x17
[ 1278.593540] ---[ end trace 69a881f67890e137 ]---
[ 1278.606790] ------------[ cut here ]------------


==Bisect results from PRTS==
----------------------------
commit 78a423772d08eb5a048765a883b5b5a308ea0d0f
Author:     Brad Volkin <bradley.d.volkin@intel.com>
AuthorDate: Thu Dec 11 12:13:09 2014 -0800
Commit:     Daniel Vetter <daniel.vetter@ffwll.ch>
CommitDate: Tue Dec 16 10:39:09 2014 +0100

    drm/i915: Use batch pools with the command parser
    
    This patch sets up all of the tracking and copying necessary to
    use batch pools with the command parser and dispatches the copied
    (shadow) batch to the hardware.
    
    After this patch, the parser is in 'enabling' mode.
    
    Note that performance takes a hit from the copy in some cases
    and will likely need some work. At a rough pass, the memcpy
    appears to be the bottleneck. Without having done a deeper
    analysis, two ideas that come to mind are:
    1) Copy sections of the batch at a time, as they are reached
       by parsing. Might improve cache locality.
    2) Copy only up to the userspace-supplied batch length and
       memset the rest of the buffer. Reduces the number of reads.
    
    v2:
    - Remove setting the capacity of the pool
    - One global pool instead of per-ring pools
    - Replace batch_obj with shadow_batch_obj and hook into eb->vmas
    - Memset any space in the shadow batch beyond what gets copied
    - Rebased on execlist prep refactoring
    
    v3:
    - Rebase on chained batch handling
    - Squash in setting the secure dispatch flag
    - Add a note about the interaction w/secure dispatch pinning
    - Check for request->batch_obj == NULL in i915_gem_free_request
    
    v4:
    - Fix read domains for shadow_batch_obj
    - Remove the set_to_gtt_domain call from i915_parse_cmds
    - ggtt_pin/unpin in the parser block to simplify error handling
    - Check USES_FULL_PPGTT before setting DISPATCH_SECURE flag
    - Remove i915_gem_batch_pool_put calls
    
    v5:
    - Move 'pending_read_domains |= I915_GEM_DOMAIN_COMMAND' after
      the parser (danvet, from v4 0/7 feedback)
    
    Issue: VIZ-4719
    Signed-off-by: Brad Volkin <bradley.d.volkin@intel.com>
    Reviewed-By: Jon Bloomfield <jon.bloomfield@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Comment 1 Daniel Vetter 2015-01-08 08:35:34 UTC
Should be resolved with

commit 7226572d8ed48f7e1aa9de5383d919490d6e9a0c
Author: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Date:   Wed Jan 7 17:32:39 2015 +0000

    drm/i915: Reserve shadow batch VMA analogue to others
    
    If not pinned VMA can become an eviction target just before it needs to be
    executed which breaks the internal object lifetime rules.
    
    Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87399
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Comment 2 Ding Heng 2015-01-12 02:38:57 UTC
7226572d8ed48f7e1aa9de5383d919490d6e9a0c has pass the test, the output in dmesg no longer apear. Change status to verified.
Comment 3 Elizabeth 2017-10-06 14:32:58 UTC
Closing old verified.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.