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
Subcases below still failed on latest -nightly(08ce6614d07dd1e426109672a5e323317c8d6ec7) gem_evict_alignment_minor-interruptible gem_evict_alignment_minor-normal
Swap is still available. Requires invalidate patches from bug 72742
Sounds like a dupe of the filp leak ... Please retest and reopen if it still happens.
Nevermind, got lost.
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
This one is actually fixed - this is one of the spurious OOM with no swap used.
Created attachment 100507 [details] dmesg(ILK) Test on latest -fixes kernel, It still exists.
What is the output of IGT_LOG_LEVEL=debug ./gem_evict_alignment --run-subtest minor-interruptible ?
# 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
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
(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
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>
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
Verified.Fixed.
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.