lkml.org 
[lkml]   [2019]   [Dec]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 040/134] powerpc/book3s64/hash: Add cond_resched to avoid soft lockup warning
    Date
    From: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>

    [ Upstream commit 16f6b67cf03cb43db7104acb2ca877bdc2606c92 ]

    With large memory (8TB and more) hotplug, we can get soft lockup
    warnings as below. These were caused by a long loop without any
    explicit cond_resched which is a problem for !PREEMPT kernels.

    Avoid this using cond_resched() while inserting hash page table
    entries. We already do similar cond_resched() in __add_pages(), see
    commit f64ac5e6e306 ("mm, memory_hotplug: add scheduling point to
    __add_pages").

    rcu: 3-....: (24002 ticks this GP) idle=13e/1/0x4000000000000002 softirq=722/722 fqs=12001
    (t=24003 jiffies g=4285 q=2002)
    NMI backtrace for cpu 3
    CPU: 3 PID: 3870 Comm: ndctl Not tainted 5.3.0-197.18-default+ #2
    Call Trace:
    dump_stack+0xb0/0xf4 (unreliable)
    nmi_cpu_backtrace+0x124/0x130
    nmi_trigger_cpumask_backtrace+0x1ac/0x1f0
    arch_trigger_cpumask_backtrace+0x28/0x3c
    rcu_dump_cpu_stacks+0xf8/0x154
    rcu_sched_clock_irq+0x878/0xb40
    update_process_times+0x48/0x90
    tick_sched_handle.isra.16+0x4c/0x80
    tick_sched_timer+0x68/0xe0
    __hrtimer_run_queues+0x180/0x430
    hrtimer_interrupt+0x110/0x300
    timer_interrupt+0x108/0x2f0
    decrementer_common+0x114/0x120
    --- interrupt: 901 at arch_add_memory+0xc0/0x130
    LR = arch_add_memory+0x74/0x130
    memremap_pages+0x494/0x650
    devm_memremap_pages+0x3c/0xa0
    pmem_attach_disk+0x188/0x750
    nvdimm_bus_probe+0xac/0x2c0
    really_probe+0x148/0x570
    driver_probe_device+0x19c/0x1d0
    device_driver_attach+0xcc/0x100
    bind_store+0x134/0x1c0
    drv_attr_store+0x44/0x60
    sysfs_kf_write+0x64/0x90
    kernfs_fop_write+0x1a0/0x270
    __vfs_write+0x3c/0x70
    vfs_write+0xd0/0x260
    ksys_write+0xdc/0x130
    system_call+0x5c/0x68

    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20191001084656.31277-1-aneesh.kumar@linux.ibm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/mm/book3s64/hash_utils.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c
    index 6e5a769ebcb80..83c51a7d7eee6 100644
    --- a/arch/powerpc/mm/book3s64/hash_utils.c
    +++ b/arch/powerpc/mm/book3s64/hash_utils.c
    @@ -305,6 +305,7 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
    if (ret < 0)
    break;

    + cond_resched();
    #ifdef CONFIG_DEBUG_PAGEALLOC
    if (debug_pagealloc_enabled() &&
    (paddr >> PAGE_SHIFT) < linear_map_hash_count)
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-12-11 17:22    [W:4.073 / U:0.356 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site