[Intel-gfx] [PATCH] drm/i915: Use new i915_gem_object_pin_map for LRC
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Tue Apr 12 09:36:39 UTC 2016
On 12/04/16 10:30, Chris Wilson wrote:
> On Tue, Apr 12, 2016 at 09:52:28AM +0100, Tvrtko Ursulin wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>>
>> We can use the new pin/lazy unpin API for simplicity
>> and more performance in the execlist submission paths.
>>
>> v2:
>> * Fix error handling and convert more users.
>> * Compact some names for readability.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>> Cc: Chris Wilson <chris at chris-wilson.co.uk>
>
> Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
>
> Hmm, the stress tests that would exercise this are already currently
> fail (thinking of gem_ctx_create etc). But this should not excerbate it
> much!
Something is broken here as reported by the CI:
[ 329.004489] ------------[ cut here ]------------
[ 329.004508] WARNING: CPU: 1 PID: 7049 at drivers/gpu/drm/i915/i915_gem.c:4641 i915_gem_free_object+0x3bd/0x430 [i915]
[ 329.004510] WARN_ON(obj->pages_pin_count)
[ 329.004511] Modules linked in:
[ 329.004512] snd_hda_codec_hdmi x86_pkg_temp_thermal intel_powerclamp coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel snd_hda_codec_realtek snd_hda_codec_generic i915(-) snd_hda_codec snd_hwdep snd_hda_core mei_me lpc_ich snd_pcm mei i2c_hid i2c_designware_platform i2c_designware_core e1000e ptp pps_core sdhci_acpi sdhci mmc_core [last unloaded: snd_hda_intel]
[ 329.004527] CPU: 1 PID: 7049 Comm: rmmod Tainted: G U 4.6.0-rc3-gfxbench+ #1
[ 329.004528] Hardware name: /NUC5i7RYB, BIOS RYBDWi35.86A.0249.2015.0529.1640 05/29/2015
[ 329.004529] 0000000000000000 ffff880212f7bbe0 ffffffff81405fa5 ffff880212f7bc30
[ 329.004531] 0000000000000000 ffff880212f7bc20 ffffffff81079c7c 0000122112f7bc28
[ 329.004533] ffff880211eaad90 ffff880211eaad40 ffff880211eaae30 ffff8800ceb70000
[ 329.004535] Call Trace:
[ 329.004539] [<ffffffff81405fa5>] dump_stack+0x67/0x92
[ 329.004541] [<ffffffff81079c7c>] __warn+0xcc/0xf0
[ 329.004542] [<ffffffff81079cea>] warn_slowpath_fmt+0x4a/0x50
[ 329.004555] [<ffffffffa01f7ccd>] i915_gem_free_object+0x3bd/0x430 [i915]
[ 329.004558] [<ffffffff8151cffb>] drm_gem_object_free+0x2b/0x50
[ 329.004570] [<ffffffffa0208dd4>] intel_lr_context_free+0x74/0xd0 [i915]
[ 329.004580] [<ffffffffa01e25b3>] i915_gem_context_free+0x1a3/0x270 [i915]
[ 329.004589] [<ffffffffa01e2e6d>] i915_gem_context_fini+0x9d/0xd0 [i915]
[ 329.004603] [<ffffffffa0280bb9>] i915_driver_unload+0x119/0x1d0 [i915]
[ 329.004605] [<ffffffff81522524>] drm_dev_unregister+0x24/0xa0
[ 329.004606] [<ffffffff81522afe>] drm_put_dev+0x1e/0x60
[ 329.004614] [<ffffffffa01b82c0>] i915_pci_remove+0x10/0x20 [i915]
[ 329.004616] [<ffffffff8144efb4>] pci_device_remove+0x34/0xb0
[ 329.004618] [<ffffffff815467c5>] __device_release_driver+0x95/0x140
[ 329.004619] [<ffffffff81546966>] driver_detach+0xb6/0xc0
[ 329.004620] [<ffffffff815457c3>] bus_remove_driver+0x53/0xd0
[ 329.004622] [<ffffffff81547447>] driver_unregister+0x27/0x50
[ 329.004623] [<ffffffff8144e015>] pci_unregister_driver+0x25/0x70
[ 329.004625] [<ffffffff81524214>] drm_pci_exit+0x74/0x90
[ 329.004638] [<ffffffffa02812b5>] i915_exit+0x20/0x1a0 [i915]
[ 329.004640] [<ffffffff8110a47f>] SyS_delete_module+0x18f/0x1f0
[ 329.004642] [<ffffffff817d23a9>] entry_SYSCALL_64_fastpath+0x1c/0xac
[ 329.004643] ---[ end trace f0bf445e9d9a7dbe ]---
[ 329.004718] ------------[ cut here ]------------
It even happened in my local BAT run but I did not spot it due excessive eDP triggered WARNs. :(
Will look into it as soon as I stash the current work.
>> - lrc_state_page = i915_gem_object_get_dirty_page(ctx_obj, LRC_STATE_PN);
>> - if (WARN_ON(!lrc_state_page)) {
>> - ret = -ENODEV;
>> + obj_addr = i915_gem_object_pin_map(ctx_obj);
>
> Oops, there's a bug in pin_map in that we don't mark the object as
> dirty. Can you send a quick obj->dirty = true patch?
I can if you are sure we want this. Callers might only want to read so I am not sure.
Regards,
Tvrtko
More information about the Intel-gfx
mailing list