23 Jan, 2017

1 commit

  • 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
    Cc: Joonas Lahtinen
    Cc: Daniel Vetter
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20170113235119.22528-1-chris@chris-wilson.co.uk

    Chris Wilson
     

27 Dec, 2016

1 commit

  • Prime numbers are interesting for testing components that use multiplies
    and divides, such as testing DRM's struct drm_mm alignment computations.

    v2: Move to lib/, add selftest
    v3: Fix initial constants (exclude 0/1 from being primes)
    v4: More RCU markup to keep 0day/sparse happy
    v5: Fix RCU unwind on module exit, add to kselftests
    v6: Tidy computation of bitmap size
    v7: for_each_prime_number_from()
    v8: Compose small-primes using BIT() for easier verification
    v9: Move rcu dance entirely into callers.
    v10: Improve quote for Betrand's Postulate (aka Chebyshev's theorem)

    Signed-off-by: Chris Wilson
    Cc: Lukas Wunner
    Reviewed-by: Joonas Lahtinen
    Signed-off-by: Daniel Vetter
    Link: http://patchwork.freedesktop.org/patch/msgid/20161222144514.3911-1-chris@chris-wilson.co.uk

    Chris Wilson