Bug 25542

Summary: high cpu load using the acpi module on thinkpad l512
Product: ACPI Reporter: Scott (outrageousfury)
Component: Power-ProcessorAssignee: acpi_power-processor
Status: CLOSED PATCH_ALREADY_AVAILABLE    
Severity: high CC: acpi-bugzilla, lenb, rui.zhang
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.32-5-686(debian), 2.6.36.2(kernel.org) Subsystem:
Regression: No Bisected commit-id:

Description Scott 2010-12-23 10:45:00 UTC
With my new laptop a thinkpad L512 which has a Intel i915 GPU and i5 430 CPU, I'm getting extreme high loads while idling. According to powertop the most wakeups are:

hrtimer-start-range-ns (tick-sched-timer).

The only cure for this is to boot using: acpi=off. I already tried nolapic, acpi=noirq and noapic, but none of them fix it.

I also tried it with and without the thinkpad_acpi module, but that did not make any change. Tested on 2.6.32-5-686(debian) and a self tailored 2.6.36.2(kernel.org) kernel.
Comment 1 Zhang Rui 2010-12-27 02:34:42 UTC
please attach the output of powertop, "cat /proc/interrupts", "grep . /sys/firmware/acpi/interrupts/*"
Comment 2 Scott 2010-12-27 09:33:40 UTC
Powertop:
-------------------------------------------------------------------------------

Cn                Avg residency       P-states (frequencies)
C0 (cpu running)        ( 1.6%)         2.54 Ghz     0.0%
polling           1.9ms ( 0.0%)         2.54 Ghz     0.0%
C1 mwait          1.5ms ( 5.4%)         2.40 Ghz     0.0%
C3 mwait         15.4ms (93.0%)         2.27 Ghz     0.0%
                                        1199 Mhz   100.0%

Wakeups-from-idle per second : 95.8     interval: 5.0s
no ACPI power usage estimate available

Top causes for wakeups:
  55.4% ( 88.8)     <kernel core> : hrtimer_start_range_ns (tick_sched_timer) 
  17.3% ( 27.8)       <interrupt> : i915 
  14.5% ( 23.2)       <interrupt> : acpi 
   3.6% (  5.8)     <kernel core> : hrtimer_start (tick_sched_timer)
   2.5% (  4.0)        autocutsel : hrtimer_start_range_ns (hrtimer_wakeup)
   1.1% (  1.8)     <kernel core> : clocksource_watchdog (clocksource_watchdog)
   0.7% (  1.2)       <interrupt> : PS/2 keyboard/mouse/touchpad
   0.7% (  1.2)              Xorg : mod_timer (i915_hangcheck_elapsed)
   0.6% (  1.0)             sleep : hrtimer_start_range_ns (hrtimer_wakeup)
   0.6% (  1.0)     <kernel core> : enqueue_task_rt (sched_rt_period_timer)
   0.6% (  1.0)              Xorg : mod_timer (intel_gpu_idle_timer)
   0.6% (  1.0)              ntpd : hrtimer_start_range_ns (posix_timer_fn)
   0.5% (  0.8)              Xorg : queue_delayed_work (delayed_work_timer_fn)
   0.2% (  0.4)             urxvt : schedule_timeout (process_timeout)
   0.2% (  0.4)              Xorg : hrtimer_start_range_ns (hrtimer_wakeup)
   0.2% (  0.4)              Xorg : mod_timer (intel_crtc_idle_timer)
   0.1% (  0.2)       <interrupt> : eth0
   0.1% (  0.2)              init : hrtimer_start_range_ns (hrtimer_wakeup)
   0.1% (  0.2)               awk : schedule_timeout (process_timeout)

-------------------------------------------------------------------------------

cat /proc/interrupts

-------------------------------------------------------------------------------
            CPU0       CPU1       CPU2       CPU3       
   0:         47          0          0          0   IO-APIC-edge      timer
   1:         70         74         76         74   IO-APIC-edge      i8042
   8:          0          0          0          1   IO-APIC-edge      rtc0
   9:        539        535        517        529   IO-APIC-fasteoi   acpi
  12:        239        236        237        235   IO-APIC-edge      i8042
  16:          7          6          6          7   IO-APIC-fasteoi   ehci_hcd:usb1, mmc0, jmb38x_ms:slot0
  22:         45         43         45         43   IO-APIC-fasteoi   HDA Intel
  23:         16         14         15         16   IO-APIC-fasteoi   ehci_hcd:usb2
  24:          0          0          0          0  HPET_MSI-edge      hpet2
  25:          0          0          0          0  HPET_MSI-edge      hpet3
  26:          0          0          0          0  HPET_MSI-edge      hpet4
  27:          0          0          0          0  HPET_MSI-edge      hpet5
  34:         25         18         20         24   PCI-MSI-edge      eth0
  35:        648        662        665        650   PCI-MSI-edge      ahci
  36:        865        865        872        875   PCI-MSI-edge      i915
 NMI:          0          0          0          0   Non-maskable interrupts
 LOC:       5643       5080       4769       4948   Local timer interrupts
 SPU:          0          0          0          0   Spurious interrupts
 PMI:          0          0          0          0   Performance monitoring interrupts
 PND:          0          0          0          0   Performance pending work
 RES:         86         70        112         67   Rescheduling interrupts
 CAL:         27         41         29         39   Function call interrupts
 TLB:        212        369        574        703   TLB shootdowns
 TRM:          0          0          0          0   Thermal event interrupts
 THR:          0          0          0          0   Threshold APIC interrupts
 MCE:          0          0          0          0   Machine check exceptions
 MCP:          2          2          2          2   Machine check polls
 ERR:          0
 MIS:          0

-------------------------------------------------------------------------------

grep. /sys/firmware/acpi/interrupts/*:

-------------------------------------------------------------------------------

/sys/firmware/acpi/interrupts/error:       0
/sys/firmware/acpi/interrupts/ff_gbl_lock:       0	enabled
/sys/firmware/acpi/interrupts/ff_pmtimer:       0	invalid
/sys/firmware/acpi/interrupts/ff_pwr_btn:       0	enabled
/sys/firmware/acpi/interrupts/ff_rt_clk:       0	disabled
/sys/firmware/acpi/interrupts/ff_slp_btn:       0	invalid
/sys/firmware/acpi/interrupts/gpe00:       0	invalid
/sys/firmware/acpi/interrupts/gpe01:       1	enabled
/sys/firmware/acpi/interrupts/gpe02:      15	enabled
/sys/firmware/acpi/interrupts/gpe03:       0	disabled
/sys/firmware/acpi/interrupts/gpe04:       0	disabled
/sys/firmware/acpi/interrupts/gpe05:       0	disabled
/sys/firmware/acpi/interrupts/gpe06:       0	enabled
/sys/firmware/acpi/interrupts/gpe07:       0	enabled
/sys/firmware/acpi/interrupts/gpe08:       0	invalid
/sys/firmware/acpi/interrupts/gpe09:       0	disabled
/sys/firmware/acpi/interrupts/gpe0A:       0	invalid
/sys/firmware/acpi/interrupts/gpe0B:       0	disabled
/sys/firmware/acpi/interrupts/gpe0C:       0	disabled
/sys/firmware/acpi/interrupts/gpe0D:       0	disabled
/sys/firmware/acpi/interrupts/gpe0E:       0	disabled
/sys/firmware/acpi/interrupts/gpe0F:       0	invalid
/sys/firmware/acpi/interrupts/gpe10:       0	invalid
/sys/firmware/acpi/interrupts/gpe11:       0	invalid
/sys/firmware/acpi/interrupts/gpe12:       0	invalid
/sys/firmware/acpi/interrupts/gpe13:       0	invalid
/sys/firmware/acpi/interrupts/gpe14:       0	invalid
/sys/firmware/acpi/interrupts/gpe15:       0	enabled
/sys/firmware/acpi/interrupts/gpe16:    2541	enabled
/sys/firmware/acpi/interrupts/gpe17:       0	invalid
/sys/firmware/acpi/interrupts/gpe18:       0	invalid
/sys/firmware/acpi/interrupts/gpe19:       0	invalid
/sys/firmware/acpi/interrupts/gpe1A:       0	invalid
/sys/firmware/acpi/interrupts/gpe1B:       0	invalid
/sys/firmware/acpi/interrupts/gpe1C:       0	invalid
/sys/firmware/acpi/interrupts/gpe1D:       0	enabled
/sys/firmware/acpi/interrupts/gpe1E:       0	invalid
/sys/firmware/acpi/interrupts/gpe1F:       0	invalid
/sys/firmware/acpi/interrupts/gpe20:       0	disabled
/sys/firmware/acpi/interrupts/gpe21:       0	invalid
/sys/firmware/acpi/interrupts/gpe22:       0	invalid
/sys/firmware/acpi/interrupts/gpe23:       0	invalid
/sys/firmware/acpi/interrupts/gpe24:       0	invalid
/sys/firmware/acpi/interrupts/gpe25:       0	disabled
/sys/firmware/acpi/interrupts/gpe26:       0	invalid
/sys/firmware/acpi/interrupts/gpe27:       0	invalid
/sys/firmware/acpi/interrupts/gpe28:       0	invalid
/sys/firmware/acpi/interrupts/gpe29:       0	invalid
/sys/firmware/acpi/interrupts/gpe2A:       0	invalid
/sys/firmware/acpi/interrupts/gpe2B:       0	invalid
/sys/firmware/acpi/interrupts/gpe2C:       0	invalid
/sys/firmware/acpi/interrupts/gpe2D:       0	invalid
/sys/firmware/acpi/interrupts/gpe2E:       0	invalid
/sys/firmware/acpi/interrupts/gpe2F:       0	invalid
/sys/firmware/acpi/interrupts/gpe30:       0	invalid
/sys/firmware/acpi/interrupts/gpe31:       0	invalid
/sys/firmware/acpi/interrupts/gpe32:       0	invalid
/sys/firmware/acpi/interrupts/gpe33:       0	invalid
/sys/firmware/acpi/interrupts/gpe34:       0	invalid
/sys/firmware/acpi/interrupts/gpe35:       0	invalid
/sys/firmware/acpi/interrupts/gpe36:       0	invalid
/sys/firmware/acpi/interrupts/gpe37:       0	invalid
/sys/firmware/acpi/interrupts/gpe38:       0	invalid
/sys/firmware/acpi/interrupts/gpe39:       0	invalid
/sys/firmware/acpi/interrupts/gpe3A:       0	invalid
/sys/firmware/acpi/interrupts/gpe3B:       0	invalid
/sys/firmware/acpi/interrupts/gpe3C:       0	invalid
/sys/firmware/acpi/interrupts/gpe3D:       0	invalid
/sys/firmware/acpi/interrupts/gpe3E:       0	invalid
/sys/firmware/acpi/interrupts/gpe3F:       0	invalid
/sys/firmware/acpi/interrupts/gpe_all:    2557
/sys/firmware/acpi/interrupts/sci:    2556
/sys/firmware/acpi/interrupts/sci_not:       1

-------------------------------------------------------------------------------
Comment 3 Scott 2010-12-27 10:48:47 UTC
Oops, sorry for not attaching them.
Comment 4 Len Brown 2010-12-28 00:04:11 UTC
is the interrupt info above from 2.6.32, or from 2.6.36?

do you see the same when you run the latest linus git tree?
Comment 5 Scott 2010-12-28 10:36:44 UTC
yep, and a simple "sleep 10" makes a load of 0.06.
Comment 6 Scott 2010-12-28 12:29:49 UTC
hm it does seem to be better in the git tree, it does drop to 0.0 after a while.
Comment 7 Scott 2010-12-28 12:30:13 UTC
That interrupt info was on 2.6.32.  it does seem to be better in the git tree, it does drop to 0.0 after a while.
Comment 8 Zhang Rui 2010-12-29 01:22:18 UTC
so you mean the high cpu load problem is gone in git tree, right?
if yes, it seems that we can close this bug as the problem has already been fixed.
Comment 9 Scott 2010-12-29 09:11:40 UTC
Yep, everyone thanks a lot for helping:)!