I had a similar problem with my Thinkpad Edge 11. It has an Intel i3 and only has the integrated graphics on the CPU.
Using the 2.6.36-24 kernel image the output from the intel_ips module in dmesg was:
Code:
[ 6.864987] intel ips 0000:00:1f.6: Warning: CPU TDP doesn't match expected value (found 11, expected 18)
[ 6.865045] intel ips 0000:00:1f.6: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[ 6.865316] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled
[ 6.916727] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 65535
I found what appears to be a fix to the overall problem but you still get the error on bootup. Run the following:
Removing the intel_ips module and inserting it again with:
Code:
modprobe -r intel_ips
modprobe intel_ips
gave this output from intel_ips in dmesg:
Code:
[ 82.337585] intel ips 0000:00:1f.6: Warning: CPU TDP doesn't match expected value (found 11, expected 18)
[ 82.340231] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 65535
If you care, this is how I found this. It'll involve looking through chunks of C in the kernel source:
The problem was with the intel_ips kernel module, so I got the kernel source, found the code for the module ("find ./ -name intel_ips*" in the root of the kernel source found the file) which was src/linux-2.6.36.2/drivers/platform/x86/intel_ips.c
In there the error from the module could only come from this code:
Code:
if (!ips_get_i915_syms(ips)) {
dev_err(&dev->dev, "failed to get i915 symbols, graphics turbo disabled\n");
And the function it runs starts with
Code:
static bool ips_get_i915_syms(struct ips_driver *ips)
{
ips->read_mch_val = symbol_get(i915_read_mch_val);
And the symbols it gets are in the i915 driver. Unfortunately until that module is loaded into the kernel the IPS driver can't get the i915 symbols and so throws the error. There isn't a dependency set within the intel_ips module for the i915 module so it always gives off an error. I tried changing options in grub to get the i915 module loaded first but the intel_ips module always seems to be loaded first. The only way I found was to wait until linux had fully booted and then remove the module and reload it. Incidentally, this also fixed a problem where the intel_ips module was giving out errors like this:
Code:
[ 67.047376] intel ips 0000:00:1f.6: CPU power or thermal limit exceeded
[ 72.039844] intel ips 0000:00:1f.6: CPU power or thermal limit exceeded
It looks as though not being able to figure out the details of the GPU meant the IPS module meant it couldn't figure out the thermal/power budgets and kept using too much power.
Bookmarks