lkml.org 
[lkml]   [2009]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] x86, mce: therm_throt - change when we print messages
    My Latitude d630 seems to be handling thermal events in SMI by lowering
    the max frequency of the CPU till it cools down but still leaks the
    "everything is normal" events. Adjust therm_throt driver to only print
    messages about the fact that temperatire returned back to normal when
    leaving the throttling state.

    Also lower the severity of "back to normal" message from KERN_CRIT to
    KERN_INFO.

    Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
    ---

    arch/x86/kernel/cpu/mcheck/therm_throt.c | 18 +++++++++++-------
    1 files changed, 11 insertions(+), 7 deletions(-)


    diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
    index bff8dd1..8bc64cf 100644
    --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
    +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
    @@ -36,6 +36,7 @@

    static DEFINE_PER_CPU(__u64, next_check) = INITIAL_JIFFIES;
    static DEFINE_PER_CPU(unsigned long, thermal_throttle_count);
    +static DEFINE_PER_CPU(bool, thermal_throttle_active);

    static atomic_t therm_throt_en = ATOMIC_INIT(0);

    @@ -96,24 +97,27 @@ static int therm_throt_process(int curr)
    {
    unsigned int cpu = smp_processor_id();
    __u64 tmp_jiffs = get_jiffies_64();
    + bool was_throttled = __get_cpu_var(thermal_throttle_active);
    + bool is_throttled = __get_cpu_var(thermal_throttle_active) = curr;

    - if (curr)
    + if (is_throttled)
    __get_cpu_var(thermal_throttle_count)++;

    - if (time_before64(tmp_jiffs, __get_cpu_var(next_check)))
    + if (!(was_throttled ^ is_throttled) &&
    + time_before64(tmp_jiffs, __get_cpu_var(next_check)))
    return 0;

    __get_cpu_var(next_check) = tmp_jiffs + CHECK_INTERVAL;

    /* if we just entered the thermal event */
    - if (curr) {
    + if (is_throttled) {
    printk(KERN_CRIT "CPU%d: Temperature above threshold, "
    - "cpu clock throttled (total events = %lu)\n", cpu,
    - __get_cpu_var(thermal_throttle_count));
    + "cpu clock throttled (total events = %lu)\n",
    + cpu, __get_cpu_var(thermal_throttle_count));

    add_taint(TAINT_MACHINE_CHECK);
    - } else {
    - printk(KERN_CRIT "CPU%d: Temperature/speed normal\n", cpu);
    + } else if (was_throttled) {
    + printk(KERN_INFO "CPU%d: Temperature/speed normal\n", cpu);
    }

    return 1;
    --
    Dmitry

    \
     
     \ /
      Last update: 2009-08-10 06:47    [W:6.647 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site