lkml.org 
[lkml]   [2021]   [Sep]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 2/4] kernel/watchdog_hld: clarify the condition in hardlockup_detector_event_create()
    Date
    As for the context, there are two arguments to change
    debug_smp_processor_id() to is_percpu_thread().

    -1. watchdog_ev is percpu, and migration will frustrate the attempt
    which try to bind a watchdog_ev to a cpu by protecting this func inside
    the pair of preempt_disable()/preempt_enable().

    -2. hardlockup_detector_event_create() indirectly calls
    kmem_cache_alloc_node(), which is blockable.

    So here, spelling out the really planned context "is_percpu_thread()".

    Signed-off-by: Pingfan Liu <kernelfans@gmail.com>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Wang Qing <wangqing@vivo.com>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Santosh Sivaraj <santosh@fossix.org>
    Cc: linux-arm-kernel@lists.infradead.org
    To: linux-kernel@vger.kernel.org
    ---
    kernel/watchdog_hld.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c
    index 247bf0b1582c..df010df76576 100644
    --- a/kernel/watchdog_hld.c
    +++ b/kernel/watchdog_hld.c
    @@ -165,10 +165,13 @@ static void watchdog_overflow_callback(struct perf_event *event,

    static int hardlockup_detector_event_create(void)
    {
    - unsigned int cpu = smp_processor_id();
    + unsigned int cpu;
    struct perf_event_attr *wd_attr;
    struct perf_event *evt;

    + /* This function plans to execute in cpu bound kthread */
    + WARN_ON(!is_percpu_thread());
    + cpu = raw_smp_processor_id();
    wd_attr = &wd_hw_attr;
    wd_attr->sample_period = hw_nmi_get_sample_period(watchdog_thresh);

    --
    2.31.1
    \
     
     \ /
      Last update: 2021-09-23 16:11    [W:2.846 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site