• zhong jiang's avatar
    kexec: add cond_resched into kimage_alloc_crash_control_pages · 8e53c073
    zhong jiang authored
    A soft lookup will occur when I run trinity in syscall kexec_load.  the
    corresponding stack information is as follows.
    
      BUG: soft lockup - CPU#6 stuck for 22s! [trinity-c6:13859]
      Kernel panic - not syncing: softlockup: hung tasks
      CPU: 6 PID: 13859 Comm: trinity-c6 Tainted: G           O L ----V-------   3.10.0-327.28.3.35.zhongjiang.x86_64 #1
      Hardware name: Huawei Technologies Co., Ltd. Tecal BH622 V2/BC01SRSA0, BIOS RMIBV386 06/30/2014
      Call Trace:
       <IRQ>  dump_stack+0x19/0x1b
       panic+0xd8/0x214
       watchdog_timer_fn+0x1cc/0x1e0
       __hrtimer_run_queues+0xd2/0x260
       hrtimer_interrupt+0xb0/0x1e0
       ? call_softirq+0x1c/0x30
       local_apic_timer_interrupt+0x37/0x60
       smp_apic_timer_interrupt+0x3f/0x60
       apic_timer_interrupt+0x6d/0x80
       <EOI>  ? kimage_alloc_control_pages+0x80/0x270
       ? kmem_cache_alloc_trace+0x1ce/0x1f0
       ? do_kimage_alloc_init+0x1f/0x90
       kimage_alloc_init+0x12a/0x180
       SyS_kexec_load+0x20a/0x260
       system_call_fastpath+0x16/0x1b
    
    the first time allocation of control pages may take too much time
    because crash_res.end can be set to a higher value.  we need to add
    cond_resched to avoid the issue.
    
    The patch have been tested and above issue is not appear.
    
    Link: http://lkml.kernel.org/r/1481164674-42775-1-git-send-email-zhongjiang@huawei.comSigned-off-by: default avatarzhong jiang <zhongjiang@huawei.com>
    Acked-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Xunlei Pang <xpang@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    8e53c073
kexec_core.c 39.6 KB