Bug 75138 - [ILK i386]igt/gem_evict_alignment causes OOM Killer
Summary: [ILK i386]igt/gem_evict_alignment causes OOM Killer
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: Mika Kuoppala
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on: 72742
Blocks: 75245
  Show dependency treegraph
 
Reported: 2014-02-18 07:04 UTC by lu hua
Modified: 2017-08-14 08:31 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
dmesg (116.81 KB, text/plain)
2014-02-18 07:04 UTC, lu hua
no flags Details
dmesg (119.45 KB, text/plain)
2014-06-03 06:13 UTC, Guo Jinxian
no flags Details
dmesg(ILK) (116.50 KB, text/plain)
2014-06-06 07:02 UTC, lu hua
no flags Details

Description lu hua 2014-02-18 07:04:35 UTC
Created attachment 94262 [details]
dmesg

System Environment:
--------------------------
Arch: i386
Platform: Ironlake
kernel:   (drm-intel-nightly)1be8f2b4dd6d3db00af24d4891c82d2650bd282d

Bug detailed description:
---------------------------
gem_evict_alignment causes OOM Killer on 32 bit Ironlake machines with -fixes and -nightly kernel.
It works well on 64 bit machines.
Test on earlier kernel, It also has this issue.

run ./gem_evict_alignment --run-subtest minor-interruptible
output:
IGT-Version: 1.5-g9597836 (i686) (Linux: 3.13.0-rc8_drm-intel-fixes_f51a44_20140218+ i686)
Killed

[  861.343671] Call Trace:
[  861.343698]  [<c0890e3c>] ? dump_stack+0x3e/0x4e
[  861.343737]  [<c088d9af>] ? dump_header.isra.10+0x53/0x15e
[  861.343783]  [<c028e417>] ? oom_kill_process+0x6e/0x299
[  861.343822]  [<c0290c26>] ? get_page_from_freelist+0x3a5/0x3d6
[  861.343870]  [<c045b478>] ? security_capable_noaudit+0xc/0xf
[  861.343913]  [<c028e943>] ? out_of_memory+0x1c3/0x1f0
[  861.343951]  [<c0291183>] ? __alloc_pages_nodemask+0x52c/0x620
[  861.343998]  [<c0299695>] ? shmem_getpage_gfp+0x2ca/0x563
[  861.344039]  [<c02999d7>] ? shmem_read_mapping_page_gfp+0x1f/0x39
[  861.344107]  [<f8537b92>] ? i915_gem_object_get_pages_gtt+0x10c/0x2a4 [i915]
[  861.344170]  [<f85346d1>] ? i915_gem_object_get_pages+0x4b/0x71 [i915]
[  861.344228]  [<f853732d>] ? i915_gem_object_pin+0x208/0x51b [i915]
[  861.344283]  [<f853a4ed>] ? i915_gem_execbuffer_reserve_vma.isra.12+0x68/0x174 [i915]
[  861.344353]  [<f853a7dc>] ? i915_gem_execbuffer_reserve+0x1e3/0x252 [i915]
[  861.344414]  [<f853b21f>] ? i915_gem_do_execbuffer.isra.15+0x4e6/0xda0 [i915]
[  861.344478]  [<f853c04a>] ? i915_gem_execbuffer2+0x12e/0x1c4 [i915]
[  861.344534]  [<f853bf1c>] ? i915_gem_execbuffer+0x443/0x443 [i915]
[  861.344586]  [<f804c7ce>] ? drm_ioctl+0x222/0x30c [drm]
[  861.344635]  [<f853bf1c>] ? i915_gem_execbuffer+0x443/0x443 [i915]
[  861.344682]  [<c02a7da6>] ? page_add_new_anon_rmap+0x44/0x9e
[  861.344726]  [<c02a21ac>] ? handle_mm_fault+0x2b0/0x6ad
[  861.344770]  [<f804c5ac>] ? drm_core_reclaim_buffers+0x52/0x52 [drm]
[  861.344818]  [<c02c3ab1>] ? do_vfs_ioctl+0x3f6/0x43d
[  861.344857]  [<c0897f67>] ? __do_page_fault+0x41f/0x45d
[  861.344896]  [<c0897f2c>] ? __do_page_fault+0x3e4/0x45d
[  861.344936]  [<c02c3b41>] ? SyS_ioctl+0x49/0x74
[  861.344973]  [<c0899a9a>] ? sysenter_do_call+0x12/0x22
[  861.345012] Mem-Info:
[  861.345030] DMA per-cpu:
[  861.345051] CPU    0: hi:    0, btch:   1 usd:   0
[  861.345088] CPU    1: hi:    0, btch:   1 usd:   0
[  861.345123] CPU    2: hi:    0, btch:   1 usd:   0
[  861.345159] CPU    3: hi:    0, btch:   1 usd:   0
[  861.345195] Normal per-cpu:
[  861.345217] CPU    0: hi:  186, btch:  31 usd:   0
[  861.345253] CPU    1: hi:  186, btch:  31 usd:   0
[  861.346933] CPU    2: hi:  186, btch:  31 usd:   0
[  861.348588] CPU    3: hi:  186, btch:  31 usd:   0
[  861.350233] HighMem per-cpu:
[  861.352901] CPU    0: hi:  186, btch:  31 usd:   0
[  861.355679] CPU    1: hi:  186, btch:  31 usd:   0
[  861.358413] CPU    2: hi:  186, btch:  31 usd:   1
[  861.360947] CPU    3: hi:  186, btch:  31 usd:   0
Comment 1 Guo Jinxian 2014-05-06 06:32:50 UTC
Subcases below still failed on latest -nightly(08ce6614d07dd1e426109672a5e323317c8d6ec7)
gem_evict_alignment_minor-interruptible
gem_evict_alignment_minor-normal
Comment 2 Chris Wilson 2014-05-06 12:28:27 UTC
Swap is still available. Requires invalidate patches from bug 72742
Comment 3 Daniel Vetter 2014-05-19 09:06:11 UTC
Sounds like a dupe of the filp leak ... Please retest and reopen if it still
happens.
Comment 4 Daniel Vetter 2014-05-19 09:08:32 UTC
Nevermind, got lost.
Comment 5 Guo Jinxian 2014-06-03 06:13:10 UTC
Created attachment 100340 [details]
dmesg

Cases below have this issue on BDW on latest -fixes(d23db88c3ab233daed18709e3a24d6c95344117f)

igt/gem_evict_everything/swapping-interruptible
igt/gem_evict_everything/swapping-normal

Output:
./gem_evict_everything --run-subtest swapping-interruptible
IGT-Version: 1.6-g532b7e6 (x86_64) (Linux: 3.15.0-rc7_drm-intel-fixes_d23db8_20140602+ x86_64)
Killed
Comment 6 Chris Wilson 2014-06-03 07:31:24 UTC
This one is actually fixed - this is one of the spurious OOM with no swap used.
Comment 7 lu hua 2014-06-06 07:02:55 UTC
Created attachment 100507 [details]
dmesg(ILK)

Test on latest -fixes kernel, It still exists.
Comment 8 Chris Wilson 2014-06-06 07:11:06 UTC
What is the output of

IGT_LOG_LEVEL=debug  ./gem_evict_alignment --run-subtest minor-interruptible

?
Comment 9 lu hua 2014-06-06 07:27:22 UTC
# IGT_LOG_LEVEL=debug  ./gem_evict_alignment --run-subtest minor-interruptible
output:
IGT-Version: 1.6-g1451df1 (i686) (Linux: 3.15.0-rc3_drm-intel-fixes_15d24a_20140606+ i686)
Killed
Comment 10 Chris Wilson 2014-06-06 07:45:21 UTC
Ah, it didn't use the library memory checks. Ok, can you update igt to

commit 39329479a51768e64cf710bc14b50803446e554d
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Jun 6 08:43:08 2014 +0100

    igt/gem_evict_alignment: Fix the memory limits checking
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75138
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

and repeat

IGT_LOG_LEVEL=debug  ./gem_evict_alignment --run-subtest minor-interruptible
Comment 11 lu hua 2014-06-06 08:07:16 UTC
(In reply to comment #10)
> Ah, it didn't use the library memory checks. Ok, can you update igt to
> 
> commit 39329479a51768e64cf710bc14b50803446e554d
> Author: Chris Wilson <chris@chris-wilson.co.uk>
> Date:   Fri Jun 6 08:43:08 2014 +0100
> 
>     igt/gem_evict_alignment: Fix the memory limits checking
>     
>     Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75138
>     Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> 
> and repeat
> 
> IGT_LOG_LEVEL=debug  ./gem_evict_alignment --run-subtest minor-interruptible

output:
IGT-Version: 1.6-g3932947 (i686) (Linux: 3.15.0-rc3_drm-intel-fixes_15d24a_20140606+ i686)
Checking 1536 surfaces of size 1048576 bytes (total 1611399168) against RAM
Killed
Comment 12 Chris Wilson 2014-06-06 08:22:57 UTC
This should fix the check correctly:

commit 18d2130110331e45423dff96aeec3ea802fa0857
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Fri Jun 6 08:43:08 2014 +0100

    igt/gem_evict_alignment: Fix the memory limits checking
    
    We actually allocate twice as many bo as needed to fill the aperture to
    cause ENOSPC, but the entire payload has to still fit into RAM.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=75138
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Comment 13 lu hua 2014-06-09 02:21:27 UTC
It skips instead of oom killer. Close it.
output:
IGT-Version: 1.6-g18d2130 (i686) (Linux: 3.15.0-rc3_drm-intel-fixes_15d24a_20140608+ i686)
Estimated that we need 3222798336 bytes for the test, but only have 1563426816 bytes available (RAM)
Test requirement not met in function minor_evictions, file gem_evict_alignment.c:137:
Last errno: 0, Success
Test requirement: (!(intel_check_memory(2*count, size, 0x1)))
Subtest minor-normal: SKIP
Estimated that we need 6442455040 bytes for the test, but only have 1563426816 bytes available (RAM)
Test requirement not met in function major_evictions, file gem_evict_alignment.c:167:
Last errno: 0, Success
Test requirement: (!(intel_check_memory(count, size, 0x1)))
Subtest major-normal: SKIP
Estimated that we need 3222798336 bytes for the test, but only have 1563426816 bytes available (RAM)
Test requirement not met in function minor_evictions, file gem_evict_alignment.c:137:
Last errno: 0, Success
Test requirement: (!(intel_check_memory(2*count, size, 0x1)))
Subtest minor-interruptible: SKIP
Estimated that we need 6442455040 bytes for the test, but only have 1563426816 bytes available (RAM)
Test requirement not met in function major_evictions, file gem_evict_alignment.c:167:
Last errno: 0, Success
Test requirement: (!(intel_check_memory(count, size, 0x1)))
Subtest major-interruptible: SKIP
Comment 14 lu hua 2014-06-09 02:21:47 UTC
Verified.Fixed.
Comment 15 Jari Tahvanainen 2017-08-14 08:31:08 UTC
Moving old bug from Verified to Closed.


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.