lkml.org 
[lkml]   [2015]   [Aug]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4/4] watchdog: use suspend/resume interface in fixup_ht_bug()
    Date
    Remove watchdog_nmi_disable_all() and watchdog_nmi_enable_all()
    since these functions are no longer needed. If a subsystem has a
    need to deactivate the watchdog temporarily, it should utilize the
    watchdog_suspend() and watchdog_resume() functions.

    Signed-off-by: Ulrich Obergfell <uobergfe@redhat.com>
    ---
    arch/x86/kernel/cpu/perf_event_intel.c | 9 +++++---
    include/linux/watchdog.h | 8 -------
    kernel/watchdog.c | 38 ----------------------------------
    3 files changed, 6 insertions(+), 49 deletions(-)

    diff --git a/arch/x86/kernel/cpu/perf_event_intel.c b/arch/x86/kernel/cpu/perf_event_intel.c
    index b9826a9..d4e1b0c 100644
    --- a/arch/x86/kernel/cpu/perf_event_intel.c
    +++ b/arch/x86/kernel/cpu/perf_event_intel.c
    @@ -12,7 +12,7 @@
    #include <linux/init.h>
    #include <linux/slab.h>
    #include <linux/export.h>
    -#include <linux/watchdog.h>
    +#include <linux/nmi.h>

    #include <asm/cpufeature.h>
    #include <asm/hardirq.h>
    @@ -3368,7 +3368,10 @@ static __init int fixup_ht_bug(void)
    return 0;
    }

    - watchdog_nmi_disable_all();
    + if (watchdog_suspend() != 0) {
    + pr_info("failed to disable PMU erratum BJ122, BV98, HSD29 workaround\n");
    + return 0;
    + }

    x86_pmu.flags &= ~(PMU_FL_EXCL_CNTRS | PMU_FL_EXCL_ENABLED);

    @@ -3376,7 +3379,7 @@ static __init int fixup_ht_bug(void)
    x86_pmu.commit_scheduling = NULL;
    x86_pmu.stop_scheduling = NULL;

    - watchdog_nmi_enable_all();
    + watchdog_resume();

    get_online_cpus();

    diff --git a/include/linux/watchdog.h b/include/linux/watchdog.h
    index f47fead..d74a0e9 100644
    --- a/include/linux/watchdog.h
    +++ b/include/linux/watchdog.h
    @@ -140,12 +140,4 @@ extern int watchdog_init_timeout(struct watchdog_device *wdd,
    extern int watchdog_register_device(struct watchdog_device *);
    extern void watchdog_unregister_device(struct watchdog_device *);

    -#ifdef CONFIG_HARDLOCKUP_DETECTOR
    -void watchdog_nmi_disable_all(void);
    -void watchdog_nmi_enable_all(void);
    -#else
    -static inline void watchdog_nmi_disable_all(void) {}
    -static inline void watchdog_nmi_enable_all(void) {}
    -#endif
    -
    #endif /* ifndef _LINUX_WATCHDOG_H */
    diff --git a/kernel/watchdog.c b/kernel/watchdog.c
    index 3618e93..bf751ef 100644
    --- a/kernel/watchdog.c
    +++ b/kernel/watchdog.c
    @@ -614,47 +614,9 @@ static void watchdog_nmi_disable(unsigned int cpu)
    cpu0_err = 0;
    }
    }
    -
    -void watchdog_nmi_enable_all(void)
    -{
    - int cpu;
    -
    - mutex_lock(&watchdog_proc_mutex);
    -
    - if (!(watchdog_enabled & NMI_WATCHDOG_ENABLED))
    - goto unlock;
    -
    - get_online_cpus();
    - for_each_watchdog_cpu(cpu)
    - watchdog_nmi_enable(cpu);
    - put_online_cpus();
    -
    -unlock:
    - mutex_unlock(&watchdog_proc_mutex);
    -}
    -
    -void watchdog_nmi_disable_all(void)
    -{
    - int cpu;
    -
    - mutex_lock(&watchdog_proc_mutex);
    -
    - if (!watchdog_running)
    - goto unlock;
    -
    - get_online_cpus();
    - for_each_watchdog_cpu(cpu)
    - watchdog_nmi_disable(cpu);
    - put_online_cpus();
    -
    -unlock:
    - mutex_unlock(&watchdog_proc_mutex);
    -}
    #else
    static int watchdog_nmi_enable(unsigned int cpu) { return 0; }
    static void watchdog_nmi_disable(unsigned int cpu) { return; }
    -void watchdog_nmi_enable_all(void) {}
    -void watchdog_nmi_disable_all(void) {}
    #endif /* CONFIG_HARDLOCKUP_DETECTOR */

    static struct smp_hotplug_thread watchdog_threads = {
    --
    1.7.11.7


    \
     
     \ /
      Last update: 2015-08-01 15:01    [W:4.160 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site