Re: [Intel-gfx] [PATCH] drm/i915/gem: Remove stolen node before releasing the region

2021-01-12 Thread Matthew Auld
On Tue, 12 Jan 2021 at 01:50, Chris Wilson  wrote:
>
> If this stolen object holds the last reference to the region, we need to
> remove our drm_mm_node before freeing the region's drm_mm.
>
> <4> [431.679591] Memory manager not clean during takedown.
> <4> [431.679633] WARNING: CPU: 0 PID: 110 at drivers/gpu/drm/drm_mm.c:999 
> drm_mm_takedown+0x51/0x100
> <4> [431.679655] Modules linked in: i915 vgem btusb snd_hda_codec_hdmi btrtl 
> btbcm btintel snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio 
> bluetooth coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel 
> ecdh_generic ecc r8169 realtek lpc_ich snd_intel_dspcfg snd_hda_codec 
> snd_hwdep snd_hda_core snd_pcm pinctrl_cherryview prime_numbers [last 
> unloaded: i915]
> <4> [431.679883] CPU: 0 PID: 110 Comm: kworker/u4:3 Tainted: G U  
>   5.11.0-rc3-CI-CI_DRM_9583+ #1
> <4> [431.679895] Hardware name:  /NUC5CPYB, BIOS 
> PYBSWCEL.86A.0058.2016.1102.1842 11/02/2016
> <4> [431.679905] Workqueue: i915 __i915_gem_free_work [i915]
> <4> [431.680831] RIP: 0010:drm_mm_takedown+0x51/0x100
> <4> [431.680850] Code: 44 24 08 65 48 33 04 25 28 00 00 00 0f 85 b6 00 00 00 
> 48 83 c4 10 5b 5d 41 5c c3 48 89 fb 48 c7 c7 c8 b7 38 82 e8 00 d6 37 00 <0f> 
> 0b 48 8b 3d 96 d5 d1 00 ba 00 10 00 00 be c0 0c 00 00 e8 d7 64
> <4> [431.680862] RSP: 0018:c9ad7dc0 EFLAGS: 00010282
> <4> [431.680879] RAX:  RBX: 8881109aa140 RCX: 
> 0001
> <4> [431.680888] RDX: 8001 RSI: 8235a70f RDI: 
> 
> <4> [431.680897] RBP: 8881109aa178 R08: 0001 R09: 
> 0001
> <4> [431.680906] R10: 25eaec48 R11: f5b271a7 R12: 
> 88810a38ddc0
> <4> [431.680916] R13:  R14: 82861b70 R15: 
> 88810b715538
> <4> [431.680925] FS:  () GS:88817b80() 
> knlGS:
> <4> [431.680935] CS:  0010 DS:  ES:  CR0: 80050033
> <4> [431.680945] CR2: 56377cfd7c48 CR3: 0001045de000 CR4: 
> 001006f0
> <4> [431.680954] Call Trace:
> <4> [431.680977]  __intel_memory_region_destroy+0x24/0x50 [i915]
> <4> [431.681340]  i915_gem_object_release_stolen+0x26/0x40 [i915]
> <4> [431.681637]  __i915_gem_free_objects.isra.21+0x1ef/0x3b0 [i915]
> <4> [431.681935]  process_one_work+0x270/0x5c0
> <4> [431.682022]  worker_thread+0x37/0x380
> <4> [431.682047]  ? process_one_work+0x5c0/0x5c0
> <4> [431.682062]  kthread+0x146/0x170
> <4> [431.682077]  ? kthread_park+0x80/0x80
> <4> [431.682098]  ret_from_fork+0x22/0x30
> <4> [431.682153] irq event stamp: 1872905
> <4> [431.682162] hardirqs last  enabled at (1872911): [] 
> console_unlock+0x49a/0x580
> <4> [431.682176] hardirqs last disabled at (1872916): [] 
> console_unlock+0x406/0x580
> <4> [431.682187] softirqs last  enabled at (1872850): [] 
> __do_softirq+0x342/0x48e
> <4> [431.682201] softirqs last disabled at (1872845): [] 
> asm_call_irq_on_stack+0x12/0x20
> <4> [431.682214] ---[ end trace 5d3bcd818e2e3816 ]---
> <3> [431.686188] [drm:drm_mm_takedown] *ERROR* node [0002d000 + 4000]: 
> inserted at
>  drm_mm_insert_node_in_range+0x34a/0x5b0
>  i915_gem_stolen_insert_node_in_range+0x7b/0xa0 [i915]
>  _i915_gem_object_create_stolen+0x83/0xd0 [i915]
>  i915_gem_object_create_region+0x61/0x140 [i915]
>  intel_engine_create_ring+0x176/0x230 [i915]
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2927
> Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/gem: Remove stolen node before releasing the region

2021-01-11 Thread Chris Wilson
If this stolen object holds the last reference to the region, we need to
remove our drm_mm_node before freeing the region's drm_mm.

<4> [431.679591] Memory manager not clean during takedown.
<4> [431.679633] WARNING: CPU: 0 PID: 110 at drivers/gpu/drm/drm_mm.c:999 
drm_mm_takedown+0x51/0x100
<4> [431.679655] Modules linked in: i915 vgem btusb snd_hda_codec_hdmi btrtl 
btbcm btintel snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio 
bluetooth coretemp crct10dif_pclmul crc32_pclmul ghash_clmulni_intel 
ecdh_generic ecc r8169 realtek lpc_ich snd_intel_dspcfg snd_hda_codec snd_hwdep 
snd_hda_core snd_pcm pinctrl_cherryview prime_numbers [last unloaded: i915]
<4> [431.679883] CPU: 0 PID: 110 Comm: kworker/u4:3 Tainted: G U
5.11.0-rc3-CI-CI_DRM_9583+ #1
<4> [431.679895] Hardware name:  /NUC5CPYB, BIOS 
PYBSWCEL.86A.0058.2016.1102.1842 11/02/2016
<4> [431.679905] Workqueue: i915 __i915_gem_free_work [i915]
<4> [431.680831] RIP: 0010:drm_mm_takedown+0x51/0x100
<4> [431.680850] Code: 44 24 08 65 48 33 04 25 28 00 00 00 0f 85 b6 00 00 00 48 
83 c4 10 5b 5d 41 5c c3 48 89 fb 48 c7 c7 c8 b7 38 82 e8 00 d6 37 00 <0f> 0b 48 
8b 3d 96 d5 d1 00 ba 00 10 00 00 be c0 0c 00 00 e8 d7 64
<4> [431.680862] RSP: 0018:c9ad7dc0 EFLAGS: 00010282
<4> [431.680879] RAX:  RBX: 8881109aa140 RCX: 
0001
<4> [431.680888] RDX: 8001 RSI: 8235a70f RDI: 

<4> [431.680897] RBP: 8881109aa178 R08: 0001 R09: 
0001
<4> [431.680906] R10: 25eaec48 R11: f5b271a7 R12: 
88810a38ddc0
<4> [431.680916] R13:  R14: 82861b70 R15: 
88810b715538
<4> [431.680925] FS:  () GS:88817b80() 
knlGS:
<4> [431.680935] CS:  0010 DS:  ES:  CR0: 80050033
<4> [431.680945] CR2: 56377cfd7c48 CR3: 0001045de000 CR4: 
001006f0
<4> [431.680954] Call Trace:
<4> [431.680977]  __intel_memory_region_destroy+0x24/0x50 [i915]
<4> [431.681340]  i915_gem_object_release_stolen+0x26/0x40 [i915]
<4> [431.681637]  __i915_gem_free_objects.isra.21+0x1ef/0x3b0 [i915]
<4> [431.681935]  process_one_work+0x270/0x5c0
<4> [431.682022]  worker_thread+0x37/0x380
<4> [431.682047]  ? process_one_work+0x5c0/0x5c0
<4> [431.682062]  kthread+0x146/0x170
<4> [431.682077]  ? kthread_park+0x80/0x80
<4> [431.682098]  ret_from_fork+0x22/0x30
<4> [431.682153] irq event stamp: 1872905
<4> [431.682162] hardirqs last  enabled at (1872911): [] 
console_unlock+0x49a/0x580
<4> [431.682176] hardirqs last disabled at (1872916): [] 
console_unlock+0x406/0x580
<4> [431.682187] softirqs last  enabled at (1872850): [] 
__do_softirq+0x342/0x48e
<4> [431.682201] softirqs last disabled at (1872845): [] 
asm_call_irq_on_stack+0x12/0x20
<4> [431.682214] ---[ end trace 5d3bcd818e2e3816 ]---
<3> [431.686188] [drm:drm_mm_takedown] *ERROR* node [0002d000 + 4000]: 
inserted at
 drm_mm_insert_node_in_range+0x34a/0x5b0
 i915_gem_stolen_insert_node_in_range+0x7b/0xa0 [i915]
 _i915_gem_object_create_stolen+0x83/0xd0 [i915]
 i915_gem_object_create_region+0x61/0x140 [i915]
 intel_engine_create_ring+0x176/0x230 [i915]

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2927
Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_stolen.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c 
b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
index 29bffc6afcc1..41b9fbf4dbcc 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_stolen.c
@@ -608,11 +608,10 @@ i915_gem_object_release_stolen(struct drm_i915_gem_object 
*obj)
struct drm_mm_node *stolen = fetch_and_zero(&obj->stolen);
 
GEM_BUG_ON(!stolen);
-
-   i915_gem_object_release_memory_region(obj);
-
i915_gem_stolen_remove_node(i915, stolen);
kfree(stolen);
+
+   i915_gem_object_release_memory_region(obj);
 }
 
 static const struct drm_i915_gem_object_ops i915_gem_object_stolen_ops = {
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx