diff mbox

lib/prime_numbers: Suppress warn on kmalloc failure

Message ID 20170113235119.22528-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson Jan. 13, 2017, 11:51 p.m. UTC
The allocation for the bitmap may become very large, larger than
MAX_ORDER, for large requests. We fail gracefully by falling back to
trail-division, so disable the warning from kmalloc:

  521.961092] WARNING: CPU: 0 PID: 30637 at mm/page_alloc.c:3548 __alloc_pages_slowpath+0x237/0x9a0
[  521.961105] Modules linked in: i915(+) drm_kms_helper intel_gtt prime_numbers [last unloaded: drm_kms_helper]
[  521.961126] CPU: 0 PID: 30637 Comm: drv_selftest Tainted: G     U  W       4.10.0-rc3+ #321
[  521.961137] Hardware name:                  /        , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
[  521.961148] Call Trace:
[  521.961161]  dump_stack+0x4d/0x6f
[  521.961172]  __warn+0xc1/0xe0
[  521.961181]  warn_slowpath_null+0x18/0x20
[  521.961189]  __alloc_pages_slowpath+0x237/0x9a0
[  521.961200]  ? sg_init_table+0x1a/0x40
[  521.961208]  ? get_page_from_freelist+0x3fa/0x910
[  521.961275]  ? i915_gem_object_get_sg+0x272/0x2b0 [i915]
[  521.961285]  __alloc_pages_nodemask+0x1ea/0x220
[  521.961295]  kmalloc_order+0x1c/0x50
[  521.961304]  __kmalloc+0x115/0x170
[  521.961314]  expand_to_next_prime+0x43/0x180 [prime_numbers]
[  521.961324]  next_prime_number+0x47/0xc0 [prime_numbers]
[  521.961377]  igt_vma_rotate+0x386/0x590 [i915]
[  521.961429]  i915_subtests+0x37/0xc0 [i915]
[  521.961481]  i915_vma_mock_selftests+0x3d/0x70 [i915]
[  521.961532]  run_selftests+0x16e/0x1f0 [i915]
[  521.961541]  ? 0xffffffffa02a4000
[  521.961592]  i915_mock_selftests+0x29/0x40 [i915]
[  521.961638]  i915_init+0xa/0x5e [i915]
[  521.961646]  ? 0xffffffffa02a4000
[  521.961655]  do_one_initcall+0x3e/0x160
[  521.961664]  ? __vunmap+0x7c/0xc0
[  521.961672]  ? vfree+0x29/0x70
[  521.961680]  ? kmem_cache_alloc+0xcf/0x120
[  521.961690]  do_init_module+0x55/0x1c4
[  521.961699]  load_module+0x1f3f/0x25b0
[  521.961707]  ? __symbol_put+0x40/0x40
[  521.961716]  ? kernel_read_file+0x100/0x190
[  521.961725]  SYSC_finit_module+0xbc/0xf0
[  521.961734]  SyS_finit_module+0x9/0x10
[  521.961744]  entry_SYSCALL_64_fastpath+0x17/0x98
[  521.961752] RIP: 0033:0x7f111aca4119
[  521.961760] RSP: 002b:00007ffd8be6cbe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[  521.961773] RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 00007f111aca4119
[  521.961781] RDX: 0000000000000000 RSI: 000055dfc18bc8e0 RDI: 0000000000000006
[  521.961789] RBP: 00007ffd8be6bbe0 R08: 0000000000000000 R09: 0000000000000000
[  521.961796] R10: 0000000000000006 R11: 0000000000000246 R12: 0000000000000005
[  521.961805] R13: 000055dfc18bd3a0 R14: 00007ffd8be6bbc0 R15: 0000000000000005

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@intel.com>
---
 lib/prime_numbers.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Joonas Lahtinen Jan. 16, 2017, 7:07 a.m. UTC | #1
On pe, 2017-01-13 at 23:51 +0000, Chris Wilson wrote:
> The allocation for the bitmap may become very large, larger than
> MAX_ORDER, for large requests. We fail gracefully by falling back to
> trail-division, so disable the warning from kmalloc:
> 
>   521.961092] WARNING: CPU: 0 PID: 30637 at mm/page_alloc.c:3548 __alloc_pages_slowpath+0x237/0x9a0
> [  521.961105] Modules linked in: i915(+) drm_kms_helper intel_gtt prime_numbers [last unloaded: drm_kms_helper]
> [  521.961126] CPU: 0 PID: 30637 Comm: drv_selftest Tainted: G     U  W       4.10.0-rc3+ #321
> [  521.961137] Hardware name:                  /        , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
> [  521.961148] Call Trace:
> [  521.961161]  dump_stack+0x4d/0x6f
> [  521.961172]  __warn+0xc1/0xe0
> [  521.961181]  warn_slowpath_null+0x18/0x20
> [  521.961189]  __alloc_pages_slowpath+0x237/0x9a0
> [  521.961200]  ? sg_init_table+0x1a/0x40
> [  521.961208]  ? get_page_from_freelist+0x3fa/0x910
> [  521.961275]  ? i915_gem_object_get_sg+0x272/0x2b0 [i915]
> [  521.961285]  __alloc_pages_nodemask+0x1ea/0x220
> [  521.961295]  kmalloc_order+0x1c/0x50
> [  521.961304]  __kmalloc+0x115/0x170
> [  521.961314]  expand_to_next_prime+0x43/0x180 [prime_numbers]
> [  521.961324]  next_prime_number+0x47/0xc0 [prime_numbers]
> [  521.961377]  igt_vma_rotate+0x386/0x590 [i915]
> [  521.961429]  i915_subtests+0x37/0xc0 [i915]
> [  521.961481]  i915_vma_mock_selftests+0x3d/0x70 [i915]
> [  521.961532]  run_selftests+0x16e/0x1f0 [i915]
> [  521.961541]  ? 0xffffffffa02a4000
> [  521.961592]  i915_mock_selftests+0x29/0x40 [i915]
> [  521.961638]  i915_init+0xa/0x5e [i915]
> [  521.961646]  ? 0xffffffffa02a4000
> [  521.961655]  do_one_initcall+0x3e/0x160
> [  521.961664]  ? __vunmap+0x7c/0xc0
> [  521.961672]  ? vfree+0x29/0x70
> [  521.961680]  ? kmem_cache_alloc+0xcf/0x120
> [  521.961690]  do_init_module+0x55/0x1c4
> [  521.961699]  load_module+0x1f3f/0x25b0
> [  521.961707]  ? __symbol_put+0x40/0x40
> [  521.961716]  ? kernel_read_file+0x100/0x190
> [  521.961725]  SYSC_finit_module+0xbc/0xf0
> [  521.961734]  SyS_finit_module+0x9/0x10
> [  521.961744]  entry_SYSCALL_64_fastpath+0x17/0x98
> [  521.961752] RIP: 0033:0x7f111aca4119
> [  521.961760] RSP: 002b:00007ffd8be6cbe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> [  521.961773] RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 00007f111aca4119
> [  521.961781] RDX: 0000000000000000 RSI: 000055dfc18bc8e0 RDI: 0000000000000006
> [  521.961789] RBP: 00007ffd8be6bbe0 R08: 0000000000000000 R09: 0000000000000000
> [  521.961796] R10: 0000000000000006 R11: 0000000000000246 R12: 0000000000000005
> [  521.961805] R13: 000055dfc18bd3a0 R14: 00007ffd8be6bbc0 R15: 0000000000000005
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> Cc: Daniel Vetter <daniel.vetter@intel.com>

Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>

Regards, Joonas
diff mbox

Patch

diff --git a/lib/prime_numbers.c b/lib/prime_numbers.c
index c9b3c29614aa..550eec457c2e 100644
--- a/lib/prime_numbers.c
+++ b/lib/prime_numbers.c
@@ -124,7 +124,8 @@  static bool expand_to_next_prime(unsigned long x)
 		return false;
 
 	sz = round_up(sz, BITS_PER_LONG);
-	new = kmalloc(sizeof(*new) + bitmap_size(sz), GFP_KERNEL);
+	new = kmalloc(sizeof(*new) + bitmap_size(sz),
+		      GFP_KERNEL | __GFP_NOWARN);
 	if (!new)
 		return false;