lkml.org 
[lkml]   [2020]   [Jan]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 033/103] x86/resctrl: Fix an imbalance in domain_remove_cpu()
    Date
    From: Qian Cai <cai@lca.pw>

    commit e278af89f1ba0a9ef20947db6afc2c9afa37e85b upstream.

    A system that supports resource monitoring may have multiple resources
    while not all of these resources are capable of monitoring. Monitoring
    related state is initialized only for resources that are capable of
    monitoring and correspondingly this state should subsequently only be
    removed from these resources that are capable of monitoring.

    domain_add_cpu() calls domain_setup_mon_state() only when r->mon_capable
    is true where it will initialize d->mbm_over. However,
    domain_remove_cpu() calls cancel_delayed_work(&d->mbm_over) without
    checking r->mon_capable resulting in an attempt to cancel d->mbm_over on
    all resources, even those that never initialized d->mbm_over because
    they are not capable of monitoring. Hence, it triggers a debugobjects
    warning when offlining CPUs because those timer debugobjects are never
    initialized:

    ODEBUG: assert_init not available (active state 0) object type:
    timer_list hint: 0x0
    WARNING: CPU: 143 PID: 789 at lib/debugobjects.c:484
    debug_print_object
    Hardware name: HP Synergy 680 Gen9/Synergy 680 Gen9 Compute Module, BIOS I40 05/23/2018
    RIP: 0010:debug_print_object
    Call Trace:
    debug_object_assert_init
    del_timer
    try_to_grab_pending
    cancel_delayed_work
    resctrl_offline_cpu
    cpuhp_invoke_callback
    cpuhp_thread_fun
    smpboot_thread_fn
    kthread
    ret_from_fork

    Fixes: e33026831bdb ("x86/intel_rdt/mbm: Handle counter overflow")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Acked-by: Reinette Chatre <reinette.chatre@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: john.stultz@linaro.org
    Cc: sboyd@kernel.org
    Cc: <stable@vger.kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: tj@kernel.org
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Vikas Shivappa <vikas.shivappa@linux.intel.com>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20191211033042.2188-1-cai@lca.pw
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/x86/kernel/cpu/intel_rdt.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/arch/x86/kernel/cpu/intel_rdt.c
    +++ b/arch/x86/kernel/cpu/intel_rdt.c
    @@ -595,7 +595,7 @@ static void domain_remove_cpu(int cpu, s
    if (static_branch_unlikely(&rdt_mon_enable_key))
    rmdir_mondata_subdir_allrdtgrp(r, d->id);
    list_del(&d->list);
    - if (is_mbm_enabled())
    + if (r->mon_capable && is_mbm_enabled())
    cancel_delayed_work(&d->mbm_over);
    if (is_llc_occupancy_enabled() && has_busy_rmid(r, d)) {
    /*

    \
     
     \ /
      Last update: 2020-01-22 10:41    [W:3.068 / U:0.344 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site