Skip to content
  • Damian Eppel's avatar
    clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier · 6d913c32
    Damian Eppel authored
    Whilst testing cpu hotplug events on kernel configured with
    DEBUG_PREEMPT and DEBUG_ATOMIC_SLEEP we get following BUG message,
    caused by calling request_irq() and free_irq() in the context of
    hotplug notification (which is in this case atomic context).
    
    [    0.091617] [c0] CPU0: thread -1, cpu 0, socket 1, mpidr 80000100
    [    0.091828] [c0] Running under secure firmware.
    [    0.091901] [c0] Setting up static identity map for 0xc0618b98 - 0xc0618bf0
    [    0.091962] [c0] Exynos-SnapShot: exynos_ss_init failed
    [    0.112330] [c0] ftrace: Allocated trace_printk buffers
    [    0.134323] [c1] CPU1: Booted secondary processor
    [    0.134354] [c1] CPU1: thread -1, cpu 1, socket 1, mpidr 80000101
    [    0.134402] [c1] BUG: sleeping function called from invalid context at mm/page_alloc.c:2638
    [    0.134518] [c1] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper/1
    [    0.134560] [c1] no locks held by swapper/1/0.
    [    0.134598] [c1] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.10.82-xu43hk #11
    [    0.134640] [c1] Backtrace:
    [    0.134694] [c1] [<c00132e4>] (dump_backtrace+0x0/0x114) from [<c0013554>] (show_stack+0x20/0x24)
    [    0.134744] [c1]  r7:00000000 r6:00000000 r5:df2da000 r4:c098c9c0
    [    0.134826] [c1] [<c0013534>] (show_stack+0x0/0x24) from [<c06124d8>] (dump_stack+0x24/0x28)
    [    0.134887] [c1] [<c06124b4>] (dump_stack+0x0/0x28) from [<c00617f8>] (__might_sleep+0x144/0x148)
    [    0.134952] [c1] [<c00616b4>] (__might_sleep+0x0/0x148) from [<c00f5590>] (__alloc_pages_nodemask+0x2a0/0xaac)
    [    0.135006] [c1]  r5:00080008 r4:002012d0
    [    0.135065] [c1] [<c00f52f0>] (__alloc_pages_nodemask+0x0/0xaac) from [<c012875c>] (new_slab+0x7c/0x22c)
    [    0.135132] [c1] [<c01286e0>] (new_slab+0x0/0x22c) from [<c012a92c>] (__slab_alloc.isra.14.constprop.18+0x558/0x61c)
    [    0.135187] [c1]  r9:00000000 r8:df001f00 r7:014f7000 r6:00000000 r5:c1dee9e0
    [    0.135187] r4:c08f79e0
    [    0.135295] [c1] [<c012a3d4>] (__slab_alloc.isra.14.constprop.18+0x0/0x61c) from [<c012af3c>] (kmem_cache_alloc_trace+0x194/0x1c8)
    [    0.135367] [c1] [<c012ada8>] (kmem_cache_alloc_trace+0x0/0x1c8) from [<c00b04e0>] (request_threaded_irq+0x78/0x138)
    [    0.135433] [c1] [<c00b0468>] (request_threaded_irq+0x0/0x138) from [<c0610f7c>] (exynos4_local_timer_setup+0x100/0x160)
    [    0.135507] [c1] [<c0610e7c>] (exynos4_local_timer_setup+0x0/0x160) from [<c060de3c>] (percpu_timer_setup+0xa4/0xb0)
    [    0.135562] [c1]  r8:4000406a r7:c0968c84 r6:10c0387d r5:c09148c0 r4:c1de9280
    [    0.135655] [c1] [<c060dd98>] (percpu_timer_setup+0x0/0xb0) from [<c060e1e4>] (secondary_start_kernel+0x118/0x134)
    [    0.135710] [c1]  r5:c09148c0 r4:00000001
    [    0.135765] [c1] [<c060e0cc>] (secondary_start_kernel+0x0/0x134) from [<4060d784>] (0x4060d784)
    [    0.135815] [c1]  r5:00000015 r4:5f13006a
    [    0.144239] [c2] CPU2: Booted secondary processor
    [    0.144267] [c2] CPU2: thread -1, cpu 2, socket 1, mpidr 80000102
    [    0.154295] [c3] CPU3: Booted secondary processor
    
    Change-Id: I78ee2d3997b2137e3c19432e17b3e3672523cf43
    6d913c32