On Thu, 2010-08-26 at 21:11 -0300, Cesar Eduardo Barros wrote:
> Em 26-08-2010 20:33, Joe Perches escreveu:
> > On Thu, 26 Aug 2010, Cesar Eduardo Barros wrote:
> >> On my Dell Inspiron N4010, one of these messages is printed every five
> >> seconds. Change both to dev_dbg to quieten them even more.
> > I think you should instead fix your hardware or maybe change
> > your thermal throttling settings.

I was probably a bit hasty in writing that.

> Is there a way to know if all this is just an oddness of this model, or 
> if there is something which is not working quite right?
> 
> (All the output above is from 2.6.35.3; I am not running 2.3.36-rc2+ 
> right now because it hangs on resume, and I have not yet had the time to 
> look at it.)

Perhaps you might try this patch and get a bit more information.

It seems a sensible patch and perhaps should be applied anyway.

Signed-off-by: Joe Perches <[email protected]>
---
 drivers/platform/x86/intel_ips.c |   58 +++++++++++++++++++++++++++++--------
 1 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
index 9024480..73f9ad1 100644
--- a/drivers/platform/x86/intel_ips.c
+++ b/drivers/platform/x86/intel_ips.c
@@ -598,17 +598,36 @@ static bool mcp_exceeded(struct ips_driver *ips)
 {
        unsigned long flags;
        bool ret = false;
+       u16 mcp_avg_temp;
+       u16 mcp_temp_limit;
+       u16 mcp_power_limit;
+       u32 cpu_avg_power;
+       u32 mch_avg_power;
 
        spin_lock_irqsave(&ips->turbo_status_lock, flags);
-       if (ips->mcp_avg_temp > (ips->mcp_temp_limit * 100))
-               ret = true;
-       if (ips->cpu_avg_power + ips->mch_avg_power > ips->mcp_power_limit)
-               ret = true;
+
+       mcp_avg_temp = ips->mcp_avg_temp;
+       mcp_temp_limit = ips->mcp_temp_limit;
+       mcp_power_limit = ips->mcp_power_limit;
+       cpu_avg_power = ips->cpu_avg_power;
+       mch_avg_power = ips->mch_avg_power;
+
        spin_unlock_irqrestore(&ips->turbo_status_lock, flags);
 
-       if (ret)
+       if ((cpu_avg_power + mch_avg_power) > mcp_power_limit) {
                dev_info(&ips->dev->dev,
-                        "MCP power or thermal limit exceeded\n");
+                        "MCP power limit %d exceeded: %d\n",
+                        mcp_power_limit,
+                        cpu_avg_power + mch_avg_power);
+               ret = true;
+       }
+       if (mcp_avg_temp > (mcp_temp_limit * 100)) {
+               dev_info(&ips->dev->dev,
+                        "MCP thermal limit %d exceeded: %d\n",
+                        mcp_temp_limit * 100,
+                        mcp_avg_temp);
+               ret = true;
+       }
 
        return ret;
 }
@@ -623,20 +642,33 @@ static bool mcp_exceeded(struct ips_driver *ips)
 static bool cpu_exceeded(struct ips_driver *ips, int cpu)
 {
        unsigned long flags;
-       int avg;
        bool ret = false;
+       int avg;
+       int core_temp_limit;
+       u16 core_power_limit;
+       u32 cpu_avg_power;
 
        spin_lock_irqsave(&ips->turbo_status_lock, flags);
+
        avg = cpu ? ips->ctv2_avg_temp : ips->ctv1_avg_temp;
-       if (avg > (ips->limits->core_temp_limit * 100))
-               ret = true;
-       if (ips->cpu_avg_power > ips->core_power_limit * 100)
-               ret = true;
+       core_temp_limit = ips->limits->core_temp_limit;
+       core_power_limit = ips->core_power_limit;
+       cpu_avg_power = ips->cpu_avg_power;
+
        spin_unlock_irqrestore(&ips->turbo_status_lock, flags);
 
-       if (ret)
+       if (cpu_avg_power > (core_power_limit * 100)) {
+               dev_info(&ips->dev->dev,
+                        "CPU power limit %d exceeded: %d\n",
+                        cpu_avg_power, core_power_limit * 100);
+               ret = true;
+       }
+       if (avg > (core_temp_limit * 100)) {
                dev_info(&ips->dev->dev,
-                        "CPU power or thermal limit exceeded\n");
+                        "CPU thermal limit %d exceeded: %d\n",
+                        core_temp_limit * 100, avg);
+               ret = true;
+       }
 
        return ret;
 }


--
To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" 
in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to